Как сохранить причину отмены проведения документа, в момент его проведения

1. CYMTU 2 24.12.18 11:14 Сейчас в теме
Добрый день, всем.
Может кто подскажет как лучше решить следующую задачу.
Как например в поле комментарий сохранить причину отмены документа, которая произошла в объекте документа в процедуре
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Задача, конечно сильно упрощена, на самом деле все более сложнее. Но интересует сама возможность сохранить факт отмены проведения документа в каком-либо реквизите этого же документа.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DarkUser 24.12.18 11:23 Сейчас в теме
Так пишите в журнал регистрации, зачем усложнять себе жизнь?
3. CYMTU 2 24.12.18 11:30 Сейчас в теме
(2)Это нужно для операторов и сотрудников КРО, чтобы они видели истинную причину отмены документа. В журнал регистраций они не лазят и даже не знают о его существований.
4. DarkUser 24.12.18 11:38 Сейчас в теме
(3) Вы можете парсить журнал автоматически и выводить в читаемом виде, хотя да, это может оказаться долго для целей показа в форме.
Но проблема в том, что при возникновении ошибки во время проведения документа отменяется и его запись. В этом случае ничего сохранить в его реквизиты вы не сможете. Всё таки попробуйте с журналом регистрации.
5. acanta 24.12.18 11:38 Сейчас в теме
А можно добавить в табличную часть кусочек истории из объекта история, относящийся к документу?
6. CYMTU 2 24.12.18 11:42 Сейчас в теме
7. acanta 24.12.18 11:42 Сейчас в теме
Возможно в принципе табличная часть с датой-временем и автором, в которую необходимо новую строку добавить (кнопка на форме к примеру с выбором причины отмены проведения из выпадающего списка). Если какой-то реквизит в журнале не нужен- то и не надо его в шапку добавлять.
8. acanta 24.12.18 11:45 Сейчас в теме
Если вы хотите проконтролировать именно наличие причины отмены проведения (без него чтобы не отменялось проведение) то комментарий для этих целей не подходит.
11. CYMTU 2 24.12.18 16:53 Сейчас в теме
(8)Заводить табличную часть для данной задачи слишком накладно. Событие которое будет приводить к отмене проведения будет происходить довольно редко 1 раз на 1000 документов, но должно быть своевременно быть обработано сотрудниками и исправлено.
(9) С регистром та же самая ситуация
(10) А как передать данные, которые повлекли к отмене проведения? Ведь их можно только определить в момент проведения документа?

Опишу полностью суть задания.
У нас все заказы в большинстве случаев формируются автоматически в плоть до расходного ордера. Если же есть какая-то проблема с заказом, то у него заполняется соответствующий реквизит и он не проводиться и соответственно весь пакет документов по данному заказу не формируются тоже. Такие заказы фильтруются по данному реквизиту в списке и сотрудники видят у себя на экране, что есть заказы, по которым не были сформированы документы автоматически и требуется уже их вмешательство. Практически все эти проблемные заказы выявляются в момент их создания в 1С не зависимо от куда они пришли из EDI, с КПК, из почты.
Но есть проблема которую можно обнаружить только в момент проведения заказа, а не в момент его создания. Суть такова. В момент проведения заказа по некоторому товару может не быть остатков или частично не хватать, тогда данный товар автоматически заменяться на другой с таким же штрихкодом. Но у нового товара цена может отличаться от цены старого товара или на него не распространяться какая либо скидка. В результате конечная сумма по заказу может не совпадать с тем на что рассчитывал клиент. И часто он отказывается от всего заказа(в основном это касается сетей). Вот в таких случаях хотелось бы заполнять реквизит типа следующим "отмена проведения по причине расхождения цен при смене товара по штрихкоду". В идеале бы хотелось бы сохранять ещё в строках табличной части новый товар в место старого.
17. starjevschik 24.12.18 21:03 Сейчас в теме
(11) регистр завести. Это вообще правильнее. Записывать его в конце всех нужных действий.
CYMTU; AsPin123; +2 Ответить
18. AsPin123 25.12.18 15:12 Сейчас в теме
20. herfis 503 26.12.18 11:29 Сейчас в теме
(17)(18) Чем бы помог регистр? Изначальный вопрос звучал как "сохранить причину отмены проведения документа, в момент его проведения", если проведение не удалось. При откате транзакции проведения будет отменена и запись в регистр, сделанная в этой транзакции.
21. starjevschik 26.12.18 11:50 Сейчас в теме
(20) в момент отмены проведения. В транзакции отмены.
22. herfis 503 26.12.18 13:05 Сейчас в теме
(21) Насколько я понял, ТС изначально хотел сохранять причину, почему провести не получилось. То есть нет никакой отмены. Есть только проведение.
24. starjevschik 26.12.18 21:59 Сейчас в теме
(22)
Как например в поле комментарий сохранить причину отмены документа

ну значит мы поняли по-разному и решали разные задачи.
Постановка задачи - важнейшая часть решения, очень многие этого не понимают о)
9. maks_20 165 24.12.18 12:10 Сейчас в теме
для того, чтобы в реквизит записать что-то, нужно будет вновь сделать запись документа. Использовать запись в обработчике ПередЗАписью очень опасно, можете нарваться на бесконечную рекурсию, если где-то в условиях некорректность будет. По мне так проще создать регистр сведений и в него писать нужную информацию.
10. starjevschik 24.12.18 12:32 Сейчас в теме
Перед записью, проверяем, что режим записи = отмена проведения, записываем реквизит.
12. acanta 24.12.18 17:01 Сейчас в теме
Добавляем два реквизита, примечание из справочника шаблоны примечаний и товар заказанный. При отмене проведения программно проверяем заполнен ли реквизит примечание (в конфигураторе галочку что реквизит обязательный не ставим). У документа может быть несколько форм, возможно есть вариант при попытке отмены проведения без некоего параметра открывать дополнительную форму ввода причины отмены проведения, из которой с этим параметром передается уже разрешение на отмену.
13. acanta 24.12.18 17:05 Сейчас в теме
Насчет тяжести дополнительной табличной части при нечастом использовании по сравнению с идентификатором или длинной строкой в шапке - вопрос спорный.
14. acanta 24.12.18 17:12 Сейчас в теме
При отмене проведения вы можете проверить программно все что угодно, например наличие одной или нескольких записей (набор согласований) в регистре сведений. Добавление этих записей реализовать несложно, и в регистре разрешение может быть записано отдельно, другим сотрудником (или несколькими) не заходя в документ и не блокируя его (в отличие от реквизита в шапке или табличной части). Или кнопкой в журнале, при закрытом документе.
15. herfis 503 24.12.18 17:22 Сейчас в теме
(0) Из самой транзакции записи документа записать причину отката транзакции не получится в принципе (во всяком случае в БД) - на то она и транзакция.
Единственный способ - делать это "снаружи".
Например, проводить заказы фоновым заданием. Ошибки проведения выбрасывать в документе исключениями (ВызватьИсключение). Тогда проводить заказ можно в попытке-исключении и в исключении записывать описание ошибки в так и не проведенный заказ.
16. olga1512 7 24.12.18 20:24 Сейчас в теме
1.Вариант: Через подписку на событие
2.Вариант: Расширение
3.Вариант: создаете внешнюю обработку точь в точь похожую на этот журнал доков, копируете форму документа, а дальше по нажатию на вашу кнопку запись, обрабатываете событие сами и записываете уже все реквизиты реального дока сами.
19. CYMTU 2 26.12.18 08:43 Сейчас в теме
Всем спасибо за обсуждение и советы. Но после долгих экспериментов и оценки всех решений, решили изменить всё таки бизнес логику выпуска заказов на сборку.
Мы решили не отменять проведение заказа и всего пакета документов по нему, а просто фиксировать факт такого случая в дополнительном свойстве заказа и не разрешать выпускать его на сборку пока этот реквизит не будет сброшен оператором.
23. frolov.dns 9 26.12.18 13:52 Сейчас в теме
В ДополнительныеСвойства попробуй
user623969_dusa; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот