Клиентский алгоритм удаления операции
Алгоритм служит для обработки события удаления операции из таблицы операций журнала.
Параметры алгоритма:
ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; ПЕРЕМ <ТИП>: оп; ПЕРЕМ МОДИФ_ПАРАМ: мп; ПЕРЕМ ЛОГИКА: рез) // ... КОНЕЦ
- контекст - входной параметр. Имя журнала + имя режима настроек.
- оп - входной параметр. Добавляемая операция. Вместо идентификатора <ТИП> задается: для типовых операций - имя типа операции, одного из родительских типов или ОПЕРАЦИЯ, для ручных операций - ОПЕРАЦИЯ, для операций исходного остатка - ОСТАТОК.
- мп - входной параметр. Параметр типа МОДИФ_ПАРАМ позволяет реализовать механизм сквозной передачи параметров между клиентским и серверными алгоритмами модификации. Серверный алгоритм может изменить полученные параметры, соответственно, следующему алгоритму будет передаваться изменный набор параметров. Тип МОДИФ_ПАРАМ включает в себя набор параметров и правила их передачи. То есть помимо параметров можно указать пути их передачи: логические поля "до", "после" и "возврат" задают условия передачи параметров серверным алгоритмам ДО_УДАЛЕНИЯ и ПОСЛЕ_УДАЛЕНИЯ и условие передачи параметров обратно в клиентский метод. Если передача параметров запрещена - в алгоритм передается пустой контейнер параметров (пустая переменная типа АЛГ_ПАРАМ).
- рез - выходной параметр. Результат выполнения алгоритма.ДА - алгоритм удаления выполнен успешно, НЕТ - произошла ошибка выполнения алгоритма.
Имеется возможность совершать множественное удаление операций. При множественном удалении платформа создает ветку "PLATFORM"-"BATCH" в параметрах модификации с информацией о серии элементов.На данной ветке создаются три параметра:
- ITEM - числового типа, содержит номер текущего элемента серии;
- COUNT - числового типа, содержит количество элементов в серии;
- RESULT - строкового типа, содержит команду для управления дальнейшей обработки серии:
- CONTINUE - продолжать выполнение (по умолчанию);
- CANCEL - отменить удаление, оставшиеся элементы серии не обрабатываются;
- ALL - продолжить удаление серии без дальнейших вопросов, т.е. для оставшихся элементов серии не будут вызываться клиентские алгоритмы модификации и/или показываться стандартные диалоги.
Пример
Пример иллюстрирует использование алгоритма удаления операции. В зависимости от значения признака оплаты накладной операция будет удалена или нет.
В настройке отображения в узле "Удаления" для нужного типа операции задается алгоритм удаления операции.
ВЫЧИСЛИТЬ(ПЕРЕМ ОПЕР_КОНТЕКСТ: контекст; // вход ПЕРЕМ ОПЕРАЦИЯ: оп; // вход/выход ПЕРЕМ МОДИФ_ПАРАМ: мп; // вход/выход ПЕРЕМ ЛОГИКА: рез) // вход/выход ЕСЛИ оп.признаки["оплачена"].значение = НЕТ ТО ЕСЛИ ВОПРОС("Накладная еще не оплачена - " + "^s" + "Вы действительно хотите удалить операцию?", НЕТ, "Удаление операции") ТО рез = ДА ИНАЧЕ рез = НЕТ КОНЕЦ_ЕСЛИ ИНАЧЕ рез = ДА КОНЕЦ_ЕСЛИ КОНЕЦ