Множественный выбор значения дополнительного свойства при обмене с сайтом на Битрикс

27.04.20

Интеграция - Сайты и интернет-магазины

При настройке обмена между конфигурациями УТ 10.3 и сайтом на битриксе может возникнуть такая проблема: в битриксе на сайте поддерживается множественный выбор значений дополнительного свойства номенклатуры, в 1с нет. Один из способов решения этой проблемы рассмотрим в этой статье.

Скачать исходный код

Наименование Файл Версия Размер
Множественный выбор р в дополнительных свойствах при обмене с сайтом на Битрикс:
.zip 11,13Kb
14
.zip 11,13Kb 14 Скачать

Используемые конфигурации: Управление торговлей 10.3.57.3.

Модуль обмена битрикс 7.0.1.8 (https://1c.1c-bitrix.ru/ecommerce/download.php).

В справочнике номенклатуры заведено несколько позиций, добавлено дополнительное свойство «Тип одежды», с типом значения «Значения свойств объектов»,  в типовой конфигурации «Тип одежды» может принимать только одно значение и выгрузку попадает только одно значение, необходимо настроить выгрузку нескольких значений.

С настройками по умолчанию выгрузка  дополнительных свойств  из 1с в файле import будет иметь следующий вид

Где ИД – Уникальный идентификатор Свойства «Тип Одежды»
Значение - Уникальный идентификатор значения свойства «Спортивная».

Один из способ решения данной задачи, приведен на форуме Битрикса https://dev.1c-bitrix.ru/community/forums/messages/forum26/topic19114/message335911/#message335911


Я сделаю немного по - другому, для этого мне придется внести изменения в типовую конфигурацию УТ 10.3, изменить xsd схему обмена и подправить процедуру выгрузки доп. свойств на сайт в модуле обмена Битрикс.

1.    Изменения в типовой конфигурации УТ 10.3

В конфигураторе в  плане видов характеристик «Свойства объектов» добавляем реквизит мультивыбор тип Булево.

В пользовательском режиме, проставляем галочку, и делаем Тип значения составной. «Строка» и «Значения свойств объектов»

В конфигураторе в карточке номенклатуры, на вкладке «Свойства» в колонке "Значение" активируем кнопку Открытия, в процедуре открытия вставляем следующий код

Процедура СвойстваИЗначенияЗначениеОткрытие(Элемент, СтандартнаяОбработка)
	Если ЭтаФорма.ЭлементыФормы.СвойстваИЗначения.ТекущиеДанные.Свойство.Мультивыбор Тогда
		СтандартнаяОбработка = Ложь;
		Запрос = Новый Запрос;
		
		Запрос.Текст = "ВЫБРАТЬ
		|	ЗначенияСвойствОбъектов.Ссылка
		|ИЗ
		|	Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		|ГДЕ
		|	ЗначенияСвойствОбъектов.Владелец = &Владелец";
		
		Запрос.УстановитьПараметр("Владелец",ЭтаФорма.ЭлементыФормы.СвойстваИЗначения.ТекущиеДанные.Свойство); 		
		
		СП = Новый СписокЗначений();
		СП.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); 		
		ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора = СП;	
	Иначе
		СП  = Новый СписокЗначений();
		ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора = Новый СписокЗначений();	
		
	КонецЕсли;	
	
	МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Элемент.Значение,";");
	
	Для Каждого ЭлементСписка  Из ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора Цикл 
	НайденноеЗначение = МассивПодстрок.Найти(ЭлементСписка.Значение.Наименование);		
		ЭлементСписка.Пометка = НайденноеЗначение <> Неопределено;
	КонецЦикла;

	ИтоговаяСтрока = "";
	Если ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора.ОтметитьЭлементы() Тогда
 
		Для Каждого ЭлементСписка Из ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора Цикл
			Если ЭлементСписка.Пометка Тогда	
			ИтоговаяСтрока = ?(ИтоговаяСтрока ="",?(ЭлементСписка.Значение="","   ",ЭлементСписка.Значение),""+ИтоговаяСтрока +";" +	?(ЭлементСписка.Значение="","   ",ЭлементСписка.Значение)); 						
			КонецЕсли;	
		КонецЦикла;	
	Элемент.Значение = ИтоговаяСтрока;	
КонецЕсли;

КонецПроцедуры

После открытия в режиме предприятия, и нажатии на кнопку открытия, открывается окно с внесенными значениями, остается галочками отметить нужные свойств

 

 

В базе данное свойство будет храниться как строка, и в дальнейшем мы будем работать с этим свойство как со строкой. Это не совсем удобно, в частности накладывает ограничения, на переименования значений, поэтому дополнительно будем хранить в отдельном реквизите, значения уникальных идентификаторов, чтобы обращаться к значениям свойств не по наименованию, а по ГУИД

В регистр сведений Значения свойств объектов добавляем реквизит УИД тип строка (1024)

В обработку  "Значения свойств объекта" в табличную часть  «СвойстваИЗначения» добавляем реквизит  УИД тип строка (1024)

Следует учитывать, что при такой длине строки плюс разделители, можно будет хранить порядка 27 значений. Если требуется больше значений, строку лучше сделать неограниченной длины, но для это придется сильнее модифицировать запрос, который приведен ниже.

В обработке "Значения свойств объекта" проводим следующие модификации:

в модуле объекта в процедуре ПрочитатьТаблицуСвойствИЗначений() в запрос добавляем строку

   |	СвойстваОбъектов.Наименование КАК Наименование,
   |	ЗначенияСвойствОбъектов.УИД КАК УИД
   |ИЗ
   |	(ВЫБРАТЬ

В процедуру ЗаписатьЗначенияСвойств()

Добавляем строку кода    Запись.УИД = Строка.УИД;

Если ЗначениеЗаполнено(Строка.Значение) Тогда

	Запись = НаборЗаписейЗначенияСвойств.Добавить();
	
	Запись.Объект   = ОбъектОтбораЗначений;
	Запись.Свойство = Строка.Свойство;
	Запись.Значение = Строка.Значение;
	Запись.УИД = Строка.УИД;

КонецЕсли;

В форму элемента Справочника номенклатуры, на закладке Свойства, добавляем скрытую колонку УИД,  в качестве данных указываем колонку «УИД» из обработки  ЗначенияСвойствОбъекта.

Модифицируем нашу процедуру  в форме элемента номенклатуры, по кнопке открытия значения свойства, с учетом реквизита УИД.

Если ЭтаФорма.ЭлементыФормы.СвойстваИЗначения.ТекущиеДанные.Свойство.Мультивыбор Тогда
		СтандартнаяОбработка = Ложь;
		Запрос = Новый Запрос;
		
		Запрос.Текст = "ВЫБРАТЬ
		|	ЗначенияСвойствОбъектов.Ссылка
		|ИЗ
		|	Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
		|ГДЕ
		|	ЗначенияСвойствОбъектов.Владелец = &Владелец";
		
		Запрос.УстановитьПараметр("Владелец",ЭтаФорма.ЭлементыФормы.СвойстваИЗначения.ТекущиеДанные.Свойство); 		
		СП = Новый СписокЗначений();
		СП.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); 		
		ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора = СП;	
	Иначе
		СП  = Новый СписокЗначений();
		ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора = Новый СписокЗначений();		
	КонецЕсли;	
	ТекСТрока = ЭлементыФормы.СвойстваИЗначения.ТекущаяСтрока;	
	МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТекСТрока.УИД,";");
	МассивЭлементов = Новый Массив();
	Для Каждого ЭлементМассиваПодстрок Из  МассивПодстрок Цикл
		Если ЭлементМассиваПодстрок = "" Тогда
			Продолжить;
		КонецЕсли;
		МассивЭлементов.Добавить(XMLЗначение(Тип("СправочникСсылка.ЗначенияСвойствОбъектов"), ЭлементМассиваПодстрок));
	КонецЦикла;
	
	Для Каждого ЭлементСписка  Из ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора Цикл 
		НайденноеЗначение = МассивЭлементов.Найти(ЭлементСписка.Значение);		
		ЭлементСписка.Пометка = НайденноеЗначение <> Неопределено;
	КонецЦикла;
	
	ИтоговаяСтрока = "";
	ИтоговаяСтрокаУИД = "";
	Если ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора.ОтметитьЭлементы() Тогда
		
		Для Каждого ЭлементСписка Из ЭлементыФормы.СвойстваИЗначения.Колонки["Значение"].ЭлементУправления.СписокВыбора Цикл
			Если ЭлементСписка.Пометка Тогда	
				ИтоговаяСтрока = ?(ИтоговаяСтрока ="",?(ЭлементСписка.Значение="","   ",ЭлементСписка.Значение),""+ИтоговаяСтрока +";" +?(ЭлементСписка.Значение="","   ",ЭлементСписка.Значение)); 						
				ИтоговаяСтрокаУИД = ?(ИтоговаяСтрокаУИД ="",?(ЭлементСписка.Значение="","   ",XMLСТрока(ЭлементСписка.Значение)),""+ИтоговаяСтрокаУИД +";" +?(ЭлементСписка.Значение="","   ",XMLСТрока(ЭлементСписка.Значение))); 				
			КонецЕсли;	
		КонецЦикла;	
		Элемент.Значение = ИтоговаяСтрока;
		ТекСТрока.УИД =ИтоговаяСтрокаУИД; 
	КонецЕсли;

