Имя: Пароль:
1C
1С v8
Характеристика номенклатуры
0 clevers
 
04.08.14
20:58
Использую вот такой код (тут нашел). Сама характеристика создается, а вот значения свойств не записываются. Где ошибка? (конфа КОмплексная автоматизация)
Характеристика          = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
    Характеристика.Владелец = Товар.Ссылка;
    
    Размер      = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Размер");    
    Рост        = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Рост");    
    Цвет        = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Цвет",истина);    
    
    ЗначениеРазмер  = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(СокрЛП(ФайлОбмена.RAZM),Истина,,Размер);
    Если ЗначениеРазмер.Пустая() Тогда
        НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
        НовоеЗначение.Владелец     = Размер.Ссылка;
        НовоеЗначение.Наименование = ФайлОбмена.RAZM;
        НовоеЗначение.Записать();
        ЗначениеРазмер = НовоеЗначение.Ссылка;
    КонецЕсли;
    
    ЗначениеРост    = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(СокрЛП(ФайлОбмена.ROST),Истина,,Рост);
    Если ЗначениеРост.Пустая() Тогда
        НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
        НовоеЗначение.Владелец     = Рост.Ссылка;
        НовоеЗначение.Наименование = ФайлОбмена.ROST;
        НовоеЗначение.Записать();
        ЗначениеРост = НовоеЗначение.Ссылка;
    КонецЕсли;
    
    ЗначениеЦвет  = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(СокрЛП(ФайлОбмена.COL),Истина,,Цвет);
    Если ЗначениеЦвет.Пустая() Тогда
        НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
        НовоеЗначение.Владелец     = Цвет.Ссылка;
        НовоеЗначение.Наименование = ФайлОбмена.COL;
        НовоеЗначение.Записать();
        ЗначениеРазмер = НовоеЗначение.Ссылка;
    КонецЕсли;

    КоллекцияЗначений = Новый СписокЗначений();
    КоллекцияЗначений.Добавить(ЗначениеРазмер);
    КоллекцияЗначений.Добавить(ЗначениеРост);
    КоллекцияЗначений.Добавить(ЗначениеЦвет);
    
    Наим = Характеристика.СформироватьНаименование(КоллекцияЗначений);
    Характеристика.Наименование = Наим;
    Характеристика.Записать();
    
    ТаблицаДляЗаписиВРегистр = Новый ТаблицаЗначений;
    ТаблицаДляЗаписиВРегистр.Колонки.Добавить("Свойство");
    ТаблицаДляЗаписиВРегистр.Колонки.Добавить("Значение");
    
    НоваяСтрока = ТаблицаДляЗаписиВРегистр.Добавить();
    НоваяСтрока.Свойство = Размер;
    НоваяСтрока.Значение = ЗначениеРазмер;
    
    НоваяСтрока = ТаблицаДляЗаписиВРегистр.Добавить();
    НоваяСтрока.Свойство = Рост;
    НоваяСтрока.Значение = ЗначениеРост;
    
    НоваяСтрока = ТаблицаДляЗаписиВРегистр.Добавить();
    НоваяСтрока.Свойство = Цвет;
    НоваяСтрока.Значение = ЗначениеЦвет;

    ЗаписьЗначенияВРегистр=РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
    
    НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    
    Для каждого Строка Из ТаблицаДляЗаписиВРегистр Цикл
        Если НЕ ЗначениеНеЗаполнено(Строка.Значение) Тогда
            Запись = НаборЗаписейЗначенияСвойств.Добавить();
            
            Запись.Объект   = Характеристика.Ссылка;
            Запись.Свойство = Строка.Свойство;
            Запись.Значение = Строка.Значение;
        КонецЕсли;
    КонецЦикла;
    НаборЗаписейЗначенияСвойств.Записать();
1 Pashkaa
 
04.08.14
21:28
// Функция записывает значения свойств в информационную базу.
//
// Параметры:
//  Нет.
//
// Возвращаемое значение:
//  Истина - если значения свойств были записаны, или их не требуется записывать
//  Ложь   - если значения свойств не удалось записать.
//
Функция ЗаписатьЗначенияСвойств() Экспорт
    
    НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    
    Для каждого Строка Из СвойстваИЗначения Цикл
        Если ЗначениеЗаполнено(Строка.Значение) Тогда
            Запись = НаборЗаписейЗначенияСвойств.Добавить();
            
            Запись.Объект   = ОбъектОтбораЗначений;
            Запись.Свойство = Строка.Свойство;
            Запись.Значение = Строка.Значение;
        КонецЕсли;
    КонецЦикла;
    
    НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ОбъектОтбораЗначений);
    
    Попытка
        НаборЗаписейЗначенияСвойств.Записать();
    Исключение
        #Если Клиент Тогда
            Предупреждение("Не удалось записать значения свойств:" + Символы.ПС + ОписаниеОшибки());
        #КонецЕсли
        Возврат Ложь;
    КонецПопытки;
    
    Возврат Истина;
    
КонецФункции

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И
2 Pashkaa
 
04.08.14
21:29
Ключевой момент который пропущен у тебя

НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(ОбъектОтбораЗначений);
3 clevers
 
04.08.14
21:52
у меня в конфе у НаборЗаписейЗначенияСвойств.Отбор нету Объект.Установить...