|   |   | 
| 
 | дополнительный реквизит в справочнике | ☑ | ||
|---|---|---|---|---|
| 0
    
        Flempy 21.07.22✎ 12:29 | 
        Имеется справочник, в котором есть дополнительный реквизит(Тип значения: Дополнительное значение). Как программно создать элемент справочника вместе с дополнительным реквизитом?
 Вот что сделал, но доп реквизит почему-то не создается НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); НоваяХарактеристика.Владелец = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Бурение и строительство с характеристиками скважин"); НоваяХарактеристика.Наименование = Назначение; НоваяХарактеристика.Записать(); СсылкаНаОбъект = НоваяХарактеристика.Ссылка; МассивСтруктур = Новый Массив; ДопРеквизит=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Скважины", Истина); Структура = Новый Структура("Свойство, Значение",ДопРеквизит,Назначение); МассивСтруктур.Добавить(Структура ); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СсылкаНаОбъект,МассивСтруктур); | |||
| 1
    
        Beduin 21.07.22✎ 12:32 | 
        СсылкаНаОбъект - Здесь объект у кого устанавливаешь значение.     | |||
| 2
    
        Ryzeman 21.07.22✎ 12:34 | 
        Гм, у тебя какая-то другая версия БСП, у меня просит это:
 // Параметры: // ВладелецСвойств - ЛюбаяСсылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д. // ТаблицаСвойствИЗначений - ТаблицаЗначений: // * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца. // * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства). // В СсылкаНаОбъект на момент вызова всё ок? Она не пустая?. Ну так, на всякий... | |||
| 3
    
        ZDenis 21.07.22✎ 12:35 | 
        А какой тип доп. реквизита? Какой тип в "Назначение"?     | |||
| 4
    
        ZDenis 21.07.22✎ 12:37 | 
        (0) Дополнительные значения хранятся в справочнике "ЗначенияСвойствОбьектов"     | |||
| 5
    
        Flempy 21.07.22✎ 12:38 | 
        (2) В СсылкаНаОбъект возвращает элемент справочника 
 (3) Назначения это строка, видимо в этом ошибка | |||
| 6
    
        ZDenis 21.07.22✎ 12:39 | 
        (5) Тогда так 
 ЗначениеОеквизита = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(Назначение,Истина) | |||
| 7
    
        Flempy 21.07.22✎ 12:44 | 
        (6) Надо же тогда будет сначала создать это значение, прежде чем искать? 
 Объясню в двух словах идею. пользователь вводит строку и после нажатия на кнопку "Добавить" Создается элемент справочника и дополнительный реквизит с одноименным названием, который находится в этом справочнике | |||
| 8
    
        Beduin 21.07.22✎ 12:52 | 
        (7) Что вы искать собрались? Описание метода ЗаписатьСвойстваУОбъекта почитайте. Передают объект кому принадлежит свойство и само свойство со значением во втором параметре.     | |||
| 9
    
        Ryzeman 21.07.22✎ 12:55 | 
        (8) От версии БСП зависит. Вон в (2) скопипастил что у меня, там ссылка и ТЗ.     | |||
| 10
    
        Beduin 21.07.22✎ 12:57 | 
        (9) 
 Для Каждого СтрокаТаблицыСвойств Из ТаблицаСвойствИЗначений Цикл Если СтрокаТаблицыСвойств.Свойство.ЭтоДополнительноеСведение Тогда НоваяСтрока = ТаблицаДопСведений.Добавить(); Иначе НоваяСтрока = ТаблицаДопРеквизитов.Добавить(); Если ТипЗнч(СтрокаТаблицыСвойств.Значение) = Тип("Строка") И СтрДлина(СтрокаТаблицыСвойств.Значение) > 1024 Тогда НоваяСтрока.ТекстоваяСтрока = СтрокаТаблицыСвойств.Значение; КонецЕсли; КонецЕсли; ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицыСвойств, "Свойство,Значение"); КонецЦикла; Такой массив тоже обрабаботает. | |||
| 11
    
        ZDenis 21.07.22✎ 13:00 | 
        (8,9) Вы сути не поняли. У нее доп. реквизит имеет тип "Дополнительное значение". И ей это дополнительное значение надо сперва создать/найти, а оно тоже в справочнике храниться     | |||
| 12
    
        Ryzeman 21.07.22✎ 13:02 | 
        (11) Да я понял. Просто (8) пишет что ошибка в том что объект передаётся. Я говорю что в моей версии БСП нужно ссылку, так что тут скорее всего ошибки нет.     | |||
| 13
    
        Flempy 21.07.22✎ 13:31 | 
        Всем спасибо, в частности, ZDenis. Вот такой код получился. Вдруг кому пригодится 
 НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); НоваяХарактеристика.Владелец = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Бурение и строительство с характеристиками скважин"); НоваяХарактеристика.Наименование = Назначение; НоваяХарактеристика.Записать(); МассивСтруктур = Новый Массив; Скважина = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Скважины", Истина); ЗначениеРеквизита = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); ЗначениеРеквизита.Наименование = Назначение; ЗначениеРеквизита.Владелец = Скважина; ЗначениеРеквизита.Записать(); Структура = Новый Структура("Свойство, Значение",Скважина,ЗначениеРеквизита.Ссылка); МассивСтруктур.Добавить(Структура); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяХарактеристика.Ссылка,МассивСтруктур); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |