Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

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

В обработке проведения создать программно другой документ
Я
   Emercom
 
18.04.17 - 09:59
Как в обработке проведения документа в случае если ОТКАЗ = истина, создать программно другой документ(учитывая что транзакция при отказе откатывается) ?
 
 
   Остап Сулейманович
 
1 - 18.04.17 - 10:03
(0) Не нужно так делать.
Нужно попытаться провести. Потом проверить результат. Потом браться за следующие действия.
   lodger
 
2 - 18.04.17 - 10:06
проведение происходит в транзакции, отказ = истина приводит к откату транзакции что бы вы там не намутили.
надо ловить уже после проведения как то.
   Emercom
 
3 - 18.04.17 - 10:09
(1) (2) как?)
   lodger
 
4 - 18.04.17 - 10:12
зайдите под отладчиком в ПослеЗаписи, там откат уже произошел, проведение=ложь?
   Остап Сулейманович
 
5 - 18.04.17 - 10:12
(3) У документа в случае удачного проведения обычно устанавливается фишка "Проведен". Вот ее и нужно проверить.
Например :
Об.Записать(РежимЗаписиДокумента.Проведение);
Если Об.Проведен Тогда
  //Как говороил Глохвастов - что-то одно

Иначе
  //Как говороил он же - что-то другое

КонецЕсли;
   Emercom
 
6 - 18.04.17 - 10:17
(4) Если в обработке проведения отказ=истина, то в процедуру после записи незаходит
   Emercom
 
7 - 18.04.17 - 10:20
(5) исходный документ проводится через форму, не программно. Поэтому все действия ограничены его процедурами.
   DrShad
 
8 - 18.04.17 - 10:20
(7) Что!?
   polosov
 
9 - 18.04.17 - 10:20
(6) Боюсь спрашивать, но спрошу. А в чем смысл сего действа?
   Emercom
 
10 - 18.04.17 - 10:24
(9) есть документ внутренний заказ, на его основании делается документ перемещение, и вот в случае если у документа перемещение есть расхождение по позициям с внутренним заказом, то происходит отказ записи у документа перемещения. И в этот момент нужно программно создать документ корректировка внутреннего заказа.
 
 Рекламное место пустует
   Buster007
 
11 - 18.04.17 - 10:26
(10) до проведения это нельзя узнать что ли?
   DrShad
 
12 - 18.04.17 - 10:28
(11) +100500
   Dmitrii
 
13 - 18.04.17 - 10:30
(10) Бред какой-то...

>> расхождение по позициям с внутренним заказом

Выполняйте эту проверку ПередЗаписью документа перемещение, если РежимЗаписи = Проведение.
Если выявлены расхождения, создавайте документ Корректировка.
   lodger
 
14 - 18.04.17 - 10:37
ну вот как всегда. узнали зачем - оказалось можно и не городить велосипед.
   Emercom
 
15 - 18.04.17 - 11:51
(14) (13) (12) (11) это слишком просто), задача поставили имено после отказа создавать документ. Сделал в итоге велосипед. В форме в обработчике перед записью добавил в дополнительные свойства документа переменную (в случае удачной записи эта переменная обнуляется в обработке проведения), добавил обработчик ожидания в котором проверяю :
1. Наличие этой переменной
2. То что транзакция не активна
3. Модифированность

Если условия совпадают то уже тогда создаю документ.
   Dmitrii
 
16 - 18.04.17 - 12:08
(15) Пользователь создал документ. В форме записал его (БЕЗ проведения). Закрыл форму. В форме списка нажал правую кнопку мыши на этом документе и выбрал пункт "Провести".
Ну или воспользовался любым другим способом провести ранее записанный документ перемещения, не открывая форму объекта.

Иными словами это костыль, который будет работать ровно до первого шибко умного пользователя.

Логика непрозрачна, алгоритм запутанный, корректный результат не гарантирован.
   DrShad
 
17 - 18.04.17 - 12:13
(16) +1
   Анютик
 
18 - 18.04.17 - 12:14
подписку на событие не предлагать?
   2083
 
19 - 18.04.17 - 12:15
(15) да уж... нагородили...
ИМХО, когда один документ в результате своей работы должен автоматически родить некий другой документ, лучше всего проектировать это все через регл. задание.
То есть у тебя отрабатывает проведение первого документа (любым способом). Это первое событие дает тебе какой-то результат. Этот результат надо где-то зафиксировать. Через какое-то время фоновое задание собирает накопленные результаты и создает нужные другие документы. Копилка результатов очищается, и мы возвращаемся в начало.

Как это все сделать не спрашивай, думай сам.
   Джинн
 
20 - 18.04.17 - 12:15
(0) За такую бизнес-логику нужно расстреливать.
   catena
 
21 - 18.04.17 - 12:19
Вообще прикольная задача. У вас проведение может упасть только из-за расхождения по позициям?
   Йохохо
 
22 - 18.04.17 - 12:20
(16) то есть если не проведется, то (15) нормально отработает? а если проведется, то тоже?
   Dmitrii
 
23 - 18.04.17 - 12:29
(22) Смысл в том, что если пользователь проводит документ перемещения не из формы объекта, то долбанутый алгоритм из (15) вообще никак не отработает (вне зависимости от результатов проведения - успешно или неуспешно).
   mehfk
 
24 - 18.04.17 - 12:32
(0) Стартануть фоновое задание, передав в него нужные данные, в нем сделать свои черные дела.
   Dmitrii
 
25 - 18.04.17 - 12:38
(20) >> За такую бизнес-логику нужно расстреливать.

Согласен. Вопрос только кого?
Если я правильно понял автор ветки не является автором самой реализации этой задачи.

По большому счету мы даже саму бизнес-задачу не знаем. Автор ветки озвучил лишь дебилистическое решение (генерить документы корректировки), родившееся в больном воображении какого-нибудь менеджера. Менеджер этот не понимает всех последствий придуманного им решения, не знает никаких других возможных альтернативных способов.
   Йохохо
 
26 - 18.04.17 - 12:42
(23) есть матрица истинности. Проводим из списка, проводим программно
ошибка проведения - правильный результат достигнут
успешное проведение - правильный результат достигнут
что не так то? А чтобы воспользоваться удобняшкой надо открыть форму. Человек сделал полезняшку, дуделку, свистелку ДЛЯ ИНТЕРАКТИВНОЙ РАБОТЫ, не порушив ничего


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует