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