2. Корректировка xsd схемы выгрузки.

В Разделе Типы Объектов ЗначенияСвойства Добавляем новое свойство ЗначениеСвойства, и  в него добавляем свойство Значение

 

3. Корректировка  процедуры выгрузки  доп. свойств на сайт в модуле обмена Битрикс.


В модуле Б_ПроцедурыИФункцииВыгрузкиДанныхНаСайт В процедуре СформироватьВременныеТаблицыПоИнформацииОТоварахПакета()


В подзапросе

ЗапросПоСвойствам = "ВЫБРАТЬ РАЗРЕШЕННЫЕ

| СвойстваОбъектов.Ссылка КАК СвойствоНоменклатуры,

 

Добавляем строки

 

|ЗначенияСвойствОбъектов.УИД КАК УИД,
|ЕСТЬNULL(ЗначенияСвойствОбъектов.Свойство.МультиВыбор, ЛОЖЬ) КАК МультиВыбор
|ПОМЕСТИТЬ ВремЗначенияСвойствТовара

 

В модуле Б_ОбменССайтомСерверВыгрузкаДанных В процедуре ВыгрузитьСвойстваXDTO()  для нашего свойства с признаком мультивыбор, удаляем лишний тип значения с типом "Строка"

 

XDTOСвойство.ТипЗначений = "Строка";

Если  ТекСвойство.СвойствоНоменклатуры.Мультивыбор И Типы.Количество() = 2 Тогда
	//Типы.Удалить(0)
	КолвоЭлементовКоллекции = Типы.Количество(); 
	Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл 
		ЭлементКоллекции = Типы[КолвоЭлементовКоллекции - ОбратныйИндекс]; 
		
		Если ЭлементКоллекции = Тип("Строка") Тогда 
			Типы.Удалить(КолвоЭлементовКоллекции - ОбратныйИндекс); 
		КонецЕсли; 
		
	КонецЦикла; 
КонецЕсли;

Если НЕ Типы.Количество() <> 1 Тогда

Меняем Процедуру  ВыгрузитьСвойстваНоменклатурыXDTO(). Привожу процедуру целиком

