В обработке проведения создать программно другой документ #795571


#0 by Emercom
Как в обработке проведения документа в случае если ОТКАЗ = истина, создать программно другой документ(учитывая что транзакция при отказе откатывается) ?
#1 by Остап Сулейманович
Не нужно так делать. Нужно попытаться провести. Потом проверить результат. Потом браться за следующие действия.
#2 by lodger
проведение происходит в транзакции, отказ = истина приводит к откату транзакции что бы вы там не намутили. надо ловить уже после проведения как то.
#3 by Emercom
как?)
#4 by lodger
зайдите под отладчиком в ПослеЗаписи, там откат уже произошел, проведение=ложь?
#5 by Остап Сулейманович
У документа в случае удачного проведения обычно устанавливается фишка "Проведен". Вот ее и нужно проверить. Например : Об.Записать(РежимЗаписиДокумента.Проведение);
#6 by Emercom
Если в обработке проведения отказ=истина, то в процедуру после записи незаходит
#7 by Emercom
исходный документ проводится через форму, не программно. Поэтому все действия ограничены его процедурами.
#8 by DrShad
Что!?
#9 by polosov
Боюсь спрашивать, но спрошу. А в чем смысл сего действа?
#10 by Emercom
есть документ внутренний заказ, на его основании делается документ перемещение, и вот в случае если у документа перемещение есть расхождение по позициям с внутренним заказом, то происходит отказ записи у документа перемещения. И в этот момент нужно программно создать документ корректировка внутреннего заказа.
#11 by Buster007
до проведения это нельзя узнать что ли?
#12 by DrShad
+100500
#13 by Dmitrii
Бред какой-то... >> расхождение по позициям с внутренним заказом Выполняйте эту проверку ПередЗаписью документа перемещение, если РежимЗаписи = Проведение. Если выявлены расхождения, создавайте документ Корректировка.
#14 by lodger
ну вот как всегда. узнали зачем - оказалось можно и не городить велосипед.
#15 by Emercom
это слишком просто), задача поставили имено после отказа создавать документ. Сделал в итоге велосипед. В форме в обработчике перед записью добавил в дополнительные свойства документа переменную (в случае удачной записи эта переменная обнуляется в обработке проведения), добавил обработчик ожидания в котором проверяю : 1. Наличие этой переменной 2. То что транзакция не активна 3. Модифированность Если условия совпадают то уже тогда создаю документ.
#16 by Dmitrii
Пользователь создал документ. В форме записал его (БЕЗ проведения). Закрыл форму. В форме списка нажал правую кнопку мыши на этом документе и выбрал пункт "Провести". Ну или воспользовался любым другим способом провести ранее записанный документ перемещения, не открывая форму объекта. Иными словами это костыль, который будет работать ровно до первого шибко умного пользователя. Логика непрозрачна, алгоритм запутанный, корректный результат не гарантирован.
#17 by DrShad
+1
#18 by Анютик
подписку на событие не предлагать?
#19 by 2083
да уж... нагородили... ИМХО, когда один документ в результате своей работы должен автоматически родить некий другой документ, лучше всего проектировать это все через регл. задание. То есть у тебя отрабатывает проведение первого документа (любым способом). Это первое событие дает тебе какой-то результат. Этот результат надо где-то зафиксировать. Через какое-то время фоновое задание собирает накопленные результаты и создает нужные другие документы. Копилка результатов очищается, и мы возвращаемся в начало. Как это все сделать не спрашивай, думай сам.
#20 by Джинн
За такую бизнес-логику нужно расстреливать.
#21 by catena
Вообще прикольная задача. У вас проведение может упасть только из-за расхождения по позициям?
#22 by Йохохо
то есть если не проведется, то нормально отработает? а если проведется, то тоже?
#23 by Dmitrii
Смысл в том, что если пользователь проводит документ перемещения не из формы объекта, то долбанутый алгоритм из вообще никак не отработает (вне зависимости от результатов проведения - успешно или неуспешно).
#24 by mehfk
Стартануть фоновое задание, передав в него нужные данные, в нем сделать свои черные дела.
#25 by Dmitrii
>> За такую бизнес-логику нужно расстреливать. Согласен. Вопрос только кого? Если я правильно понял автор ветки не является автором самой реализации этой задачи. По большому счету мы даже саму бизнес-задачу не знаем. Автор ветки озвучил лишь дебилистическое решение (генерить документы корректировки), родившееся в больном воображении какого-нибудь менеджера. Менеджер этот не понимает всех последствий придуманного им решения, не знает никаких других возможных альтернативных способов.
#26 by Йохохо
есть матрица истинности. Проводим из списка, проводим программно ошибка проведения - правильный результат достигнут успешное проведение - правильный результат достигнут что не так то? А чтобы воспользоваться удобняшкой надо открыть форму. Человек сделал полезняшку, дуделку, свистелку ДЛЯ ИНТЕРАКТИВНОЙ РАБОТЫ, не порушив ничего
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям