Попытка, Исключение
15.08.2013
09:42
#24
но нужно контролировать ошибки, в смысле проверять что док не проводится из-за конфликта блокировок а не из-за левых данных...
как это проверить?
15.08.2013
13:56
#26
"для этого внутри секции попытка...исключение в секции исключение нужно получить описание ошибки и сравнить его с той ошибкой, что выдается пользователю при блокировке
то есть секция попытка...исключение выглядит в данном случае так
некоторую трудность тут представляет то, что эталонное сообщение об ошибке(в примере это переменная НашеОписаниеОшибки) нужно сначала от системы получить(оно может быть разным в зависимости от того какое ПО установлено, кроме того, для обработки используется не все эталонное сообщение а некоторая часть, которая будет гарантированно повторяться - как правило несколько слов(поэтому в примере и использована функция стрЧислоВхождений() ).
Для того чтобы получить такое эталонное сообщение я связывал переменную НашеОписаниеОшибки с реквизитом формы обработки имеющим тип строка. После чего запускал восстановление. Рано или поздно пользователи блокировали ресурс и обработка останавливалась, выдавая сообщение о блокировке, после чего я копировал несколько ключевых слов из этого сообщения в реквизит формы, отвечающий за эталонное сообщение и обработка начинала обрабатывать ошибки при блокировке..."
то есть секция попытка...исключение выглядит в данном случае так
попытка
восстанавливаемпоследовательность....
исключение
ошибкаСрокой=ОписаниеОшибки();
если стрЧислоВхождений(ОшибкаСтрокой,НашеОписаниеОшибки)>0 тогда//это блокировка
возврат ложь//продолжим работу после паузы
иначе
Сообщить(ошибкаСтрокой);//это для того чтобы видеть что за ошибка произошла
возврат истина //прерываем работу
конецесли;
конецпопытки;
некоторую трудность тут представляет то, что эталонное сообщение об ошибке(в примере это переменная НашеОписаниеОшибки) нужно сначала от системы получить(оно может быть разным в зависимости от того какое ПО установлено, кроме того, для обработки используется не все эталонное сообщение а некоторая часть, которая будет гарантированно повторяться - как правило несколько слов(поэтому в примере и использована функция стрЧислоВхождений() ).
Для того чтобы получить такое эталонное сообщение я связывал переменную НашеОписаниеОшибки с реквизитом формы обработки имеющим тип строка. После чего запускал восстановление. Рано или поздно пользователи блокировали ресурс и обработка останавливалась, выдавая сообщение о блокировке, после чего я копировал несколько ключевых слов из этого сообщения в реквизит формы, отвечающий за эталонное сообщение и обработка начинала обрабатывать ошибки при блокировке..."