Показать сообщение отдельно
Старый 13.09.2010, 15:15   #14  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Хорошо подходит, если параметр - курсор
А вот за параметры-курсоры в том виде как их обычно лабают надо вообще руки отрывать. Ибо просто суют некий курсор в класс через parm-метод, а потов run() как то его юзают/обновляют.
Мало того что за время с момента вызова диалога и до фактического запуска обработки данные в бд на которые указывает этот курсор могли поменяться ,так еще и юзер вызвав диалог на одной строчке чего либо может вернуться в форму (не закрывая диалога) ткнуть в другую строчку (по любой причине - ну мало ли что ему там приспичило посмотреть) и потом нажать ОК на диалоге. Обработка будет выполнена по другой строке со всеми вытекающими последствиями. А так как авторы подобных обработок обычно всю проверку возможности выполнения их операций вещают на enable() менюайтема то последствия бывают просто разрушительными

Это я к тому что (за исключением особо хитрых обработчиков где все вышеуказанное учетно и обдумано)
  • Сохранять надо не записи а их коды, которые пакуются (JournalId. SalesId, RecId в конце концов)
  • Строчки повторно искать внутри транзакции и проверять что они еще удовлетворяют условиям выполнения операции
За это сообщение автора поблагодарили: sukhanchik (3), ziva (1).