Имя: Пароль:
1C
1С v8
Подставить значение доп реквизита из справочника
0 oqjawa
 
29.08.19
11:25
Здравствуйте, из ТЧ внешней обработки в справочник ЗначенияСвойствОбъектов добавляю значение, а в номенклатуру записать не могу как это сделать?
если у доп реквизита тип строка то все подставляется а если доп значение то не получается


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

        НовыйРеквизит = ТаблицаДопРеквизитов1.Добавить();
        НовыйРеквизит.Свойство = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТабСтр.ИД);
        НовыйРеквизит.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТабСтр.ИД);
             
        МояНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(ТабСтр.Наименование);
        УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(МояНоменклатура, ТаблицаДопРеквизитов1 );
1 banco
 
29.08.19
11:51
(0) много НайтиПоНаименованию. Пройдите отладчиком, смотрите где проблема
2 oqjawa
 
29.08.19
11:54
НовыйРеквизит.Свойство = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТабСтр.ИД);  не верно
правильно НовыйРеквизит.Свойство = ДопРеквизит_Ид;

но не в этом проблема(
3 oqjawa
 
29.08.19
12:10
ДопРеквизит_Ид = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ИД");
        ТаблицаДопРеквизитов = Новый ТаблицаЗначений;
        ТаблицаДопРеквизитов.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
        ТаблицаДопРеквизитов.Колонки.Добавить("Значение", Новый ОписаниеТипов("Строка"));
        НовыйРеквизит = ТаблицаДопРеквизитов.Добавить();
        НовыйРеквизит.Свойство = ДопРеквизит_Ид;
        НовыйРеквизит.Значение = ТабСтр.ИД;
        МояНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(ТабСтр.Наименование);
        УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(МояНоменклатура, ТаблицаДопРеквизитов);    

Вот этот код подставляет значение доп реквизита с типом строка в справочник номенклатуры... а тип Дополнительное значение хранит значения в справочнике.. создаю там элемент а подставить как непонятно.. столько тем на разных форумах а ответа нет нигде это возможно?)
4 catena
 
29.08.19
12:31
(3)  ТаблицаДопРеквизитов1.Колонки.Добавить("Значение", Новый ОписаниеТипов ("Строка"));

Так а зачем вы ее строкой типизируете, если справочник нужен?
5 oqjawa
 
29.08.19
13:49
Catena (4) спасибо огромное,
ДопРеквизит_Ид = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ИД");
        ТаблицаДопРеквизитов = Новый ТаблицаЗначений;
        ТаблицаДопРеквизитов.Колонки.Добавить("Свойство", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"));
        ТаблицаДопРеквизитов.Колонки.Добавить("Значение", Новый ОписаниеТипов("СправочникСсылка.ЗначенияСвойствОбъектов"));
        Если Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТабСтр.ИД).Пустая() Тогда
            СправЗначениеСвойств = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
            СправЗначениеСвойств.Наименование = ТабСтр.ИД;
            СправЗначениеСвойств.Владелец = ДопРеквизит_Ид;
            СправЗначениеСвойств.Записать();
        КонецЕсли;

        НовыйРеквизит = ТаблицаДопРеквизитов.Добавить();
        НовыйРеквизит.Свойство = ДопРеквизит_Ид;
        НовыйРеквизит.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТабСтр.ИД);
        
                
        МояНоменклатура=Справочники.Номенклатура.НайтиПоНаименованию(ТабСтр.Наименование);
        УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(МояНоменклатура,ТаблицаДопРеквизитов);
Программист всегда исправляет последнюю ошибку.