Имя: Пароль:
1C
 
Записать массив в доп реквизит
, ,
0 vondbond73
 
11.10.24
15:14
Пытаюсь передать массив артикулов в доп реквизит типа строка. При попытке выгрузки появляется ошибка "НедостаточноФактическихПараметров". Кто может подсказать, что не так?

Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	НоменклатураРекомендуемыеТовары.Наименование.Артикул КАК Артикул
	|ИЗ
	|	Справочник.Номенклатура.РекомендуемыеТовары КАК НоменклатураРекомендуемыеТовары
	|ГДЕ
	|	НоменклатураРекомендуемыеТовары.Ссылка = &Ссылка";	
	Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
	МассивАртикулы = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Артикул");
	ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Рекомендуемый_Товар", Истина);
	УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(СтрСоединить(МассивАртикулы, ";"));
1 Волшебник
 
11.10.24
15:14
В описании ошибки указан номер строки. Ищите там.
2 AAA
 
11.10.24
15:19
Вы даже требуемое Свойство не передали в метод записи свойства
3 vondbond73
 
11.10.24
15:25
Пытаюсь найти другой способ заполнения доп реквизита, так как используя эту процедуру приходится много чего дописывать сверху
4 Волшебник
 
11.10.24
15:31
Используйте менеджер регистра сведений и пишите данные в РС ЗначенияСвойствОбъектов
5 Волшебник
 
11.10.24
15:32
Кстати, колонку "Наименование" лучше переименовать в "Товар" или "Номенклатура", а то "Наименование.Артикул" смотрится дико.
6 Мультук
 
гуру
11.10.24
15:33
(0)

Возможно, вам нужно проверить зрение

// Параметры:
//  ВладелецСвойств - ЛюбаяСсылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.
//  ТаблицаСвойствИЗначений - ТаблицаЗначений:
//    * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
//    * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства).


Процедура ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений) 

7 Мультук
 
гуру
11.10.24
15:44
(3)

Новая функция 10-15 строк

1) ПолучитьОбъект()
2) Найти/добавить строку
3) В строке из пункта 2 поменять значение
4) ЗаписатьОбъект

Блокировки, Попытка/Исключение и вообще пункты 1-4
скопировать из УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(..)
-- там уже это всё написано
8 craxx
 
11.10.24
15:47
(0) За "НайтиПоНаименованию" нужно бить долго и больно.
9 Волшебник
 
11.10.24
15:59
(8) А массив артикулов в строковом свойстве через ";" Вас не смущает?
10 Мультук
 
гуру
11.10.24
16:01
(8)

Рука устанет :-)

P.S.

Я знаю два решения (еще константы, но это по сути пункт 1)

1) ПВХ = Справочники.мистаССылкиНаВсякое.ДопРеквизит_Рекомендуемый_Товар.Значение;

2) ПВХ = XMLЗначение(Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения"), "5f308d7c-ca09-11eb-96ed-3cecef453c5d");//Рекомендуемый_Товар
Хард-ссылка. Железобетонно, но чисто для "своих дописок"

Ну и завернуть это в функцию
11 Мультук
 
гуру
11.10.24
16:01
(9)
Я думаю, задача автора сунуть это свойство вместе с номеклатурой, куда-нибудь на сайт (Битрикс и т.п.).
Вот он и выкручивается, как может
12 Волшебник
 
11.10.24
16:01
(10) можно просто в ПВХ сделать этот элемент предопределённым, тогда так:
СвойствоРекомендуемыйТовар = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.РекомендуемыйТовар;
13 программистище
 
11.10.24
16:13
ну если это УТ, то там есть идентификатор у ДопРеквизита для разработчика

а так я делал справочник предопределенныезначения (когда в расширениях нельзя было предопределенные создавать)
И общий модуль получения его
и все в режиме предприятия в таком случае работает для любых ссылок
вплоть до создания шаблонов заполнения документов
14 vondbond73
 
22.10.24
13:51
(11) Да. Именно для этого. Разрабы сайта попросили передавать в доп реквизите артикулы через ; для того чтобы рекомендации правильно составлять.
Временно забыли про данную задачу, но пришло время вернуться...