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