Имя: Пароль:
1C
1С v8
Как понять в процедуре справочника послезаписинасервере() что элемент новый?
0 KOlik
 
15.11.20
17:24
ЗначениеЗаполнено(Объект.Ссылка) - он показывает при создании что новый.
А вот после записи то он уже существует))

Добавлял в параметры формы элемент новыйобъект. Определял при открытии что новый. А в процедуре  послезаписинасервере()  никак не могу обратиться к этому параметру.

Посоветуйте пожалуйста))
1 RomanYS
 
15.11.20
17:30
(0)
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    ПараметрыЗаписи.Вставить("ЭтоНовый", ТекущийОбъект.ЭтоНовый());
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
    Сообщить("ПараметрыЗаписи.ЭтоНовый " + ПараметрыЗаписи.ЭтоНовый);
КонецПроцедуры
2 KOlik
 
15.11.20
17:38
(1) Спасибо Роман) Заработало)
3 RomanYS
 
15.11.20
17:43
(2) Если нужно в модуль объекта передать, то вместо ПараметрыЗаписи можно ТекущийОбъект.ДополнительныеСвойства использовать
4 rozer76
 
15.11.20
17:44
Еще Призаписинасервере() тоже можно в параметры записи передать Объект.Ссылка- она будет пустая если новый.
5 Ненавижу 1С
 
гуру
15.11.20
17:49
6 rozer76
 
15.11.20
17:58
Модуль формы  ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Вызывается после записи объекта в базу данных, но до окончания транзакции записи.. Есть последний шанс отказаться от записи.

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

Если данные для записи дополнительной информации находятся в самом объекте, то мы использовали обработчик модуля объекта ПриЗаписи(). А вот если данные находятся в форме, то как раз для таких случаев и предназначено это событие, потому как есть доступ к данным формы.

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

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

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

Если это запись нового объекта, то ТекущийОбъект.Ссылка будет содержать уже конкретное значение ссылки на этот элемент в информационной базе. А вот Объект.Ссылка имеет пустое значение на этом этапе.

Итак, по поводу этого обработчика можно сделать следующие выводы:

    Если нужно выполнять какие-то действия, связанные с записанным объектом, и при этом, например, нужна ссылка на этот объект, необходимо использовать ТекущийОбъект.Ссылка.
    Основной реквизит формы Объект можно использовать только для сравнения того, что «было», с тем, что «записалось». Изменять его бессмысленно, т. к. он будет замещен данными из ТекущийОбъект.
    Если нужно изменить записанные данные перед отправкой их на клиент, необходимо использовать ТекущийОбъект
7 Ненавижу 1С
 
гуру
15.11.20
18:06
(6) ясно-понятно, т.е. синхронизация объекта формы происходит ПОСЛЕ этого события