Имя: Пароль:
1C
 
Запись документа с открытой формой. Как обойти вывод ошибки
0 folo
 
28.03.25
16:37
Добрый день. Фоновое задание перерассчитывает реквизиты документов и перезаписывает их. Если форма документа открыта на ней вызывается ошибка записи документа другим пользователем. Из фонового задания оповещения послать нельзя. Как обмануть форму? Можно ли отловить ошибку перед ее выводом например чтобы перечитать форму?
1 Garykom
 
гуру
28.03.25
16:44
(0) Можно но извратно
2 folo
 
28.03.25
16:45
(1) Хорошо бы поподробнее.
3 Garykom
 
гуру
28.03.25
16:51
(2) 1. Пропускать в фоновом если "форма открыта" и "объект редактируется другим пользователем"
2. Уведомлять в открытой форме объекта (если не редактируется) об изменении для обновления формы и перечитывать
4 Garykom
 
гуру
28.03.25
16:52
(3)+ 2. Можно делать или при любой действии юзера в форме или по расписанию через ОбработчикОжидания или еще как
5 vicof
 
28.03.25
17:48
(0) А пользователи не приходят и не говорят, что это за хрень у меня тут?
Я бы бизнес-процесс пересмотрел.
6 folo
 
28.03.25
17:50
(5) С этого все и началось .
7 folo
 
28.03.25
18:16
Есть служебный реквизит ВерсияДанных. При записи он обновляется. Похоже надо сохранить его при открытии формы и проверить перед записью совпадет или нет с текущим. Или таймером вызывать проверку например раз в минуту. И тогда делать Перечитать().
8 Волшебник
 
28.03.25
18:19
Вредители
9 timurhv
 
28.03.25
19:19
(6) Самый правильный = пункт 1 в (3)

Если совсем тяжко и какой-то большой документ с кучей данных (марки там сканируют или еще чего, чтобы после повторного чтения документа не пришлось 5 паллет пересканировать, но в целом, не рекомендую такую схему), то в регистр сведений изменения значений записывать фоновым, если он не может наложить блокировку на документ.

Измерения:
СсылкаДокумента
ИмяРеквизита
Реквизит:
ЗначениеДо
ЗначениеПосле

ОбработчикОжидания формы документа проверяет данные по изменению реквизитов в регистре сведений, оповещая об этом пользователя что было изменено. И вопрос: перезаполнить такие-то реквизиты Да\Нет. Тогда переоткрывать документ не придется, но всякие обработчики ПриИзменении - программно обработать.