Процедура ВыгрузитьСвойстваНоменклатурыXDTO(ПараметрыОбмена, Владелец, ВладелецТип, ВыборкаНоменклатуры, лМенеджерВременныхТаблиц);
	
	XDTOЗначенияСвойствТип 	= Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ПолучениеТипОбъектаXDTO(ПараметрыОбмена, "ЗначенияСвойств", Истина, ВладелецТип);
	XDTOЗначенияСвойстваТип = Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ПолучениеТипОбъектаXDTO(ПараметрыОбмена, "ЗначенияСвойства");
	XDTOЗначенияСвойствМножТип = Б_ОбщиеПроцедурыИФункцииОбменаССайтом.ПолучениеТипОбъектаXDTO(ПараметрыОбмена, "ЗначениеСвойства", Истина, XDTOЗначенияСвойстваТип);
	
	Запрос = Новый Запрос;
	запрос.МенеджерВременныхТаблиц = лМенеджерВременныхТаблиц;
	запрос.Текст =  "ВЫБРАТЬ *
	|ИЗ
	|	ВремЗначенияСвойствТовара КАК ВремЗначенияСвойствТовара
	|ГДЕ
	|	(ВремЗначенияСвойствТовара.Номенклатура = &Номенклатура)";
	
	Запрос.УстановитьПараметр("Номенклатура", ВыборкаНоменклатуры.Номенклатура);
	Выборка = Запрос.Выполнить();
	
	Если НЕ Выборка.Пустой() тогда	
		ВыборкаСвойств = Выборка.Выбрать();
		XDTOЗначенияСвойств = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначенияСвойствТип);
		
		Пока ВыборкаСвойств.Следующий() Цикл
			
			XDTOЗначенияСвойства = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначенияСвойстваТип);
			
			XDTOЗначенияСвойства.Ид = XMLСтрока(ВыборкаСвойств.ИдентификаторСвойства);
			
			МассивТипов =    ВыборкаСвойств.ИдентификаторСвойства.ТипЗначения.Типы(); 
			Если ВыборкаСвойств.МультиВыбор 
				И ТипЗНЧ(ВыборкаСвойств.Значение) = Тип("Строка") Тогда
				
				МассивПодстрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ВыборкаСвойств.УИД,";");
				Для Каждого ЗначениеЭлемента Из МассивПодстрок Цикл
					//ЭлементСвойства = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеЭлемента,Истина);
					
					//Для каждого Свойство из ВыборкаСвойств.Значение Цикл
					XDTOЗначенияМножСвойств = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначенияСвойствМножТип);
					XDTOЗначенияМножСвойств.Значение = ЗначениеЭлемента;
					XDTOЗначенияСвойства.ЗначениеСвойства.Добавить(XDTOЗначенияМножСвойств);
					//КонецЦикла;
					
				КонецЦикла;
				XDTOЗначенияСвойств.ЗначенияСвойства.Добавить(XDTOЗначенияСвойства);
				
			Иначе
				
				//XDTOЗначенияСвойства = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначенияСвойстваТип);
				//
				//XDTOЗначенияСвойства.Ид = XMLСтрока(ВыборкаСвойств.ИдентификаторСвойства);
				
				XDTOЗначенияСвойства.Значение.Добавить(XMLСтрока(ВыборкаСвойств.ИдентификаторЗначения));
				
				XDTOЗначенияСвойств.ЗначенияСвойства.Добавить(XDTOЗначенияСвойства);	
			КонецЕсли;	
			
		КонецЦикла;
		Владелец.ЗначенияСвойств = XDTOЗначенияСвойств;
	КонецЕсли;

	
КонецПроцедуры

С вышеприведенными доработками выгрузка  дополнительных свойств  из 1с в файле import будет иметь следующий вид

На стороне Битрикс ничего дорабатывать не надо, значения должны встать автоматом.

Основной недостаток данного решения - это отсутствие контроля ссылочной целостности, при удалении значений свойств. Чтобы не пропали данные необходимо предусмотреть дополнительные механизмы

Множественный выбор Битрикс Модуль обмена

См. также

API-интеграция 1С с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress для УТ11, КА2, ERP2, УНФ, БП3, Розница, УТ10, УПП1.3

Сайты и интернет-магазины Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Беларусь Россия Управленческий учет Платные (руб)

Модуль для интеграции с маркетплейсами ОЗОН, WildBerries, Я.Маркет, СберМегаМаркет, Стройландия, Леруа Мерлен, Hoff, AliExpress. При помощи расширения поддерживаются следующие методы: обмен остатками товаров, обмен ценами, обработка заказов, печать стикеров, загрузка отчетов комиссионеров по API (в том числе Я.Маркет). Подходит для конфигураций Беларуси. Поддержка искусственного интелекта GigaChat

59990 руб.

05.09.2023    8142    123    74    

78

Оплата покупок "Долями" в 1С:Розница 2.3 (для работы с сервисом dolyame.ru)

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку.

18000 руб.

19.12.2023    1465    10    3    

7

Обмен данными с сайтом. БП 3.0

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обмен данными с сайтом на платформе 1С:Битрикс (и подобными) для 1С: Бухгалтерия предприятия 3.0.

12000 руб.

18.03.2019    31483    110    100    

63

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17854    6    15    

13

Универсальный парсер интернет-магазинов

