8.х Как программно добавить ХарактеристикиНоменклатуры?

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Stribog, 22 май 2008.

  1. TopicStarter Overlay
    Stribog
    Offline

    Stribog

    Регистрация:
    22 май 2008
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    В пустую базу добавляем две записи в справочник номенклатур.
    У первой номенклатуры Номенклатура1 есть характеристики "Размер" и "Цвет".
    У второй номенклатуры Номенклатура2 есть только характеристика "Цвет".
    "Размер" может принимать следующие значения: "р-р 1", "р-р 2", "р-р 3".
    "Цвет" может принимать следующие значения: "Черный", "Белый"

    Как программно для Номенклатуры1 добавить ХарактеристикиНоменклатуры со значениями
    "р-р 2, Белый"
    "р-р 3, Черный"
    А для Номенклатуры2 добавить ХарактеристикиНоменклатуры "Белый"?

    База пустая, и название и значения характеристик в базе не заведены.

    Следующий список объектов вгоняет в ступор:
    Спр.Номенклатура
    Спр.ХарактеристикиНоменклатуры подчинен Спр.Номенклатура
    ПланыВидовХарактеристик.НазначениеСвойствКатегорийОбъектов
    ПланыВидовХарактеристик.СвойстваОбъектов
    Спр.ЗначенияСвойствОбъектов подчинен ПланыВидовХарактеристик.СвойстваОбъектов
    РегистрСведений.ЗначенияСвойствОбъектов

    В какой последовательности следует обращаться(заполнять) к данным объектам?

    1. Как добавить сами характеристики(Размер и Цвет) и их значения?
    2. Как программно привязать характеристики со значениями к номенклатуре?
  2. Senya
    Offline

    Senya Опытный в 1С

    Регистрация:
    6 июн 2006
    Сообщения:
    594
    Симпатии:
    0
    Баллы:
    26
    Вот пример кода:
    Код:
    
    Цвет= ПланыВидовХарактеристик.СвойстваОбъектов.НайтипоНаименованию("Цвет");
    Размер = ПланыВидовХарактеристик.СвойстваОбъектов.НайтипоНаименованию("Размер");
    НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    // Считаем что переменная ТабХк - спсиок элементов справочника  номенклатура 
    Для каждого Стр Из ТабХк Цикл
    // Здесь условие, для определения какие х-ки записывать
    НовЭл = справочники.ХарактеристикиНоменклатуры.создатьЭлемент();
    НовЭл.наименование = "р-р 1";
    НовЭл.Владелец = Стр.Ссылка;
    НовЭл.Записать();
    НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(НовЭл.ссылка);
    НаборЗаписейЗначенияСвойств.Прочитать();
    
    НовЗапись	= НаборЗаписейЗначенияСвойств.Добавить();
    НовЗапись.Объект	= НовЭлссылка;
    НовЗапись.Свойство	= Размер;
    НовЗапись.Значение = НовЭл.ссылка;
    // Здесь можно добавить ещё один элемент спр. характеристики и тоже записать			
    // Здесь конец условия для проверки , что нужно записать
    НаборЗаписейЗначенияСвойств.Записать();
    КонецЦикла;
    
    
    Немного теории - все значения характеристик (неважно - номенклатуры или документов ..) хранятся в регисте сведений ЗначенияСвойствОбъектов. План видов характеристик задаёт тип характеристики, а также (при необходимости) ограничения на их использование. Значения характеристик могут быть разных типов - в Вашем случае это значения справочника Характеристикиноменклатуры, который подчинен спр. Номенклатура.

Поделиться этой страницей