|
Как отловить ОТКАЗ обработки проведения документа? |
☑ |
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-ое решение
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший