Имя: Пароль:
1C
1С v8
Обойти ошибку SQL
0 Morig
 
12.07.19
10:21
Есть необходимость группой проводить документы.
В течение рабочего дня периодически вылетает ошибка "Конфликт блокировок".
Написал обработку для группового проведения.
Провожу документ через попытку. Но, в случае блокировки, попытка не помогает - обработка останавливается, вылетает модальное окно.
Пока "ОК" не нажмёшь, обработка будет ждать реакции пользователя.
Сделал через ОбработчикОжидания. Картина аналогичная. При любых ошибках, кроме ошибок SQL, обработка продолжает работу.
Как сделать так, чтобы конфликт блокировок SQL не вызывал остановку обработки?
1 Slypower
 
12.07.19
10:22
2 kzot
 
12.07.19
10:55
(1) "Если у вас клиент-серверная (SQL) версия 8.0 или 8.1 - вам не нужно ничего ставить (проблемы с блокировками там нет)."

это копия строчки текста из твоей ссылки... )
3 Morig
 
12.07.19
11:48
(1)(2) там ни о том вообще
4 palsergeich
 
12.07.19
12:06
1) Грызи ТЖ, выяви пространства блокировок, виновника, жертву и исправь
2) Забей болт и перепроводи ночью
3) Забей болт и выкини всех из базы и перепроводи в монопольном режиме.
5 Septera
 
12.07.19
12:13
(0) > Провожу документ через попытку. Но, в случае блокировки, попытка не помогает - обработка останавливается, вылетает модальное окно.
а вот это странно, какая субд? на постгре Попытка отрабатывает спокойно эту ошибку
6 Morig
 
12.07.19
12:15
(5) Microsoft SQL
7 Septera
 
12.07.19
12:21
(6) наверное для MSSQL 1С распознает ошибку и обрабатывает ее как "особенную"
8 Septera
 
12.07.19
12:22
много документов проводится?
9 Morig
 
12.07.19
12:25
(8) не много
10 Septera
 
12.07.19
12:27
(9) добавь таймаут между проведениями
11 Morig
 
12.07.19
12:36
(10) таймаут не повлияет на других пользователей. вопрос в том как эту ситуацию обойти. пусть вылетит ошибка. пусть документ останется не проведённым. нужно, чтобы обработка продолжала автономную работу.
12 arsik
 
гуру
12.07.19
12:40
Натрави на нее какой ни будь кликер
13 Septera
 
12.07.19
12:41
Запускай обработку чаще, фиксируй на каком документе остановился и начинай с него или за исключением тех что провел ранее
14 arsik
 
гуру
12.07.19
12:41
Ну или попробуй к базе через ком соединится и проводи через ком, в случае ошибки, возможно в ком-е нормально отработает.
15 Morig
 
12.07.19
12:46
(13) момент когда ошибка вылетела как отловить? как программно закрыть модальное окно?
16 Morig
 
12.07.19
12:48
(12)про кликер оригинально. а есть кликер, к которому можно цепляться через ком?
17 Morig
 
12.07.19
12:48
(12) или кликер с расписанием?
18 Septera
 
12.07.19
13:00
(15) каждый проведенный док куда-то записывай или помечай, добавь рег. задание
19 Morig
 
12.07.19
13:04
(18) это не нужно. я могу в любой момент запросом вытащить всё, что нужно. проблема как отловить появление ошибки и обойти модальное окно
20 arsik
 
гуру
12.07.19
13:16
Ну или сам напиши на AutoIt.
21 Morig
 
12.07.19
13:26
программное нажатие на кнопку в 1С кто-нить реализовывал?
22 arsik
 
гуру
12.07.19
13:31
(21) Изнутри ты этого сделать не сможешь, только снаружи. Соответственно это или готовый кликер, который может кликать конкретное выскочившее окно или писать свой "кликер" на AutoIt, который будет кликать на кнопку в определенном окно при его появлении.
Ну или разобраться с блокировками.
Еще вариант из своей обработки писать лог и если длительный перерыв и обработка еще работает, убивать клиента в винде и поднимать нового.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой