Automation: различия между версиями

Материал из Yolka WMS | wiki
Нет описания правки
Нет описания правки
 
(не показаны 32 промежуточные версии 3 участников)
Строка 1: Строка 1:
__NOTITLE__
__NOTOC__
= Автоматизация =
'''Актуально для версии > 2.0.8.10.'''
'''Актуально для версии > 2.0.8.10.'''


Строка 5: Строка 8:
Откроется окно списка автоматизаций.
Откроется окно списка автоматизаций.
[[Файл:Auto main.png|слева|мини|1033x1033пкс]]
[[Файл:Auto main.png|слева|мини|1033x1033пкс]]




Строка 46: Строка 46:
'''Дополнительные параметры''' - таблица значение пары Ключ + Значение (можно получать в коде при срабатывании автоматизации);
'''Дополнительные параметры''' - таблица значение пары Ключ + Значение (можно получать в коде при срабатывании автоматизации);


== Пример автоматизации по триггеру: ==
== Пример автоматизации по триггеру ==
[[Файл:АвтоматизацияПоРасписанию .png|мини|237x237px|Пример по расписанию]]
В "Объект" указываем справочник "ЕУЗ" (Номенклатура).
В "Объект" указываем справочник "ЕУЗ" (Номенклатура).


Строка 52: Строка 53:


В "Реквизит" указываем реквизит отслеживания "Класс".
В "Реквизит" указываем реквизит отслеживания "Класс".
[[Файл:АвтоматизацияПоРасписанию .png|мини|564x564пкс|Пример по расписанию]]
 
Установим флаг "Отслеживать точное значение".
Установим флаг "Отслеживать точное значение".


Строка 60: Строка 61:


Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание.
Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание.
[[Файл:ПримерЗаданияДляРобота.png|слева|мини|924x924пкс]]
[[Файл:ПримерЗаданияДляРобота.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пкс]]
 
 
 
 




Строка 68: Строка 111:




После, выполнится регламентное задание для этой сроки.


== Описание кода обработки ==
Код модуля объекта обработки <!-- Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Наименование = "Пример использования автоматизации";
ПараметрыРегистрации.Информация = "Пример использования автоматизации";
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.ВерсияБСП = "1.2.1.4";
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Выполнить задание по триггеру'");
Команда.Идентификатор = "Триггер";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Выполнить задание по расписанию'");
Команда.Идентификатор = "ПоРасписанию";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции


Функция ВыполнитьКоманду(ИдентификаторКоманды, ДополнительныеПараметры) Экспорт
Если ИдентификаторКоманды = "Триггер" Тогда
ВыполнитьЗадание(ДополнительныеПараметры);
ИначеЕсли ИдентификаторКоманды = "ПоРасписанию" Тогда
ВыполнитьЗадание(ДополнительныеПараметры);
КонецЕсли;
КонецФункции




Процедура ВыполнитьЗадание(ДополнительныеПараметры)
Автоматизая = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.АвтоматизацияСсылка;
Если Автоматизая.ТипАвтоматизации = 1 Тогда
ЗаписьЖурналаРегистрации("Выполнена атоматизация по расписанию.", УровеньЖурналаРегистрации.Предупреждение);
Иначе
ОбъектСсылка = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка;
ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);
ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);
ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);
ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");
ЗаписьЖурналаРегистрации("Выполнена атоматизация по триггеру для " + Строка(ОбъектСсылка), УровеньЖурналаРегистрации.Предупреждение, ОбъектСсылка);
КонецЕсли;
КонецПроцедуры -->


Функции "СведенияОВнешнейОбработке" и "ВыполнитьКоманду" являются стандартными из БСП.


В процедуре "ВыполнитьЗадание" описаны 2 варианта: для автоматизации по расписанию и по триггеру.


Через "''ДополнительныеПараметры.ДополнительныеПараметрыЗапуска''" можно получить передаваемые параметры из внешней обработке.


Если тип автоматизации "по триггеру" будет доступна ссылка на объект, для которого сработал триггер ''ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка.''


'''Важно: задания по триггеру выполняются через регистр сведений "Задания для робота".'''


Если выполняется задача по триггеру, важно вернуть результат выполнения процедуры.


''ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);''


''ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);''


''ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);''


''ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");''


Если указать ''ВыполнитьПослеОшибкиПовторно = Истина,'' задание повториться и будет произведена еще одна попытка выполнить его.


Таким образом можно отрабатывать все исключения и ошибки и в зависимости от типа такой ошибки прерывать задачу.  
 
