|
Не могу разобраться с характеристиками УТ 10.3 | ☑ | ||
---|---|---|---|---|
0
newbas
18.04.13
✎
16:23
|
Стоит задача реализовать помощника ввода номенклатуры, в которой сразу проставляют возможные характеристики, затык получился с созданием характеристик.
Насколько я понял, ПВХ - это объект, объединяющий список возможных значений для конкретного вида характеристик. Список этих значений хранится в подчиненном справочнике "ЗначенияСвойствОбъектов". Следовательно, на форме пользователь выбирает в диалоге значение поля ввода ПВХ:ПланВидовХарактеристикСсылка.СвойстваОбъектов при изменении которого заполняется список всеми возможными значениями для данной характеристики. Процедура ПВХПриИзменении(Элемент) Если ЗначениеЗаполнено(ПВХ) Тогда РазмерныйРяд.Очистить(); Спр = Справочники.ЗначенияСвойствОбъектов.Выбрать(, ПВХ); Пока Спр.Следующий() Цикл РазмерныйРяд.Добавить(Спр.Ссылка,,Истина); КонецЦикла; КонецЕсли; КонецПроцедуры Т.е. в списке содержатся сами значения характеристики свойства объекта - т.е. значение с типом Характеристика.СвойстваОбъектов. В списке пользователь отмечает требуемые ему значения (например размерный ряд для обуви) и происходит создание номенклатуры и характеристик к ней. Насколько я понял, значения характеристик для конкретного объекта хранится в регистре сведений "ЗначенияСвойствОбъектов". Измерения его: ** Объект с типом ДокументСсылка или СправочникСсылка ** Свойство с типом ПланВидовХарактеристикСсылка.СвойстваОбъектов ** Значение с типом Характеристика.СвойстваОбъектов. Т.е. на мой взгляд достаточно было такого кода: СпрНом = Справочники.Номенклатура.СоздатьЭлемент(); //... СпрНом.ВестиУчетПоХарактеристикам = ЗначениеЗаполнено(ПВХ); Попытка СпрНом.Записать(); Исключение Отказ = Истина; КонецПопытки; Если СпрНом.ВестиУчетПоХарактеристикам И Не Отказ Тогда НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Для каждого яСтр Из РазмерныйРяд Цикл Если яСтр.Пометка Тогда НаборЗаписей.Очистить(); НоваяСтрока = НаборЗаписей.Добавить(); НоваяСтрока.Объект = СпрНом.Ссылка; НоваяСтрока.Свойство = ПВХ.Ссылка; НоваяСтрока.Значение = яСтр.Значение; НаборЗаписей.Отбор.Объект.Установить(НоваяСтрока.Объект); НаборЗаписей.Отбор.Свойство.Установить(НоваяСтрока.Свойство); Попытка НаборЗаписей.Записать(); Исключение Отказ = Истина; ОбщегоНазначения.СообщитьОбОшибке("Ошибка записи из-за "+ОписаниеОшибки()); Продолжить; КонецПопытки; КонецЕсли; КонецЦикла; КонецЕсли; Но после выполнения данного кода закладка "Характеристики" в Номенклатуре пустая, как свойство хранится для подчиненного справочника "ХарактеристикиНоменклатуры". Переделал код на такой: СпрНом = Справочники.Номенклатура.СоздатьЭлемент(); //... СпрНом.ВестиУчетПоХарактеристикам = ЗначениеЗаполнено(ПВХ); Попытка СпрНом.Записать(); Исключение Отказ = Истина; КонецПопытки; Если СпрНом.ВестиУчетПоХарактеристикам И Не Отказ Тогда НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Для каждого яСтр Из РазмерныйРяд Цикл Если яСтр.Пометка Тогда Характеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); Характеристика.Владелец = СсылкаНаОбъект; Характеристика.Наименование = яСтр.Значение.Наименование; Попытка Характеристика.Записать(); Исключение ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки(), Отказ); Продолжить; КонецПопытки; НаборЗаписей.Очистить(); НоваяСтрока = НаборЗаписей.Добавить(); НоваяСтрока.Объект = Характеристика.Ссылка; НоваяСтрока.Свойство = ПВХ.Ссылка; НоваяСтрока.Значение = яСтр.Значение; НаборЗаписей.Отбор.Объект.Установить(НоваяСтрока.Объект); НаборЗаписей.Отбор.Свойство.Установить(НоваяСтрока.Свойство); Попытка НаборЗаписей.Записать(); Исключение Отказ = Истина; ОбщегоНазначения.СообщитьОбОшибке("Ошибка записи из-за "+ОписаниеОшибки()); Продолжить; КонецПопытки; КонецЕсли; КонецЦикла; КонецЕсли; На закладке "Характеристика" в спр. Номенклатура есть значения, но при попытке добавить его интерактивно - поле характеристики пустой. Поковырявшись еще понял, что элемента справочника "Свойства объектов" поле назначение должно быть "Справочник "Характеристики номенклатуры"". Вопрос теперь стоит в следующем. Правильны ли мои рассуждения и правилен ли приведенный код по созданию характеристик для номенклатуры? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |