Имя: Пароль:
1C
 
Обход оптимистической блокировки
0 Franchiser
 
гуру
01.03.20
19:09
Открыто 2 формы документа, один из документов проводится и происходит изменение реквизита другого документа, после этого тот второй документ не записывается по причине оптимистической блокировки.
Если документ не модифицирован то можно просто перечитать форму программно в обработке оповещения. Но если он уже начал модифицироваться то как сделать чтобы конкретный реквизит перечитался, но при этом остальные реквизиты остались без изменений на форме?
1 Franchiser
 
гуру
01.03.20
19:12
При оптимистической блокировке версия объекта в БД сравнивается с версией в объекте на форме. Как можно получить эту версию и подменить в объекте, чтобы программа думала , что это та же самая версия и не сработала ошибка оптимистической блокировки?
2 Franchiser
 
гуру
01.03.20
19:17
"Фактически, оптимистическая блокировка представляет собой проверку, которая выполняется перед записью объекта в базу данных. Эта проверка построена на анализе номера версии объекта, хранящейся в базе данных и номера версии, помещенной в память компьютера в момент считывания данных из информационной базы. Если при записи объекта номера его версий отличаются, то будет выдано предупреждение о том, что версия объекта изменилась или он был удален, то есть сработает оптимистическая блокировка."
3 acht
 
01.03.20
19:18
(1) Никак. От этого, собственно, специально и защищаются.
Если у тебя такая схема работы, то это обработка + регистр сведений, а не документ.

Ну или при чтении на сервере попробуй перебить прочитанные значение в объекте данными, ранее сохраненными в форме.
4 Franchiser
 
гуру
01.03.20
19:20
(3) да, надо было делать регистр, но уже поздно
5 RomanYS
 
01.03.20
19:21
>>  Но если он уже начал модифицироваться то как сделать чтобы конкретный реквизит перечитался, но при этом остальные реквизиты остались без изменений на форме?
Перечитай объект целиком, а потом заново внеси нужные изменения, можно программно.
6 Franchiser
 
гуру
01.03.20
19:21
(3) то есть вариант только запомнить данные формы в переменную, потом перечитать форму и обновить данные формы из ранее сохранённой переменной с подменой  нужного реквизита?
7 vi0
 
01.03.20
19:22
(4) сейчас костылей наделаешь потом еще хуже будет
8 Franchiser
 
гуру
01.03.20
19:23
(7) да в принципе и так хорошо, но мне не нравится что это сообщение может появляться
9 acht
 
01.03.20
19:23
(4) Ну попробуй при создании и при изменении складывать данные в спецреквизиты формы. Потом при "записи" перечитывай, перепихивай обратно и сохраняй еще раз. Там, правда, может возникнуть еще какой-нибудь геморрой с повторным срабатыванием обработчиков...
10 Franchiser
 
гуру
01.03.20
19:24
В типовой смотрел: делают регистр Статусы документов, мне в принципе нужно что то похожее
11 vi0
 
01.03.20
19:25
(8) какое сообщение?
12 Franchiser
 
гуру
01.03.20
19:26
(9) зачем так. Я думал что то универсальное есть или данные формы скинуть в хранилище или обойти все реквизиты формы и объекта и скинуть их в массив потом восстановить обратно...
13 vi0
 
01.03.20
19:27
(10) все правильно что у тебя возникает ошибка, у документа поменялся статус, а пользователь продолжает проводить его даже не зная что статус поменялся
14 Franchiser
 
гуру
01.03.20
19:27
(11) данные изменены другим сеансом или подьзователем
15 vi0
 
01.03.20
19:27
(12) это всё жесткие костыли, не делай так
16 Franchiser
 
гуру
01.03.20
19:29
Ну все таки хочется для пользователя более красивое сообщение
17 Franchiser
 
гуру
01.03.20
19:34
(15) дело в том что эти реквизиты уже были до меня, и по ТЗ нужно их так менять
18 vi0
 
01.03.20
19:40
(17) обсуди с тем кто писал тз
что он предполагал на случай одновременного програмного и ручного изменения, раз схема предполагает такой случай
может быть наложить пессимимтическую блокировку
19 vi0
 
01.03.20
19:40
(8) "мне не нравится что это сообщение может появляться"
это ты сам решил так улучшить?
может быть всех и так устроит, а ты голову ломаешь
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший