Имя: Пароль:
1C
 
11.3 программное создание доп реквизитов.
0 leoshko84
 
25.10.17
09:16
Необходимо создать программно доп реквизиты. Общие к номенклатуре создаем так:
КЧ = Новый КвалификаторыЧисла(12,2);
Массив = Новый Массив;
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ТЧ=Новый ОписаниеТипов(Массив,КЧ);
лОб=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
лОб.Наименование="проба";
лОб.Заголовок="проба";
лОб.НаборСвойств =  Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие;
лОб.ТипЗначения = ТЧ;
лОб.Записать();

лСпр=Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие.ПолучитьОбъект();
стр=лСпр.ДополнительныеРеквизиты.Добавить();
стр.Свойство=лОб.Ссылка;
лСпр.Записать();

Необходимо создать к элементу спр. ВидыНоменклатуры.
в спр. ВидыНоменклатуры элемент "Пеналы". Вот к нему надо создать доп реквизиты

Делаю так:

КЧ = Новый КвалификаторыЧисла(12,2);
Массив = Новый Массив;
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ТЧ=Новый ОписаниеТипов(Массив,КЧ);
лОб=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
лОб.Наименование="проба2";
лОб.Заголовок="проба2";
лОб.НаборСвойств =  Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_ВидыНоменклатуры;
лОб.ТипЗначения = ТЧ;
лОб.Записать();
лСпр=Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_ВидыНоменклатуры.ПолучитьОбъект();
стр=лСпр.ДополнительныеРеквизиты.Добавить();
стр.Свойство=лОб.Ссылка;
лСпр.Записать();

Как создать к элементу?
1 h-sp
 
25.10.17
09:27
ЛСпрСсылка = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Пеналы");
лСпр=лСпрСсылка.ПолучитьОбъект();
стр=лСпр.ДополнительныеРеквизиты.Добавить();
стр.Свойство=лОб.Ссылка;
лСпр.Записать();
2 leoshko84
 
25.10.17
09:40
поле объекта ДополнительныеРеквизиты -не обнаружено
3 leoshko84
 
25.10.17
09:44
Этот элемент спр. ВидыНоменклатуры  еще предстоит записать в Справочники.НаборыДополнительныхРеквизитовИСведений
4 breezee
 
25.10.17
09:56
(0) Массив = Новый Массив;
Массив.Очистить();
Подскажи, зачем эта чудная конструкция?
5 leoshko84
 
25.10.17
10:02
Сижу вдупляю. А действительно. :-)
6 Сияющий в темноте
 
25.10.17
10:12
зачем чистить пустой массив?
в некоторых языках массив создаётся непустой
но в данном случае,это лишнее
7 leoshko84
 
25.10.17
10:15
Согласен, коллеги. Мне нужен был тип булево. С этим разобрался. Вот для вида номенклатуры записать доп реквизит-вот вопрос...
8 h-sp
 
25.10.17
10:20
(7) а, понял

СпрНаб = Справочники.НаборыДополнительныхРеквизитовИСведений.СоздатьЭлемент();

//создаем набор

СпрНаб.Записать();

ЛСпрСсылка = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Пеналы");
лСпр=лСпрСсылка.ПолучитьОбъект();
ЛСпр.НаборСвойств = СпрНаб.Ссылка;
лСпр.Записать();