Имя: Пароль:
1C
 
Отмена проведения в цикле кодом VS интерактивно в форме списка
0 Dmitry1c
 
01.06.20
10:56
Отмена проведения в цикле кодом VS интерактивно в форме списка

Почему-то установка в цикле по выборке УстановитьПометкуУдаления(Истина) стабильно отваливается с ошибкой конфлитка блокировок
При этом если интерактивно в форме списка делать, то ошибки конфликта блокировок нет

В базе работают пользователи, неск. десятков
Почему так?
1 Галахад
 
гуру
01.06.20
11:00
"интерактивно в форме списка", аесли кнопку быстрее нажимать? ;-)
2 Dmitry1c
 
01.06.20
11:01
(1) с выделением пачки доков разом, есессна
3 lodger
 
01.06.20
11:05
(0) потому что надо писать запрос с "заблокировать для изменения"
4 Dmitry1c
 
01.06.20
11:06
(3) данные документы, которые являются результатом выборки из запроса, рядовыми пользователями не используются.
5 mzelensky
 
01.06.20
11:06
(2) Как вариант делать в привилегированном режиме с пометкой "ОбменДанными.Загрузка = Истина"
6 Dmitry1c
 
01.06.20
11:07
(5) при "обмен данными. загрузка = истина" будет выполнена отмена проведения? в смысле очистки движений по регистрам.

прошу прощения за такой вопрос, сам должен знать.
7 mzelensky
 
01.06.20
11:08
(0) А если групповой обработкой, то будет отваливаться?
8 mzelensky
 
01.06.20
11:09
(6) Зависит от кода. Проверь. Если нет - грохни сам движения. Обычно это быстрее, т.к. ты просто очищаешь забор и записываешь. Без 100500 проверок.
9 Dmitry1c
 
01.06.20
11:09
(7) а фиг его знает, пока не могу проверить.

суть вопроса сводится к тому, есть ли разница между отменой проведения программно и интерактивно в форме списка.
10 lodger
 
01.06.20
11:10
(4) ты сам себе на пятки наступаешь.
пока а) идёт проведение и отработка всех событий первого вызова...
б) вызов номер N+1 успевает упереться в заблокированную в а) таблицу.
т.к. механически это разные транзакции.
а методология из (3) заставляет тебя делать единую транзакцию.
11 Cyberhawk
 
01.06.20
11:10
Ошибку-то покажи
12 Dmitry1c
 
01.06.20
11:12
(11) конфликт блокировки при выполнении транзакции
13 mzelensky
 
01.06.20
11:13
(10) Чет ты путаешь. Или описываешь не так.

Он получил выборку запросом. Обходит ее и делает "УстановитьПометкуУдаления(Истина)". В это самое "УстановитьПометкуУдаления(Истина)" уже заложены "идёт проведение и отработка всех событий первого вызова" и никакого "вызов номер N+1" не будет, пока транзакция установки пометки на удаление не закончится.
14 Dmitry1c
 
01.06.20
11:13
(13) именно
15 mzelensky
 
01.06.20
11:14
(14) Попробуй групповой обработкой с настройкой "без контроля записи". Так, чисто ради интереса.
16 vova1122
 
01.06.20
11:17
(0) Систематически валится ошибка или рандомно? Может попробовать это сделать на копии или без Юзверей.
17 vova1122
 
01.06.20
11:20
+(16) еще попробовать установить в цикле паузу. Вдруг код уже отработал, а винчестер еще пилит табличку
18 Dmitry1c
 
01.06.20
11:21
(17) вот такая мысль тоже была.

пауза средствами платформенная все еще не существует?
19 lodger
 
01.06.20
11:23
(13) это было бы 100% верно для файловой базы.
а теперь добавь сюда лаг от работы с СУБД.
20 mzelensky
 
01.06.20
11:25
(19) О каком лаге СУБД речь? Описанная транзакция будет именно на уровне СУБД.
21 lodger
 
01.06.20
11:26
(20) ага, только вот (0) происходит и имеет место быть.
22 mzelensky
 
01.06.20
11:32
(21) И что? То, что это происходит совершенно не означает, что твоя теория верна! Могут быть и другие причины.

Я могу предположить, что когда я "пукаю", то происходит цунами в Индийском Океане. И Даже если вдруг эти события действительно совпали, то это совершенно не подтверждает их прямую или даже косвенную взаимосвязь.