1С не видет галку поставленную программно

1. G_116036370494705137050 03.02.25 09:37 Сейчас в теме
Добрый день.
1С занялся недавно и не знаю нюансов. Возникла проблема при обновлении данных в документе при проведении. В документ "ЗаказКлиента" добавлен доп. реквезит "Причина отказа". Если причина выбрана, то при проведении документа, товары в ТЧ должны отмечаться галкой "Отменено" и статус заказа меняться на "Закрыт".
Для решения добавил подписку на событие ПередЗаписью. И общий модусь с режимом "Сервер" с вызовом сервера. И такой код:
Процедура аз_ЗакрытьЗаказПоПричинеОтказа(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		
		ДопРеквезит = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Причина отказа");
		Значение = Источник.ДополнительныеРеквизиты.Найти(ДопРеквезит);
		
		Если ЗначениеЗаполнено(Значение) Тогда
			
			Для Каждого Товар Из Источник.Товары Цикл
				Товар.Отменено = Истина;
			КонецЦикла;
			
			Источник.Статус = Перечисления.СтатусыЗаказовКлиентов[3];
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры
Показать


При проведении вылетат ошибка "Закрытие заказа возможно только с полностью оплаченными/отмененными строками". Прохожусь отладчиком по коду и у товарол "Отменено" истина. Но почему-то 1С не видет что товары отменены.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Prikum 3 03.02.25 09:47 Сейчас в теме
(1)
добавил подписку на событие ПередЗаписью

Может быть статус менять после записи? А так получается, что все изменения еще не записаны, а статус уже поменян.
G_116036370494705137050; GeraltSnow; +2 Ответить
7. G_116036370494705137050 03.02.25 10:13 Сейчас в теме
(3)
Может быть статус менять после записи? А так получается, что все изменения еще не записаны, а статус уже поменян.


Я думал, что возможно в этом проблема. Но как правильно сделать эту запись?

Добавил перед установкой статуса заказа строчку.
Источник.Записать(РежимЗаписиДокумента.Запись);

Так скрипт срабатывает как мне нужно. Ошибок нет, документ проводится. Но правильно ли так делать?
8. Prikum 3 03.02.25 10:16 Сейчас в теме
(7)
Правильно ли так делать?

А что мешает это сделать в подписке на событие "После записи"?
9. G_116036370494705137050 03.02.25 10:21 Сейчас в теме
(8)
подписке на событие "После записи"

Такого события там нет.
10. Prikum 3 03.02.25 10:22 Сейчас в теме
(9)
Такого события там нет.

Зато есть "ПриЗаписи"
14. spacecraft 03.02.25 10:56 Сейчас в теме
(1) смотреть код в основном обработчике ПередЗаписью.
Подписка срабатывает после основного метода обработчика.
И тут на лицо изменение логики. Т.е. основной метод обработчика ничего не знает об отмене. И это может сказываться.
G_116036370494705137050; +1 Ответить
2. G_116036370494705137050 03.02.25 09:43 Сейчас в теме
Если убрать кусок
Источник.Статус = Перечисления.СтатусыЗаказовКлиентов[3];

то документ проводится и гагка "Отменено" ставится.
4. GeraltSnow 177 03.02.25 09:48 Сейчас в теме
Источник.Статус = Перечисления.СтатусыЗаказовКлиентов[3]


Всякое я видел, но чтобы значение перечисления по индексу получали...
5. G_116036370494705137050 03.02.25 09:57 Сейчас в теме
(4)
Всякое я видел, но чтобы значение перечисления по индексу получали...


Ой да мне не жалко исправить =)
Источник.Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
6. antz 03.02.25 10:13 Сейчас в теме
Ну а поставить точку останова там, где ошибка вылетает?
11. SlavaKron 03.02.25 10:29 Сейчас в теме
Не надо ничего перезаписывать – разбирайтесь лучше почему строки не отменяются. Всё должно работать в (1), если выполнение кода попадает в условие.
12. G_116036370494705137050 03.02.25 10:41 Сейчас в теме
(11) В условие попадает, в отладчике все значения обновляются.
А потом вываливаются ошибки:
"Нарушены условия оплаты, необходимые для обеспечения/отгрузки по Заказ клиента АРЕР-000021 от 03.02.2025 10:47:50,
Требуется 2,22 руб. оплачено 0 руб."
"Расчеты по документу "Заказ клиента АРЕР-000021 от 03.02.2025 10:47:50" не завершены.
Для закрытия заказа требуется оплата 2,22 руб..
Закрытие заказа возможно только с полностью оплаченными/отмененными строками".

Почему-то строки не считаются отмененными.

Если записать документ перед сменой заказа, как подсказал (3), то всё срабатывает как нужно.
13. SlavaKron 03.02.25 10:53 Сейчас в теме
(12) Поставьте точку останова перед выводом сообщения об ошибке и посмотрите стек вызова, чтобы понять что привело к ошибке.
15. SlavaKron 03.02.25 12:11 Сейчас в теме
Вообще, как будто не получится закрыть заказ, если включена эта опция. Проверьте, вы интерактивно можете проделать задуманное?
Прикрепленные файлы:
Оставьте свое сообщение

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