Automation: различия между версиями
Kovalskiy (обсуждение | вклад) Нет описания правки |
Kovalskiy (обсуждение | вклад) Нет описания правки |
||
Строка 61: | Строка 61: | ||
Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание. | Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание. | ||
[[Файл:ПримерЗаданияДляРобота.png|слева|мини|924x924пкс]] | [[Файл:ПримерЗаданияДляРобота.png|слева|мини|924x924пкс]] | ||
После, выполнится регламентное задание для этой сроки. | |||
== Описание кода обработки == | |||
Код модуля объекта обработки <!-- Функция СведенияОВнешнейОбработке() Экспорт | |||
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(); | |||
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка(); | |||
ПараметрыРегистрации.Наименование = "Пример использования автоматизации"; | |||
ПараметрыРегистрации.Информация = "Пример использования автоматизации"; | |||
ПараметрыРегистрации.Версия = "1.0"; | |||
ПараметрыРегистрации.БезопасныйРежим = Ложь; | |||
ПараметрыРегистрации.ВерсияБСП = "1.2.1.4"; | |||
Команда = ПараметрыРегистрации.Команды.Добавить(); | |||
Команда.Представление = НСтр("ru = 'Выполнить задание по триггеру'"); | |||
Команда.Идентификатор = "Триггер"; | |||
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); | |||
Команда = ПараметрыРегистрации.Команды.Добавить(); | |||
Команда.Представление = НСтр("ru = 'Выполнить задание по расписанию'"); | |||
Команда.Идентификатор = "ПоРасписанию"; | |||
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода(); | |||
Возврат ПараметрыРегистрации; | |||
КонецФункции | |||
Функция ВыполнитьКоманду(ИдентификаторКоманды, ДополнительныеПараметры) Экспорт | |||
Если ИдентификаторКоманды = "Триггер" Тогда | |||
ВыполнитьЗадание(ДополнительныеПараметры); | |||
ИначеЕсли ИдентификаторКоманды = "ПоРасписанию" Тогда | |||
ВыполнитьЗадание(ДополнительныеПараметры); | |||
КонецЕсли; | |||
КонецФункции | |||
Процедура ВыполнитьЗадание(ДополнительныеПараметры) | |||
Автоматизая = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.АвтоматизацияСсылка; | |||
Если Автоматизая.ТипАвтоматизации = 1 Тогда | |||
ЗаписьЖурналаРегистрации("Выполнена атоматизация по расписанию.", УровеньЖурналаРегистрации.Предупреждение); | |||
Иначе | |||
ОбъектСсылка = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка; | |||
ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина); | |||
ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь); | |||
ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь); | |||
ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу."); | |||
ЗаписьЖурналаРегистрации("Выполнена атоматизация по триггеру для " + Строка(ОбъектСсылка), УровеньЖурналаРегистрации.Предупреждение, ОбъектСсылка); | |||
КонецЕсли; | |||
КонецПроцедуры --> | |||
Функции "СведенияОВнешнейОбработке" и "ВыполнитьКоманду" являются стандартными из БСП. | |||
В процедуре "ВыполнитьЗадание" описаны 2 варианта: для автоматизации по расписанию и по триггеру. | |||
Через "''ДополнительныеПараметры.ДополнительныеПараметрыЗапуска''" можно получить передаваемые параметры из внешней обработке. | |||
Если тип автоматизации "по триггеру" будет доступна ссылка на объект, для которого сработал триггер ''ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка.'' | |||
'''Важно: задания по триггеру выполняются через регистр сведений "Задания для робота".''' | |||
Если выполняется задача по триггеру, важно вернуть результат выполнения процедуры. | |||
''ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);'' | |||
''ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);'' | |||
''ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);'' | |||
''ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");'' | |||
Если указать ''ВыполнитьПослеОшибкиПовторно = Истина,'' задание повториться и будет произведена еще одна попытка выполнить его. | |||
Таким образом можно отрабатывать все исключения и ошибки и в зависимости от типа такой ошибки прерывать задачу. | |||
[[Файл:ПримерКодаОбработкиАвтоматизации.png|слева|мини|1077x1077пкс|Описание кода]] |
Версия от 14:10, 27 июля 2022
Актуально для версии > 2.0.8.10.
Для настройки автоматизации необходимо перейти в "Администрирование" -> "Автоматизация.
Откроется окно списка автоматизаций.
Структура элементов
Состояние - включает/выключает автоматизацию.
Склад - дополнительный параметр (фильтр) с ссылкой на справочник "Склады";
Контрагент - дополнительный параметр (фильтр) с ссылкой на справочник "Контрагент ";
Обработка - внешняя обработка справочника "Дополнительные отчеты и обработки";
Команда - список зарегистрированных команд в обработке;
Тип автоматизации - логика работы автоматизации;
Комментарий - дополнительное инфо поле;
Объект - объект отслеживания (документ, справочник и т.д.);
Отслеживать - что отслеживаем: реквизит или ТЧ;
Реквизит - реквизит отслеживания;
Значение - значение реквизита;
Дополнительные параметры - таблица значение пары Ключ + Значение (можно получать в коде при срабатывании автоматизации);
Пример автоматизации по триггеру:
В "Объект" указываем справочник "ЕУЗ" (Номенклатура).
В "Контрагент" указываем "Йолка".
В "Реквизит" указываем реквизит отслеживания "Класс".
Установим флаг "Отслеживать точное значение".
В "Значение" установим элемент справочника "Класс".
Теперь, при записи элемента справочника "ЕУЗ" будет проверяться владелец (Контрагент = Йолка), измялось ли значение реквизита "Класс" на "Класс А".
Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание.
После, выполнится регламентное задание для этой сроки.
Описание кода обработки
Код модуля объекта обработки
Функции "СведенияОВнешнейОбработке" и "ВыполнитьКоманду" являются стандартными из БСП.
В процедуре "ВыполнитьЗадание" описаны 2 варианта: для автоматизации по расписанию и по триггеру.
Через "ДополнительныеПараметры.ДополнительныеПараметрыЗапуска" можно получить передаваемые параметры из внешней обработке.
Если тип автоматизации "по триггеру" будет доступна ссылка на объект, для которого сработал триггер ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка.
Важно: задания по триггеру выполняются через регистр сведений "Задания для робота".
Если выполняется задача по триггеру, важно вернуть результат выполнения процедуры.
ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);
ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);
ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);
ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");
Если указать ВыполнитьПослеОшибкиПовторно = Истина, задание повториться и будет произведена еще одна попытка выполнить его.
Таким образом можно отрабатывать все исключения и ошибки и в зависимости от типа такой ошибки прерывать задачу.