ОбработкаПолученияПредставления и некорректные параметры данных.

1. user1004898 28 29.04.21 15:21 Сейчас в теме
Конфигурация Торговый комплекс. Пытаюсь через проверку не заполнения одного из реквизитов документа "списание товаров" отменить проведение. То есть записать можно, провести нет.
Обычный код для отмены проведения в обработке проведения
Если Не ЗначениеЗаполнено(СтатьяСписанияТМЦ) Тогда
			Отказ = Истина;
			Возврат;
КонецЕсли;


Все ок. Документ не проводится. Но стандартно забегает в процедуру "ОбработкаПолученияПредставления" и параметры "Данные" передает значение "Проведен = истина" и ссылку на объект.
Уже в самой процедуре при значение "Проведен" формируется представление документа как ....номер... (проведен). и выводится сообщение пользователя "Не удалось провести "Списание товаров №РФТК-000414 от 18.04.2021 (проведен)"!"
Хочется как минимум получать представление "Не удалось провести "Списание товаров №РФТК-000414 от 18.04.2021"

Уже писал свою процедуру ОбработкаПолученияПредставления, с наперед определенными своими параметрами, но ни в какую.
Как нужно и можно повлиять на ситуацию?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. Sashares 33 29.04.21 17:38 Сейчас в теме
(1)
Как нужно и можно повлиять на ситуацию?

Проверку заполнения реквизитов документа можно сделать в обработке ОбработкаПроверкиЗаполнения - она вызывается только при проведении.
Но если в обработке вернется Отказ = Истина, то документ в любом случае не проведется и не запишется.
Что делать дальше - просто записать без проведения или заполнить и провести - уже должен решать пользователь.
15. user1004898 28 29.04.21 18:08 Сейчас в теме
(9)
ну вот я же делал Отказ = Истина, документ не проводился. движений не делал, но обработчик "ОбработкаПроверкиЗаполнения" всё равно запускается со своими данными, в которых почему-то Данные.Провден = Истина.
И как на этот обработчик повлиять?
17. SlavaKron 29.04.21 18:19 Сейчас в теме
(9) В целом, запись документа без изменения движений не есть гуд (хотя та же РучнаяКорректировка делает то же самое), но ведь таково условие автора вопроса:
записать можно, провести нет
2. FatPanzer 29.04.21 15:27 Сейчас в теме
В обработке проведения уже поздно делать какие-то проверки. Для этого существует ПередЗаписью()
3. user1004898 28 29.04.21 15:31 Сейчас в теме
(2) но документ должен записываться. в моем случае, при добавлении кода в ПередЗаписью() не записывался.
4. FatPanzer 29.04.21 15:35 Сейчас в теме
(3) Так записывайте, в чем проблема? Просто надо не Отказ изменять, а РежимЗаписи...
5. user1004898 28 29.04.21 15:45 Сейчас в теме
(4)
мне надо в момент проведения не дать провести документ.
6. FatPanzer 29.04.21 15:56 Сейчас в теме
(5) Вы меня слышите, нет?
В обработчике ПередЗаписью() проверяете заполненность реквизитов в случае, если параметр РежимЗаписи = Проведение.
Если по итогам проверки надо записать документ без проведения - изменяете только параметр РежимЗаписи.
Если надо отказаться от записи совсем - изменяете параметр Отказ.
7. user1004898 28 29.04.21 16:12 Сейчас в теме
(6)
эх да. не той дорогой пошел.
8. Sashares 33 29.04.21 17:36 Сейчас в теме
(7)Как то странно.
А если документ уже был проведен, пользователь открыл его что-то изменил, то что должно быть?
А если пользователь нажмет Провести и закрыть?
10. FatPanzer 29.04.21 17:38 Сейчас в теме
(8) 1. Просто запись (движения не обновляются, а остаются старыми)
2. То же самое, только с закрытием формы.
11. Sashares 33 29.04.21 17:39 Сейчас в теме
(10)
1. Просто запись (движения не обновляются, а остаются старыми)

И по вашему это нормально? В документе кучу реквизитов изменили, но из-за этого финта документ записался, он проведен, но движения старые.
Что -то вы какую-то дичь советуете.
12. FatPanzer 29.04.21 17:43 Сейчас в теме
(11) Да-да, изменение комментария очень влияет на движения документа.
Не надо называть решения дичью, если вы не знаете прикладной логики документа. Может быть все его проведение заключается в добавлении статуса в независимый регистр сведений...
Ничего, наберетесь опыта, будете покладистее к возможностям платформы...
13. Sashares 33 29.04.21 17:53 Сейчас в теме
(12)При чем тут изменение комментария? Это вы себе сейчас придумали, что пользователь изменил комментарий?
Причем тут вообще комментарий?

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

Еще раз - ваше предложение - выстрел себе в ногу - данные документа будут не соответствовать движениям, а документ будет проведен.

Если вы этого не понимаете, то я честно сказать даже не знаю, вы уже праздновать что ли начали или просто троллите?
14. FatPanzer 29.04.21 18:02 Сейчас в теме
(13) Можно. Именно для этого и существует разработчик, который несет ответственность за то - проводить документ или нет при том или ином измененном реквизите, и не нагружать лишний раз SQL лишними транзакциями.
Вы же ведь не знаете посыла автора, да? Почему вы решаете за него?
данные документа будут не соответствовать движениям, а документ будет проведен.

Вот когда вы будете уверены в том, что изменились данные участвующие в движениях - вы будете правы. А пока ваши предположения просто как пук в лужу.
16. SlavaKron 29.04.21 18:15 Сейчас в теме
Такого не может быть, Вот порядок обработчиков:
ОбработкаПроверкиЗаполнения
ПередЗаписью
ПриЗаписи
ОбработкаПроведения

При проведении непроведенного документа, реквизит Проведен = Ложь в ОбработкаПроверкиЗаполнения и ПередЗаписью.
18. user1004898 28 30.04.21 09:45 Сейчас в теме
(16)
потому я изменил порядок проверки заполнения реквизит в обработчике ПередЗаписью. В таком случае док просто записался, и в обработчик ОбработкаПроверкиЗаполнения я не зашел.
Оставьте свое сообщение

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