Имя: Пароль:
1C
1С v8
Получить доп реквизит в подписке ПриЗаписи
, ,
0 Vurglak
 
02.12.19
12:20
Здравствуйте.

УПП 1.3.127.1.
Для справочника добавил дополнительный реквизит. Теперь при записи его хочу получить, но проблема в том, что при записи в регистре сведений, в котором в УПП хранятся доп реквизиты, данные ещё старые.
Собственно как его вытянуть-то с изменениями, внесенными пользователем?
1 dka80
 
02.12.19
12:24
значение допреквизитов хранится в регистре сведений и изменяется сразу, как пользователь внес данные. с формой объекта справочника данные не связаны. Если я не ошибаюсь
2 Vurglak
 
02.12.19
12:34
(1) В УПП значение доп реквизитов хранится в регистре, но изменяется при записи элемента справочника. На форме табличка доп реквизитов имеет тип "ОбработкаТабличнаяЧастьСтрока.ЗначенияСвойствОбъекта.СвойстваИЗначения".
Специально для теста открыл элемент с заполненным свойством, поменял на другое, однако при записи выдало старое значение.
3 hhhh
 
02.12.19
12:38
(2) сделать подписку ПриЗаписи. Эта новая подписка будет выполняться после всех остальных ПриЗаписи и поэтому в ней уже будет новое значение.
4 SergTheGreat
 
02.12.19
12:39
(0) Давайте с терминологией разберемся. "дополнительный реквизит" - это элемент реквизита справочника "ДополнительныеСвойства" или это элемент плана видов характеристик "СвойстваОбъектов"?
5 Vurglak
 
02.12.19
12:46
(3)Таки нет, значение все ещё старое

(4)"дополнительный реквизит" - это элемент плана видов характеристик "СвойстваОбъектов", соответственно его значение берётся из регистра сведений "ЗначенияСвойствОбъектов".
6 SergTheGreat
 
02.12.19
12:53
(5) Тогда странно. Обработка ЗначенияСвойствОбъекта меняет их сразу, она никак не привязана к записи справочника. Например, свойства можно изменить из списка, вообще не открывая форму элемента.
Покажите пож-та код, которым получаете значение свойства в обработчике подписки.
7 Vurglak
 
02.12.19
12:56
(60
Запрос.Текст = "ВЫБРАТЬ
|    ЗначенияСвойствОбъектов.Значение
|ИЗ
|    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
|    ЗначенияСвойствОбъектов.Объект = &Объект
|    И ЗначенияСвойствОбъектов.Свойство = &Свойство";
Запрос.УстановитьПараметр("Объект", Источник.Ссылка);
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000140");
Если Свойство <> Неопределено И Свойство <> ПланыВидовХарактеристик.СвойстваОбъектов.ПустаяСсылка() Тогда
Запрос.УстановитьПараметр("Свойство", Свойство);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Не ЗначениеЗаполнено(Выборка.Значение) Тогда
...
Иначе
...
КонецЕсли;
8 SergTheGreat
 
02.12.19
13:06
(6) Упс... был не прав! В форме элемента справочника обработка ЗначенияСвойствОбъекта вызывается в обработчике ПриЗаписи. А он выполняется уже после обработчика одноименного обработчика объекта справочника. Поэтому в подписке измененные свойства еще не видны.
9 SergTheGreat
 
02.12.19
13:08
(8) "обработчика одноименного обработчика" :-)))
"обработчика одноименного СОБЫТИЯ"
10 Vurglak
 
03.12.19
06:48
Может кому пригодится.
В результате сделал так:

Если Не Источник.ЭтоНовый() Тогда
Форма = Источник.Ссылка.ПолучитьФорму("ФормаЭлемента");
Если Не Форма.Открыта() Тогда
Форма = Источник.Ссылка.ПолучитьФорму("ФормаЭлементаУправляемая").Открыта();
КонецЕсли;
Если форма.Открыта() Тогда
Для Каждого Свойство из Форма.ЭлементыФормы.Свойства.Значение Цикл
Если Свойство.Свойство = СвойствоМенеджер Тогда
...
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;

При создании нового договора без проверки на ЭтоНовый() начинает ругаться на ПолучитьФорму(), но в УПП при создании нового договора вкладка доп свойств все равно не активна, так что...
11 catena
 
03.12.19
06:59
Без формы можно в модуле набора записей регистра
12 Vurglak
 
03.12.19
07:02
(11)а в набор записей регистра попадут данные из регистра, которые старые, или из формы, которые записываются новые?
13 catena
 
03.12.19
07:04
(12)Там есть и те и те. Старые из регистра и новые из объекта