Цитата:
Сообщение от
sukhanchik
Хорошо подходит, если параметр - курсор
А вот за параметры-курсоры в том виде как их обычно лабают надо вообще руки отрывать. Ибо просто суют некий курсор в класс через parm-метод, а потов run() как то его юзают/обновляют.
Мало того что за время с момента вызова диалога и до фактического запуска обработки данные в бд на которые указывает этот курсор могли поменяться ,так еще и юзер вызвав диалог на одной строчке чего либо может вернуться в форму (не закрывая диалога) ткнуть в другую строчку (по любой причине - ну мало ли что ему там приспичило посмотреть) и потом нажать ОК на диалоге. Обработка будет выполнена по другой строке со всеми вытекающими последствиями. А так как авторы подобных обработок обычно всю проверку возможности выполнения их операций вещают на enable() менюайтема то последствия бывают просто разрушительными
Это я к тому что (за исключением особо хитрых обработчиков где все вышеуказанное учетно и обдумано)
- Сохранять надо не записи а их коды, которые пакуются (JournalId. SalesId, RecId в конце концов)
- Строчки повторно искать внутри транзакции и проверять что они еще удовлетворяют условиям выполнения операции