Оптовая торговля Розничная торговля Сайты и интернет-магазины Платформа 1С v8.3 Управляемые формы 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

С того времени, как я начал парсить сайты, прошло много лет. За это время я спарсил более 100 сайтов и записал эти товары в 1С. В итоге на свет появился универсальный парсер, который поможет Вам спарсить интернет-магазин и при этом не написать ни строчки кода.

9600 руб.

19.10.2018    52153    220    99    

111

Выгрузка для АВИТО

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 Россия Платные (руб)

Выгрузка товаров услуг из 1С для сайта "Авито" раздел "Автозагрузка" выполнена в виде обработки. Обработка подходит для конфигураций УТ, УНФ и Розница. Данная обработка позволяет создавать шаблон с объявлениями для "Авито" - "Автозагрузка".

4200 руб.

07.06.2022    15603    42    56    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. smarsel 23.03.20 15:13 Сейчас в теме
Думаю отличная вещь! Нужно реализовать! В свое время искал везде, не нашел, смирился. А вот и попалась! Спасибо.
+
2. gernad 22.04.20 19:32 Сейчас в теме
Прекрасная идея! Правда, не удалось привести эту доработку в рабочее состояние по вашей инструкции.

Не совсем понятно, где именно вы размещаете блок кода:

|ЗначенияСвойствОбъекта.УИД КАК УИД,
|ЕСТЬNULL(ЗначенияСвойствОбъекта.Свойство.МультиВыбор, ЛОЖЬ) КАК МультиВыбор
|ПОМЕСТИТЬ ВремЗначенияСвойствТовара
+
3. handscenter 60 28.04.20 11:40 Сейчас в теме
(2) ищите в этой процедуре часть запроса помещающую выборку во временную таблицу и размещайте перед ней

|ПОМЕСТИТЬ ВремЗначенияСвойствТовара
+
4. jo0506 19 02.07.20 07:03 Сейчас в теме
попытался все это запихнуть в стандартный обмен ут 10.3. Версия 2.04 Commerce XML.
битрикс почемуто не хавает...

				<ЗначенияСвойств>
					<ЗначенияСвойства>
						<Ид>62bc665a-dabb-11e5-8a52-7824af9d7d33</Ид>
						<ЗначенияСвойства>
							<Значение>38c39af6-b218-11ea-a815-7824af9d7d33</Значение>
						</ЗначенияСвойства>
						<ЗначенияСвойства>
							<Значение>38c39afb-b218-11ea-a815-7824af9d7d33</Значение>
						</ЗначенияСвойства>
						<ЗначенияСвойства>
							<Значение>fe2543d6-7bf2-11e7-9842-7824af9d7d33</Значение>
						</ЗначенияСвойства>
						<ЗначенияСвойства>
							<Значение>62bc665d-dabb-11e5-8a52-7824af9d7d33</Значение>
						</ЗначенияСвойства>
					</ЗначенияСвойства>
					<ЗначенияСвойства>
						<Ид>383d7c9d-e02b-11e5-8a52-7824af9d7d33</Ид>
						<Значение>Китай</Значение>
					</ЗначенияСвойства>
				</ЗначенияСвойств>
Показать
+
5. user906423 03.08.20 17:12 Сейчас в теме
Здравствуйте. По вашей инструкции, я не смог сделать. Видимо Вы не до конца всё описали. В итоге, у меня так и открывается старая форма выбора значения свойства, и я не понял как мне сделать "галку" "Множественное".

Скачать ваш файл я не могу, т.к. на счету нет стартмани. Но если бы кто-нибудь мне его отправил на почту, я был бы очень признателен.

Или можете ли более подробно расписать инструкцию.

О и забыл, где это искать??? по ходу у меня этого нет
2. Корректировка xsd схемы выгрузки.

В Разделе Типы Объектов ЗначенияСвойства Добавляем новое свойство ЗначениеСвойства, и в него добавляем свойство Значение
+
6. PAAG 22.12.20 18:37 Сейчас в теме
К сожалению, авто р не указал, как будет после модификации работать сам функционал свойств касательно универсальных отчетов, ведь там можно ко многим отчетам добавить свойства и категории и потом их использовать (выводить, отбирать и т.д.)
Если мы будем хранить список в строке, то никакие отборы уже штатно работать не будут.
+
7. RustIG 1408 01.03.21 21:07 Сейчас в теме
Идея интересная.Реализация красивая. Может пригодиться.
+
8. RustIG 1408 01.03.21 23:03 Сейчас в теме
Можно ведь просто передать список значений в виде одной строки, а на стороне битрикса загрузить эту строку - разложить на составляющие - тогда городить в 1с такой механизм не нужно будет....
Раздельно выгружать значения имеет смысл, когда на каждое такое значение своя цена и свой остаток....
Но уже реализовано через механизм характеристик....
Пока у меня мнение 50/50 - понимания зачем это нужно нет, но сделано красиво в плане создания строки значений через выделения флажками ...
+
9. aurumm 65 04.03.21 17:39 Сейчас в теме
(8)Можно, при условии, что на стороне битрикса адекватные спецы, а не ждут что им из 1с все разжуют и готовое пришлют. Такие костыли как этот механизм, явно не от хорошей жизни ваяются.
+
10. RustIG 1408 04.03.21 18:33 Сейчас в теме
(9) так значит, 1с-ники могут решить, а разрабы битрикс простую задачу - разложить строку на значения не могут.... я думаю в битрикс как и в 1с адекватные спецы....
+
11. zhernikov 27.04.21 05:49 Сейчас в теме
12. Designer1C 448 24.08.21 15:18 Сейчас в теме
Хорошо, что автор этой публикации разместил ссылку на исходную информацию : https://dev.1c-bitrix.ru/community/forums/messages/forum26/topic19114/message33591­1/#message335911
Я тоже воспользовался этой ссылкой и успешно добавил в свою конфигурацию доработки :
1)Хранение списка значений для требуемого значения. Правда я добавил табличную часть "Значения свойств объектов " в справочник "Номенклатура". Мне это даёт контроль ссылочной целостности и возможности табличной части. Табличная часть доступна только для свойств номенклатуры, которым проставлен флажок "Множественные значения

2)Внесение доработки в XSD-схему выгрузки. Я вручную в текст файла xsd добавил требуемый кусок.
А понять, какой кусок текста требуется добавить - выполнил сравнение схем XSD до изменения и после.
XDTO_DEFAULT - XDTO_NEW (у файлов в примере нет расширения !, но для загрузки в макет желательно указывать расширение)
Схемы XSD скачиваются по ссылке, если перейти на указанную автором (и мною продублированную) страницу с форума Битрикс
А также я прикрепил этот архив к своему сообщению.

3)Доработка общего модуля выгрузки. В моём случае данные собираются из таблицы значений номенклатуры для указанного свойства
Прикрепленные файлы:
MultiProp.zip
+
13. aurumm 65 25.08.21 11:27 Сейчас в теме
(12) Я побоялся делать, как описано в статье по ссылке. не знаешь какие проблемы могут вылезти, если изменить регистр значения свойств объектов, в котором хранятся значения свойств многих объектов. Плюс мой метод более визуально красивый и удобный пользователю. НО жирный минус отсутствие ссылочной целостности
Designer1C; +1
14. JIexa_74 15.02.22 14:54 Сейчас в теме
Здравствуйте. Вопрос. А сколько может быть значений в этом мультивыборе?
+
15. aurumm 65 15.02.22 15:18 Сейчас в теме
(14)тот пример, что приведен в статье все ограничивается длинной строки в 1024 символа, достаточно много, но не бесконечно
+
16. JIexa_74 15.02.22 15:39 Сейчас в теме
(15) Печально( А как быть если больше 1024 символа интересно?
+
17. jo0506 19 26.05.22 10:43 Сейчас в теме
Добавлю еще в код:
1) В плане видов характеристик, в Модуле формыЭлемента добавляем В процедуру ОбновлениеОтображения() в конец код:
Если Строка(ТипЗначения) = "Строка, Значения свойств объектов" Тогда
		ЭлементыФормы.Мультивыбор.Доступность=Истина;
	Иначе
		ЭлементыФормы.Мультивыбор.Доступность=Ложь;
		Если Мультивыбор Тогда
			Мультивыбор=Ложь;
		КонецЕсли;
КонецЕсли;
Показать


Так сказать защита от неумного пользователя)).
+
Внимание! Тема сдана в архив