Показать сообщение отдельно
Старый 26.02.2016, 13:38   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Сохранять предыдущую запись перед созданием новой
Запись не сохраняется при переходе на другую в гриде
Это не то. Запись в описанном сценарии сохраняется. Просто нарушена последовательность срабатывания методов сохранения. Точнее, нарушена не сама последовательность срабатывания, а последовательность срабатывания в перекрытых методах

Попробую по другому.

Если явным образом нажать "Сохранить", то выполнится метод DataSource.write(), где произойдет сохранение номерной серии и обнуление переменной lastNumber в классе-обработчике номерных серий

Если же нажать кнопку "Создать", то будет вызван метод DataSource.create(), а уже из него (внутри super()) будет вызван DataSource.write(). Но! Анализ значения переменной lastNumber в классе-обработчике номерных серий выполняется ДО вызова super(). Т.е. ДО фактического сохранения записи. Из-за чего и получаем проблему

Вы предлагаете вручную запустить сохранение записи? Повторить все то, что и так будет выполнено внутри super() но явным образом в коде?

-----

Чтобы совсем было понятно

DataSource.forceWrite() - это установка некоего флага, говорящего Axapta о том, что данная запись была изменена. Но анализ этого флага будет выполнен, очевидно, внутри super(). А проблема возникает ДО вызова super(). Т.е. до анализа данного признака дело еще не дошло
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 26.02.2016 в 13:54.