Automation: различия между версиями
Материал из Yolka WMS | wiki
Kovalskiy (обсуждение | вклад) Нет описания правки |
Gaivan (обсуждение | вклад) (Gaivan изменил модель содержимого страницы Автоматизация с «вики-текст» на «CSS») Метка: изменение модели содержимого |
Версия от 08:54, 16 марта 2023
'''Актуально для версии > 2.0.8.10.''' Для настройки автоматизации необходимо перейти в "Администрирование" -> "Автоматизация. Откроется окно списка автоматизаций. [[Файл:Auto main.png|слева|мини|1033x1033пкс]] == Структура элементов == [[Файл:АвтоматизацияПоРасписанию.png|мини|516x516пкс|Пример по расписанию]] '''Состояние''' - включает/выключает автоматизацию. '''Склад''' - дополнительный параметр (фильтр) с ссылкой на справочник "Склады"; '''Контрагент''' - дополнительный параметр (фильтр) с ссылкой на справочник "Контрагент "; '''Обработка''' - внешняя обработка справочника "Дополнительные отчеты и обработки"; '''Команда''' - список зарегистрированных команд в обработке; '''Тип''' '''автоматизации''' - логика работы автоматизации; '''Комментарий''' - дополнительное инфо поле; '''Объект''' - объект отслеживания (документ, справочник и т.д.); '''Отслеживать''' - что отслеживаем: реквизит или ТЧ; '''Реквизит''' - реквизит отслеживания; '''Значение''' - значение реквизита; '''Дополнительные параметры''' - таблица значение пары Ключ + Значение (можно получать в коде при срабатывании автоматизации); == Пример автоматизации по триггеру == [[Файл:АвтоматизацияПоРасписанию .png|мини|237x237px|Пример по расписанию]] В "Объект" указываем справочник "ЕУЗ" (Номенклатура). В "Контрагент" указываем "Йолка". В "Реквизит" указываем реквизит отслеживания "Класс". Установим флаг "Отслеживать точное значение". В "Значение" установим элемент справочника "Класс". Теперь, при записи элемента справочника "ЕУЗ" будет проверяться владелец (Контрагент = Йолка), измялось ли значение реквизита "Класс" на "Класс А". Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание. [[Файл:ПримерЗаданияДляРобота.png|мини|Пример строки задания|600x600пкс]] После, выполнится регламентное задание для этой сроки. == Описание кода обработки == Функции "<code>СведенияОВнешнейОбработке</code>" и "<code>ВыполнитьКоманду</code>" являются стандартными из БСП. В процедуре "<code>ВыполнитьЗадание</code>" описаны 2 варианта: для автоматизации по расписанию и по триггеру. Через "''<code>ДополнительныеПараметры.ДополнительныеПараметрыЗапуска</code>''" можно получить передаваемые параметры из внешней обработке. Дополнительные параметры доступны только при указании параметра <code>ПараметрыРегистрации.ВерсияБСП = "1.2.1.4"</code> или больше. '''Важно: чтобы отслеживать объекты, необходимо включить "Версионирование" для этого объекта". Подсистема "Версионирование" (доступна с ролью "Полные права").''' Если тип автоматизации "по триггеру", будет доступна ссылка на объект, для которого сработал триггер ''ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка.'' '''Важно: задания по триггеру выполняются через регистр сведений "Задания для робота".''' Если выполняется задача по триггеру, важно вернуть результат выполнения процедуры. ''<code>ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);</code>'' ''<code>ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);</code>'' ''<code>ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);</code>'' ''<code>ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");</code>'' Если указать ''<code>ВыполнитьПослеОшибкиПовторно = Истина</code>,'' задание повториться и будет произведена еще одна попытка выполнить его. Для удаления задания, достаточно указать ''<code>ДополнительныеПараметры.РезультатВыполнения.Вставить("УдалитьЗадание", Истина);</code>'' Таким образом можно отрабатывать все исключения и ошибки и в зависимости от типа такой ошибки прерывать задачу. [[Файл:E code.png|слева|мини|1077x1077пкс]] Пример кода <code>Функция СведенияОВнешнейОбработке() Экспорт</code> <code>ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();</code> <code>ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();</code> <code>ПараметрыРегистрации.Наименование = "Пример использования автоматизации";</code> <code>ПараметрыРегистрации.Информация = "Пример использования автоматизации";</code> <code>ПараметрыРегистрации.Версия = "1.0";</code> <code>ПараметрыРегистрации.БезопасныйРежим = Ложь;</code> <code>ПараметрыРегистрации.ВерсияБСП = "1.2.1.4";</code> <code>Команда = ПараметрыРегистрации.Команды.Добавить();</code> <code>Команда.Представление = НСтр("ru = 'Выполнить задание по триггеру'");</code> <code>Команда.Идентификатор = "Триггер";</code> <code>Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();</code> <code>Команда = ПараметрыРегистрации.Команды.Добавить();</code> <code>Команда.Представление = НСтр("ru = 'Выполнить задание по расписанию'");</code> <code>Команда.Идентификатор = "ПоРасписанию";</code> <code>Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();</code> <code>Возврат ПараметрыРегистрации;</code> <code>КонецФункции</code> <code>Функция ВыполнитьКоманду(ИдентификаторКоманды, ДополнительныеПараметры) Экспорт</code> <code>Если ИдентификаторКоманды = "Триггер" Тогда</code> <code>ВыполнитьЗадание(ДополнительныеПараметры);</code> <code>ИначеЕсли ИдентификаторКоманды = "ПоРасписанию" Тогда</code> <code>ВыполнитьЗадание(ДополнительныеПараметры);</code> <code>КонецЕсли;</code> <code>КонецФункции</code> <code>Процедура ВыполнитьЗадание(ДополнительныеПараметры)</code> <code>Автоматизация = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.АвтоматизацияСсылка;</code> <code>Если Автоматизация.ТипАвтоматизации = 1 Тогда</code> <code>ЗаписьЖурналаРегистрации("Выполнена атоматизация по расписанию.", УровеньЖурналаРегистрации.Предупреждение);</code> <code>Иначе</code> <code>ОбъектСсылка = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка;</code> <code>ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);</code> <code>ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);</code> <code>ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);</code> <code>ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");</code> <code>ЗаписьЖурналаРегистрации("Выполнена атоматизация по триггеру для " + Строка(ОбъектСсылка), УровеньЖурналаРегистрации.Предупреждение, ОбъектСсылка);</code> <code>КонецЕсли;</code> <code>КонецПроцедуры</code>