Транслирование реквизитов справочника Номенклатура в дополнительные реквизиты. УНФ 3.0
Разработчик сайта попросил, чтобы реквизиты справочника «Производитель» и «Страна происхождения» транслировались в дополнительные реквизиты, потому что обычные реквизиты номенклатуры он не видит в выгрузке на сайт.
Я реализовал это расширением в событии перед записью Номенклатуры:
Процедура УстановитьСвойствоОбъекта(Объект, Свойство, ЗначениеСвойства) Экспорт Иск = Объект.ДополнительныеРеквизиты.Найти(Свойство, "Свойство"); Если Иск = Неопределено Тогда Иск = Объект.ДополнительныеРеквизиты.Добавить(); Иск.Свойство = Свойство; Иск.Значение = ЗначениеСвойства; Иначе Если Иск.Значение <> ЗначениеСвойства Тогда Иск.Значение = ЗначениеСвойства; КонецЕсли; КонецЕсли; КонецПроцедуры Функция СвойствоПоИдентификатору(Идентификатор) Экспорт Возврат ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("ИдентификаторДляФормул", Идентификатор); КонецФункции Функция ДатьЗначениеСвойствоПоСправочнику(Свойство, Ссылка, Создавать = истина) Если Не ЗначениеЗаполнено(Ссылка) Тогда Возврат Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); КонецЕсли; ИскНаименование = Лев(Строка(Ссылка), 100); //Обрезаем под длину наименования значения ИскСсылка = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ИскНаименование, Истина, , Свойство); Если ЗначениеЗаполнено(ИскСсылка) Тогда Возврат ИскСсылка; КонецЕсли; Если Создавать Тогда ИскОбъект = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); ИскОбъект.Наименование = ИскНаименование; ИскОбъект.Владелец = Свойство; ИскОбъект.Записать(); ИскСсылка = ИскОбъект.Ссылка; Возврат ИскСсылка; Иначе Возврат Справочники.ЗначенияСвойствОбъектов.ПустаяСсылка(); КонецЕсли; КонецФункции Процедура УстановитьЗначениеСвойстваПоСправочнику(Объект, Свойство, Ссылка, Создавать = истина) Экспорт Если НЕ ЗначениеЗаполнено(Свойство) Тогда Возврат; КонецЕсли; ЗначениеСвойства = ДатьЗначениеСвойствоПоСправочнику(Свойство, Ссылка, Создавать); УстановитьСвойствоОбъекта(Объект, Свойство, ЗначениеСвойства); КонецПроцедуры
Пришлось еще сделать обновление реквизитов в форме после записи — автоматически они не перечитываются в расширении формы номенклатуры:
&НаСервере Процедура дор_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи) //Необходимо перечитать доп.свойства объекта, т.к. мы их меняем УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтаФорма); КонецПроцедуры
Среда: УНФ 3.0.5.145. Объем: 1 час.
Свежие комментарии