|
Обход оптимистической блокировки | ☑ | ||
---|---|---|---|---|
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) "мне не нравится что это сообщение может появляться"
это ты сам решил так улучшить? может быть всех и так устроит, а ты голову ломаешь |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |