Имя: Пароль:
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) Да. Именно для этого. Разрабы сайта попросили передавать в доп реквизите артикулы через ; для того чтобы рекомендации правильно составлять.
Временно забыли про данную задачу, но пришло время вернуться...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn