|
Как отловить ОТКАЗ обработки проведения документа? | ☑ | ||
---|---|---|---|---|
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-ое решение
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |