|
дополнительный реквизит в справочнике | ☑ | ||
---|---|---|---|---|
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. Вот такой код получился. Вдруг кому пригодится
НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); НоваяХарактеристика.Владелец = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Бурение и строительство с характеристиками скважин"); НоваяХарактеристика.Наименование = Назначение; НоваяХарактеристика.Записать(); МассивСтруктур = Новый Массив; Скважина = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Скважины", Истина); ЗначениеРеквизита = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); ЗначениеРеквизита.Наименование = Назначение; ЗначениеРеквизита.Владелец = Скважина; ЗначениеРеквизита.Записать(); Структура = Новый Структура("Свойство, Значение",Скважина,ЗначениеРеквизита.Ссылка); МассивСтруктур.Добавить(Структура); УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(НоваяХарактеристика.Ссылка,МассивСтруктур); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |