• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Автоматический запуск отчета в 1С УТ (по расписанию)

  • Автор темы Автор темы Exo
  • Дата начала Дата начала
E

Exo

Доброго времени суток, вопрос к знатокам.

Бизнес требует организации в 1С УТ (8.0.17.25) автоматического формирования отчета в определенное время и день.
Скажите, возможно ли такое и если да, каким средством этого можно достичь.

Возможно, существуют какие-то утилиты (программы) для этого, ибо не хотелось бы напрягать администратора нашей 1С решением этой проблемы, очень занятой человек.

Может ли простой пользователь справиться с этой задачей?
 
Могу сказать за 7.7 (а в 8 думаю тем более): можно... сам недавно делал такой автоотчет.... :(

все зависит от того куда он должен потом деваться (мож сразу в файл запихивать), скольким пользователям он нужен...
 
сделать автоотчет теоретически можно. а вот насчет может ли его сделать простой пользователь - думаю что ответ отрицательный
 
Самый простой путь - через Task Shelduer - Задаешь заход в 1с под конкретным пользователем в конкретное время , в процедуре ПриНачалеРаботыСистемы() пишешь вызов процедуры отчета под условием захода этого пользователя, в процедуре отчета дописываешь кусок для создания и отправки итогового файла по мылу. Ой - просмотрел, это как в 7.7 реализовалось, в восьмерке можно сделать так-же, насчет внутренних настроек для такого - не знаю.
 
puh14, скажи плиз, а как сделать так чтобы можно было передавать параметр? Т.е. нужно чтобы по расписанию запускалась прога (по идее через bat файл можно прописать запуск проги и базы и юзверя и кинуть в шедулер), выполнялся отчет и потом все закрывалось. причем желательно так чтобы можно было передать проге какой-то параметр - написать к примеру в файл текстовый.
Буду благодарен за подобную инфу! 1C 7.7 буха
 
Программа 1с имеет следующие параметры:
1cv7.exe MODE [ /M | /D | /U | /N | /P ],

где MODE - режим запуска, может принимать только одно из трех значений:

config - режим конфигуратора;

debug - режим отладчика;

enterprise - нормальный (рабочий) режим 1С.



Режим enterprise можно применять со следующими ключами:

/M - запуск программы в монопольном режиме;

/D - каталог базы данных;

/U - рабочий каталог пользователя (каталог из списка пользователей игнорируется);

/N - имя пользователя;

/P - пароль пользователя;

/T<путь> - путь к временным файлам

/@<ИмяФайла> - для режима конфигуратора с указанием файла пакетного запуска

/W - инициализация Web расширения

Пример:



@echo off
Set pr=”C:\Program Files\1Cv77\BIN\” //путь к программе
Set db=”D:\archive\2SBDB\” //путь к базе


cd %pr% //переход в папку программы

start 1cv7s.exe config /D%db% /NUser1 /PPass1



//запуск конфигуратора для пользователя User1 с паролем Pass1



P.S. команда start используется для того, чтобы не выводилось черное окошко командной строки windows.

Если заменить последнюю команду на:

start 1cv7s.exe enterprise /D%db% /NUser1 /PPass1
то будет выполнен простой запуск программы 1с.

взял с

в процедуре ПриНачалеРаботыСистемы() прописываешь условие

Если ИмяПользователя() = "Отчет" Тогда
СформироватьОтчет();
КонецЕсли;

а насчет текстового файла.... - как видишь параметра для передачи какого-то файла в командах нету... Проще наклепать разных пользователей 1с, либо прописать это в процедуре СФормироватьОтчет(), либо запускать из под разных пользователей системы(задается в TAskShelduer). как имя пользователей системы вытаскивается к сожалению не помню ;-(

А под конец вызываешь ЗавершитьРаботуСистемы();
 
Проще наклепать разных пользователей 1с, либо прописать это в процедуре СФормироватьОтчет(), либо запускать из под разных пользователей системы(задается в TAskShelduer)
не понял что ты имеешь ввиду под этим...
 
Когда запускаешь файло из taskShelduer он просит сказать из-под какого ПОЛЬЗОВАТЕЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ надо запустить файл. Когда программа запущена ( например с ПОЛЬЗОВАТЕЛЕМ 1С "отчет") - через ИмяПользователя() ты вытаскиваешь ПОЛЬЗОВАТЕЛЯ 1С, каким-то образом ты можешь вытащить и ПОЛЬЗОВАТЕЛЯ ОПЕРАЦИОННОЙ СИСТЕМЫ, от имени которого был запущен батник в taskshelduer
 
ну ясно. я так понял СформироватьОтчет() - пишеться ручками. как мне записать туда вызов внешней обработки + заполнить ее параметрами, которые я могу взять из констант, а также как именнно выполнит эту внешнюю обработку?
 
Можешь СформироватьОтчет() в глобальнике записать, можешь внешнюю. Если внешнюю пишешь ОТкрытьФорму(), передаешь в неё контекст (константы, пользователь), там в ПриОТкрытии() выполняешь нужные действия, пишешь результат в файл отправляешь по мылу через dll и ЗавершитьРаботуСистемы()
 
а как получить эту внешнюю обработку - где и как указать в ней путь и параметры для запуска? Просто для нескольких баз нада - решили во внешеней чтобы глобальный не засорять...
 
Могу только в семерке подсказать. Прмерно так :

Процедура Материалка()
ИмяФайла = КаталогИБ() + "\extforms\материалка.ert";
открытьФорму("Отчет",Тз,ИмяФайла); // ТЗ - это таблица значений, передающаяся в обработку
КонецПРоцедуры

в внешней обработке

Процедура приОткрытии()// а вот тут собсно пишешь формирование отчета
Если ПустоеЗначение (Форма.Параметр) = 0 ТОгда
Док = Форма.Параметр;
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.НайтиЭлемент(Док.Товар);
Сообщить(Док.Товар);
ВыбТовар.ДобавитьЗначение(Док.ТОвар);
КонецЦикла;
КонецЕсли;

КонецПроцедуры
 
спасибо большое! ща буду маньячить. если еще будут вопросы - напишу. лови пока свой плюс, бэтмэн)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD