|
Получить доп реквизит в подписке ПриЗаписи
|
Я
|
|
Vurglak 02.12.19 - 12:20 | Здравствуйте.
УПП 1.3.127.1.
Для справочника добавил дополнительный реквизит. Теперь при записи его хочу получить, но проблема в том, что при записи в регистре сведений, в котором в УПП хранятся доп реквизиты, данные ещё старые.
Собственно как его вытянуть-то с изменениями, внесенными пользователем? |
dka80 1 - 02.12.19 - 12:24 | значение допреквизитов хранится в регистре сведений и изменяется сразу, как пользователь внес данные. с формой объекта справочника данные не связаны. Если я не ошибаюсь
|
Vurglak 2 - 02.12.19 - 12:34 | ( 1) В УПП значение доп реквизитов хранится в регистре, но изменяется при записи элемента справочника. На форме табличка доп реквизитов имеет тип "ОбработкаТабличнаяЧастьСтрока.ЗначенияСвойствОбъекта.СвойстваИЗначения".
Специально для теста открыл элемент с заполненным свойством, поменял на другое, однако при записи выдало старое значение. |
hhhh 3 - 02.12.19 - 12:38 | ( 2) сделать подписку ПриЗаписи. Эта новая подписка будет выполняться после всех остальных ПриЗаписи и поэтому в ней уже будет новое значение. |
SergTheGreat 4 - 02.12.19 - 12:39 | ( 0) Давайте с терминологией разберемся. "дополнительный реквизит" - это элемент реквизита справочника "ДополнительныеСвойства" или это элемент плана видов характеристик "СвойстваОбъектов"? |
Vurglak 5 - 02.12.19 - 12:46 | (3)Таки нет, значение все ещё старое
( 4)"дополнительный реквизит" - это элемент плана видов характеристик "СвойстваОбъектов", соответственно его значение берётся из регистра сведений "ЗначенияСвойствОбъектов". |
SergTheGreat 6 - 02.12.19 - 12:53 | ( 5) Тогда странно. Обработка ЗначенияСвойствОбъекта меняет их сразу, она никак не привязана к записи справочника. Например, свойства можно изменить из списка, вообще не открывая форму элемента.
Покажите пож-та код, которым получаете значение свойства в обработчике подписки. |
Vurglak 7 - 02.12.19 - 12:56 | (60
Запрос.Текст = "ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Объект
| И ЗначенияСвойствОбъектов.Свойство = &Свойство";
Запрос.УстановитьПараметр("Объект", Источник.Ссылка);
Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000140");
Если Свойство <> Неопределено И Свойство <> ПланыВидовХарактеристик.СвойстваОбъектов.ПустаяСсылка() Тогда
Запрос.УстановитьПараметр("Свойство", Свойство);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Не ЗначениеЗаполнено(Выборка.Значение) Тогда
...
Иначе
...
КонецЕсли; |
SergTheGreat 8 - 02.12.19 - 13:06 | ( 6) Упс... был не прав! В форме элемента справочника обработка ЗначенияСвойствОбъекта вызывается в обработчике ПриЗаписи. А он выполняется уже после обработчика одноименного обработчика объекта справочника. Поэтому в подписке измененные свойства еще не видны. |
SergTheGreat 9 - 02.12.19 - 13:08 | (8) "обработчика одноименного обработчика" :-)))
"обработчика одноименного СОБЫТИЯ" |
Vurglak 10 - 03.12.19 - 06:48 | Может кому пригодится.
В результате сделал так:
Если Не Источник.ЭтоНовый() Тогда
Форма = Источник.Ссылка.ПолучитьФорму("ФормаЭлемента");
Если Не Форма.Открыта() Тогда
Форма = Источник.Ссылка.ПолучитьФорму("ФормаЭлементаУправляемая").Открыта();
КонецЕсли;
Если форма.Открыта() Тогда
Для Каждого Свойство из Форма.ЭлементыФормы.Свойства.Значение Цикл
Если Свойство.Свойство = СвойствоМенеджер Тогда
...
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
При создании нового договора без проверки на ЭтоНовый() начинает ругаться на ПолучитьФорму(), но в УПП при создании нового договора вкладка доп свойств все равно не активна, так что... |
catena 11 - 03.12.19 - 06:59 | Без формы можно в модуле набора записей регистра
|
Vurglak 12 - 03.12.19 - 07:02 | ( 11)а в набор записей регистра попадут данные из регистра, которые старые, или из формы, которые записываются новые? |
catena 13 - 03.12.19 - 07:04 | ( 12)Там есть и те и те. Старые из регистра и новые из объекта |