Имя: Пароль:
1C
1С v8
Как отловить ОТКАЗ обработки проведения документа?
,
0 ЭЦ
 
06.08.14
13:23
ГОСПОДА !
Имеется документ.
При попытке проведения В процедуре ПередЗаписью выполняется проверка некоторого условия и генерится
Отказ = Истина.
В этом случае требуется запустить бизнесПроцесс.
Вопрос как отловить это событие (отказ при попытке проведения).
Хочу использовать подписку на события но не вижу подходящих событий.
Прошу подсказать.
Спасибо
1 mrDSide
 
06.08.14
13:32
(0) а что мешает дописать код в модуль документа?
2 ЭЦ
 
06.08.14
13:34
Мешает то что при отмене транзакции все созданные в ней объекты -удаляются
3 ЭЦ
 
06.08.14
13:36
И еще там диалог окрываются
4 Тонкий Клиент
 
06.08.14
13:36
В конце обработки проведения
Если отказ=истина тогда.... твой бизнес процесс
5 Fish
 
06.08.14
13:36
(2) Пример из СП:
"Пример:

Попытка
    НовДокумент.Записать(РежимЗаписиДокумента.Проведение);
Исключение
    Текст = "ru = ""Невозможно провести документ."";"
     + " en = ""Document needs reposting.""";
    Предупреждение(НСтр(Текст));
КонецПопытки;
6 ЭЦ
 
06.08.14
13:40
(5) Док проводится интерактивно через стандартные интерфейсные вызовы. Соответственно этот текст размещать негде.
7 mrDSide
 
06.08.14
13:41
(2) это верно. Но можно запустить ПодключитьОбработчикОжидания("...", время);
8 ЭЦ
 
06.08.14
13:44
(7) так он же тоже будет внутри транзакции?
9 Fish
 
06.08.14
13:47
(6) Ну тогда делай свою проверку в модуле формы  ПередЗаписьюНаСервере. Это ещё ДО начала транзакции.
10 mrDSide
 
06.08.14
14:03
(8) Почитай описание. Все действия выполняются на стороне клиента, т.е. все модули должны быть скомпилированы #Если Клиент Тогда ... #КонецЕсли и должны располагаться в глобальном модуле. А это на атомарность транзакции никак не влияет (она то к ИБ).
11 Defender aka LINN
 
06.08.14
14:05
(6) Замени стандартные интерфейсные вызовы, будь мужиком.
12 Drac0
 
06.08.14
14:16
(0) Делай свою кнопку "Записать".
13 vde69
 
06.08.14
14:19
а что должно быть если при попытки создания БП будет ошибка?

запускатся еще один БП ???
14 vde69
 
06.08.14
14:24
а вообще логика ущербная,

варианты

1. что-бы отловить откат транзакции нужно где-то сохранить информацию о транзакции (вне базы), идеально - внешний источник данных, или файл или лог 1с а потом регламентным заданием генерить что-то

2. сделать анализатор ситуации, например он видит сохраненный и непроведеный документ более 5 минут и генерит что-то
15 mrDSide
 
06.08.14
17:49
А вообще просто замени в обработчике переменную Отказ на глОтказ и в обработчике при записи "Если глОтказ Тогда перейти ~конецОбработчика", а бизнес-процесс запускай в обработчике перед записью если глОтказ = Истина. Это лучше чем 1-ое решение