[[Файл:ПримерКодаОбработкиАвтоматизации.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>

Текущая версия от 07:25, 23 марта 2023


Автоматизация

Актуально для версии > 2.0.8.10.

Для настройки автоматизации необходимо перейти в "Администрирование" -> "Автоматизация.

Откроется окно списка автоматизаций.

Auto main.png







Структура элементов

Пример по расписанию

Состояние - включает/выключает автоматизацию.

Склад - дополнительный параметр (фильтр) с ссылкой на справочник "Склады";

Контрагент - дополнительный параметр (фильтр) с ссылкой на справочник "Контрагент ";

Обработка - внешняя обработка справочника "Дополнительные отчеты и обработки";

Команда - список зарегистрированных команд в обработке;

Тип автоматизации - логика работы автоматизации;

Комментарий - дополнительное инфо поле;

Объект - объект отслеживания (документ, справочник и т.д.);

Отслеживать - что отслеживаем: реквизит или ТЧ;

Реквизит - реквизит отслеживания;

Значение - значение реквизита;

Дополнительные параметры - таблица значение пары Ключ + Значение (можно получать в коде при срабатывании автоматизации);

Пример автоматизации по триггеру

Пример по расписанию

В "Объект" указываем справочник "ЕУЗ" (Номенклатура).

В "Контрагент" указываем "Йолка".

В "Реквизит" указываем реквизит отслеживания "Класс".

Установим флаг "Отслеживать точное значение".

В "Значение" установим элемент справочника "Класс".

Теперь, при записи элемента справочника "ЕУЗ" будет проверяться владелец (Контрагент = Йолка), измялось ли значение реквизита "Класс" на "Класс А".

Если условия соответствуют автоматизации, в журнале "Задания для робота" (Администрирование - Задания для робота) создастся задание.

Пример строки задания

После, выполнится регламентное задание для этой сроки.



Описание кода обработки

Функции "СведенияОВнешнейОбработке" и "ВыполнитьКоманду" являются стандартными из БСП.

В процедуре "ВыполнитьЗадание" описаны 2 варианта: для автоматизации по расписанию и по триггеру.

Через "ДополнительныеПараметры.ДополнительныеПараметрыЗапуска" можно получить передаваемые параметры из внешней обработке.

Дополнительные параметры доступны только при указании параметра ПараметрыРегистрации.ВерсияБСП = "1.2.1.4" или больше.

Важно: чтобы отслеживать объекты, необходимо включить "Версионирование" для этого объекта". Подсистема "Версионирование" (доступна с ролью "Полные права").

Если тип автоматизации "по триггеру", будет доступна ссылка на объект, для которого сработал триггер ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка.


Важно: задания по триггеру выполняются через регистр сведений "Задания для робота".

Если выполняется задача по триггеру, важно вернуть результат выполнения процедуры.

ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);

ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);

ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);

ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");

Если указать ВыполнитьПослеОшибкиПовторно = Истина, задание повториться и будет произведена еще одна попытка выполнить его.

Для удаления задания, достаточно указать ДополнительныеПараметры.РезультатВыполнения.Вставить("УдалитьЗадание", Истина);

Таким образом можно отрабатывать все исключения и ошибки и в зависимости от типа такой ошибки прерывать задачу.

E code.png






















Пример кода Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();

ПараметрыРегистрации.Наименование = "Пример использования автоматизации";

ПараметрыРегистрации.Информация = "Пример использования автоматизации";

ПараметрыРегистрации.Версия = "1.0";

ПараметрыРегистрации.БезопасныйРежим = Ложь;

ПараметрыРегистрации.ВерсияБСП = "1.2.1.4";

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = НСтр("ru = 'Выполнить задание по триггеру'");

Команда.Идентификатор = "Триггер";

Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = НСтр("ru = 'Выполнить задание по расписанию'");

Команда.Идентификатор = "ПоРасписанию";

Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Возврат ПараметрыРегистрации;

КонецФункции

Функция ВыполнитьКоманду(ИдентификаторКоманды, ДополнительныеПараметры) Экспорт

Если ИдентификаторКоманды = "Триггер" Тогда

ВыполнитьЗадание(ДополнительныеПараметры);

ИначеЕсли ИдентификаторКоманды = "ПоРасписанию" Тогда

ВыполнитьЗадание(ДополнительныеПараметры);

КонецЕсли;

КонецФункции

Процедура ВыполнитьЗадание(ДополнительныеПараметры)

Автоматизация = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.АвтоматизацияСсылка;

Если Автоматизация.ТипАвтоматизации = 1 Тогда

ЗаписьЖурналаРегистрации("Выполнена атоматизация по расписанию.", УровеньЖурналаРегистрации.Предупреждение);

Иначе

ОбъектСсылка = ДополнительныеПараметры.ДополнительныеПараметрыЗапуска.ОбъектСсылка;

ДополнительныеПараметры.РезультатВыполнения.Вставить("Обработан", Истина);

ДополнительныеПараметры.РезультатВыполнения.Вставить("Ошибка", Ложь);

ДополнительныеПараметры.РезультатВыполнения.Вставить("ВыполнитьПослеОшибкиПовторно", Ложь);

ДополнительныеПараметры.РезультатВыполнения.Вставить("Комментарий", "Автоматизация по триггеру успешно завершила работу.");

ЗаписьЖурналаРегистрации("Выполнена атоматизация по триггеру для " + Строка(ОбъектСсылка), УровеньЖурналаРегистрации.Предупреждение, ОбъектСсылка);

КонецЕсли;

КонецПроцедуры