Характеристики в номенклатуре , программирование ,как добавить или создать. УНФ 1.6
Задача такая,создать категорию номенклатуры к примеру "обувь" и добавить туда 2 характеристики "размер" и "цвет" .
ошибка: когда записываю свойство1 вылетает, Значение поля "Свойство" не заполнено или заполнено неверно
КатНомен=Справочники.КатегорииНоменклатуры.СоздатьЭлемент();
КатНомен.ТипНоменклатурыПоУмолчанию=Перечисления.ТипыНоменклатуры.Запас;
КатНомен.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.шт ;
КатНомен.Наименование="Обувь"; // Имя Категории
Катномен.ИспользоватьХарактеристики=Истина;
КатНомен.Записать();
Свойство1 = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
Свойство1.Наименование ="Размер";
Свойство1.Владелец = КатНомен.Ссылка;
Свойство1.Записать();
СпрХар = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); //
СпрХар.Наименование = "Размер";
НовХарСтрокаТЧ = СпрХар.ДополнительныеРеквизиты.Добавить(); //
НовХарСтрокаТЧ.Свойство = Свойство1;
НовХарСтрокаТЧ.Значение = 42;
НовХарСтрокаТЧ = СпрХар.ДополнительныеРеквизиты.Добавить(); //
НовХарСтрокаТЧ.Свойство = Свойство1;
НовХарСтрокаТЧ.Значение = 41;
СпрХар.Записать();
Показатьошибка: когда записываю свойство1 вылетает, Значение поля "Свойство" не заполнено или заполнено неверно
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Если правильно вас понял, то пробуйте как-то так:
СпрНабДопРИС = Справочники.НаборыДополнительныхРеквизитовИСведений.СоздатьЭлемент();
СпрНабДопРИС.Наименование = "ОбувьТест01";
СпрНабДопРИС.Родитель = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_ХарактеристикиНоменклатуры;
СпрНабДопРИС.Используется = Истина;
СпрНабДопРИС.Записать();
ТЗДопРекИСв = СпрНабДопРИС.ДополнительныеРеквизиты;
ДопРекв = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
ДопРекв.НаборСвойств = СпрНабДопРИС.Ссылка;
ДопРекв.Наименование = "Размер02";
ДопРекв.Заголовок = "Размер02";
ДопРекв.Виден = Истина;
ДопРекв.ДополнительныеЗначенияИспользуются = Истина;
ДопРекв.Доступен = Истина;
ДопРекв.Записать();
Стр = ТЗДопРекИСв.Добавить();
Стр.Свойство = ДопРекв.Ссылка;
Свойство1 = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
Свойство1.Наименование ="40-02";
Свойство1.Владелец = ДопРекв.Ссылка;
Свойство1.Записать();
Свойство1 = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
Свойство1.Наименование ="41-02";
Свойство1.Владелец = ДопРекв.Ссылка;
Свойство1.Записать();
ДопРекв = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
ДопРекв.НаборСвойств = СпрНабДопРИС.Ссылка;
ДопРекв.Наименование = "Цвет02";
ДопРекв.Заголовок = "Цвет02";
ДопРекв.Виден = Истина;
ДопРекв.ДополнительныеЗначенияИспользуются = Истина;
ДопРекв.Доступен = Истина;
ДопРекв.Записать();
Стр = ТЗДопРекИСв.Добавить();
Стр.Свойство = ДопРекв.Ссылка;
Свойство1 = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
Свойство1.Наименование ="Черный02";
Свойство1.Владелец = ДопРекв.Ссылка;
Свойство1.Записать();
СпрНабДопРИС.Записать();
КатНомен=Справочники.КатегорииНоменклатуры.СоздатьЭлемент();
КатНомен.ТипНоменклатурыПоУмолчанию=Перечисления.ТипыНоменклатуры.Запас;
КатНомен.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.шт ;
КатНомен.Наименование="ОбувьТест-"; // Имя Категории
Катномен.НаборСвойствХарактеристики = СпрНабДопРИС.Ссылка;
КатНомен.Записать();
ПоказатьСвойство1.Владелец = КатНомен.Ссылка;
Свойство1.Владелец = КатНомен.Ссылка;
(8) Странный вопрос. Потому что само собой подразумевающийся на него ответ только один - правильно значение соответствующего типа.
Предлагаю автору изучить - какого типа данные могут содержатся в этом поле, сравнить с уже существующими корректными данными, использовать вариант предложенный ниже, и т.д.... Ну то есть я предлагаю автору заняться аналитической работой, очень полезная вещь, помогает понять, как устроены механизмы изнутри (подсказка: тем кто понимает - больше платят).
Предлагаю автору изучить - какого типа данные могут содержатся в этом поле, сравнить с уже существующими корректными данными, использовать вариант предложенный ниже, и т.д.... Ну то есть я предлагаю автору заняться аналитической работой, очень полезная вещь, помогает понять, как устроены механизмы изнутри (подсказка: тем кто понимает - больше платят).
(8) В итоге нужно не подставить, а все переписывать. Например, "Размер" - это должен быть не Справочник.ЗначениеСвойствОбъекта, а ПВХ.ДополнительныеРеквизитыИСведения. Соответственно надо либо создавать ПВХ "Размер", либо использовать уже существующий ПВХ "Размер", что называется "Из другого набора". И там как минимум еще один тип объекта задействован, которого пока нет в Вашем коде.
Нужно или разбираться по примеру (5), или подождать, может у кого есть уже готовый код.
Нужно или разбираться по примеру (5), или подождать, может у кого есть уже готовый код.
(8) А в самом справочнике ЗначенияСвойствОбъектов должны быть уже конкретные размеры - 41, 42 и т.д - обычно так делают. Т.е. ПВХ "Размер", а ЗСО "41","42","43" ...
Можно теоретически ПВХ "Размер" сделать типа Число или Строка - тогда вообще не нужно будет использовать Справочник.ЗСО, но так обычно не делают.
Можно теоретически ПВХ "Размер" сделать типа Число или Строка - тогда вообще не нужно будет использовать Справочник.ЗСО, но так обычно не делают.
Вообще рекомендую вручную (через пользовательский интерфейс) проделать нечто подобное, посмотреть журнал регистрации - что при этом происходит (какие объекты создаются), в консоли запросов посмотреть объекты, которые увидели в журнале регистрации - и потом воспроизвести в коде аналогичные процессы.
(13) (10) Приветствую помогающих
(7) Код не тестировал, думаю основная конва работы будет понятна.
(7) Код не тестировал, думаю основная конва работы будет понятна.
Процедура Создать()
обКатегория = Справочники.КатегорииНоменклатуры.СоздатьЭлемент();
обКатегория.ТипНоменклатурыПоУмолчанию = Перечисления.ТипыНоменклатуры.Запас;
обКатегория.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.шт ;
обКатегория.Наименование = "Обувь"; // Имя Категории
обКатегория.ИспользоватьХарактеристики=Истина;
обКатегория.Записать();
//--
обСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
обСвойство.Наименование = "Размер";
обСвойство.НаборСвойств = обКатегория.НаборСвойств;
обСвойство.ТипЗначения = Новый ОписаниеТипов("Строка");
обСвойство.Записать();
//--
обНаборСвойств = обКатегория.НаборСвойств.ПолучитьОбъект();
стрДопРеквизит = обНаборСвойств.ДополнительныеРеквизиты.Добавить();
стрДопРеквизит.Свойство = обСвойство.Ссылка;
обНаборСвойств.Записать();
//--
обХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
обХарактеристика.Владелец = обКатегория.Ссылка;
обХарактеристика.Наименование = "42";
СтрДопРеквизит = обХарактеристика.ДополнительныеРеквизиты.Добавить();
СтрДопРеквизит.Свойство = обСвойство.Ссылка;
СтрДопРеквизит.Значение = 42;
обХарактеристика.Записать();
//--
обХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
обХарактеристика.Владелец = обКатегория.Ссылка;
обХарактеристика.Наименование = "41";
СтрДопРеквизит = обХарактеристика.ДополнительныеРеквизиты.Добавить();
СтрДопРеквизит.Свойство = обСвойство.Ссылка;
СтрДопРеквизит.Значение = 41;
обХарактеристика.Записать();
КонецПроцедуры
Показать
(14)
Записывает не в характеристики категории номенклатуры? а в свойство, и у свойствва создается пустое значение свойства.
может добьем задачу?
прикрепил фото
обКатегория = Справочники.КатегорииНоменклатуры.СоздатьЭлемент();
обКатегория.ТипНоменклатурыПоУмолчанию = Перечисления.ТипыНоменклатуры.Запас;
обКатегория.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.шт ;
обКатегория.Наименование = "Обувь"; // Имя Категории
обКатегория.ИспользоватьХарактеристики=Истина;
обКатегория.Записать();
обКатегория.ТипНоменклатурыПоУмолчанию = Перечисления.ТипыНоменклатуры.Запас;
обКатегория.ЕдиницаИзмерения=Справочники.КлассификаторЕдиницИзмерения.шт ;
обКатегория.Наименование = "Обувь"; // Имя Категории
обКатегория.ИспользоватьХарактеристики=Истина;
обКатегория.Записать();
Записывает не в характеристики категории номенклатуры? а в свойство, и у свойствва создается пустое значение свойства.
может добьем задачу?
прикрепил фото
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот