Имя: Пароль:
1C
1С v8
Запись документа из обработки проведения
,
0 Tester
 
05.09.17
16:50
Всем привет.
Так уж случилось, что в обработке проведения документа выполняется код, который изменяет некоторые данные этого документа и записывает его. Как следствие при проведении не по кнопке ОК, а по кнопке Провести после проведения необходимо перечитать данные объекта на форме. Пользователи этого не делают и продолжают работать с формой документа получая в итоге сообщение о необходимости перечитать данные.
Есть ли выход из ситуации?
1 Джинн
 
05.09.17
16:52
Не самое лучшее архитектурное решение. При каждом перепроведении у Вас будут меняться данные в документе.
2 spiller26
 
05.09.17
16:59
(0) Используй обновление данных на форме, при проведении.
3 тарам пам пам
 
05.09.17
17:01
(0) все равно странно, что объект не перечитывается - при проведении выполняется событие ПередЗаписью и форма должна перечитать объект после транзакции в любом случае.
4 lodger
 
05.09.17
17:02
(3) а если ПередЗаписью пустое? или не взводит флаг Модифицированность?
5 spiller26
 
05.09.17
17:02
(3) Форма статическая, пока не дашь принка, так и будет отображать.
6 тарам пам пам
 
05.09.17
17:06
(3)+ проверил - событие ПриЧтенииНаСервере не вызывается, даже если в ПередЗаписью модифицировать объект. Похоже на косяк платформы.

Тогда можно принудительно перечитать объект в ПослеЗаписиНаСервере.
7 Tester
 
05.09.17
17:07
Забыл сказать, что форма обычная )
Пробовал выкрутить через Форма.ДокументОбъект.Прочитать(), но тогда нормально работает если проводишь по кнопке Провести и возникает косяк с модифицированностью при проведении по кнопке ОК.
8 тарам пам пам
 
05.09.17
17:09
(7) там тоже есть событие ПослеЗаписи
9 Tester
 
06.09.17
10:35
(8) Спасибо, так и сделал!
В ПослеЗаписи() модуля формы документа добавил Прочитать(). Теперь при проведении или сохранении без закрытия формы после записи объект перечитывается и отображает все изменения, произошедшие в нем.
Почему в платформе нельзя было такое сделать по умолчанию? Обязательно надо пинать форму...
10 craxx
 
06.09.17
10:37
(1) я даже бы сказал - решение хуже не придумаешь
11 Heckfy
 
06.09.17
10:39
(10) Придумаешь. Можно Предупреждение() еще запихнуть. :)
12 Tester
 
06.09.17
10:42
(10) (11) А куда пихать код изменения данных объекта, в ПередЗаписью()?
13 craxx
 
06.09.17
13:30
(12) именно туда
14 rudnitskij
 
06.09.17
16:25
(9) "Почему в платформе нельзя было такое сделать по умолчанию? Обязательно надо пинать форму..." - может потому, что разрабы как-то не ожидали, что данные будут меняться при проведении...
Все равно, что вы в макдональдсе в момент начала печати чека крикнете "...и еще Бигмак" - вам удивительно, что в чеке бигмак не появился?
На момент проведения события ПередЗаписью и ПриЗаписи уже отработали. Что происходит в них - отразится на форме автоматически.