Не заполняется реквизит из расширения

1. Al3x 1 15.01.25 11:31 Сейчас в теме
Здравствуйте. Добавил в расширение документ РеализацияТоваровУслуг, добавил в него реквизит ДатаЗаписиДокумента (тип Дата, Состав даты Дата и время) должен записываться когда документ новый. Создаю документ, пытаюсь его записать и реквизиту записывается как пустая дата (хотя в отладке показывает текущую дату, а в процедуре после записи он уже пустая дата, хотя больше нигде не используется, ни в модуле объекта, ни в других процедурах. Конфа типовая, добавлена только форма документа и моя процедура.
Попробовал вызов После, так же без результата. Подскажите, в чем ошибся?
&НаСервере
Процедура ext_doc_ПередЗаписьюНаСервереПеред(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	Если Не ЗначениеЗаполнено(Параметры.Ключ) Тогда
		ТекущийОбъект.ДатаЗаписиДокумента = ТекущаяДатаСеанса();
	КонецЕсли;
КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 15.01.25 15:19 Сейчас в теме
(1)
Подскажите, в чем ошибся?
Ошибка может быть где угодно. Я бы сделал это в обработчике ПередЗаписью

На 1С вот так написано про ЭТО

Что важно понимать, находясь в этом обработчике? Данные, доступные через основной реквизит формы Объект, «мертвы». Мертвы в том смысле, что их изменение не даст никакого результата. Их можно только анализировать.

При этом также нужно понимать, что эти данные – не то, что будет записано в информационную базу. Это то, что «приехало» с клиента и «пережило» проверку заполнения. Поэтому и анализировать их можно только с точки зрения того, «а что же было».

А записан в информационную базу будет ТекущийОбъект. Отсюда еще два замечания:

Если нужно принять решение о том, можно записывать данные или нельзя, нужно анализировать ТекущийОбъект.
Если нужно модифицировать записываемые данные (например, дописать служебную информацию в реквизиты), использовать нужно ТекущийОбъект.

Все попытки изменить данные через реквизит формы Объект ни к чему не приведут. В информационную базу эти данные записаны не будут, а перед тем как форма «поедет» обратно на клиент, ее данные будут замещены данными записанного в информационную базу объекта. Таким образом, все изменения, внесенные в Объект, пропадут.

Также нужно понимать, что все действия, выполняемые в этом обработчике (отказ от записи, изменение данных объекта), должны быть связаны именно с тем фактом, что данные записываются именно из формы. При программной записи объекта (методом объекта) форма будет отсутствовать, следовательно, и это событие вызываться не будет.

Поэтому если какие-либо алгоритмы должны выполняться при любом способе записи данных объекта, а не только при записи из формы, их следует размещать в обработчике события объекта (Перед записью), а не в обработчике события формы.
Оставьте свое сообщение

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