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

27.04.20

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Множественный выбор р в дополнительных свойствах при обмене с сайтом на Битрикс:
.zip 11,13Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

Используемые конфигурации: Управление торговлей 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 будет иметь следующий вид

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

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

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

См. также

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

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

20400 руб.

19.12.2023    5098    37    11    

35

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17780    19    22    

16

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

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

5040 руб.

04.05.2021    19845    13    17    

16

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

В настоящее время система СБП очень часто стала использоваться в повседневной жизни. Одна из систем интеграции СБП через СБЕР. Данная конфигурация является инструментом интеграции СБП в Альфа Авто. Данная система не просто формирует статический QR, а динамический, а значит, в системе будет привязка и на покупателя, и на документ.

7200 руб.

25.10.2022    6306    33    4    

11

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

Программа позволяет одним кликом настроить сбор цен ваших конкурентов или дилеров в интернете. Автоматически собирает данные результата поиска Яндекса (вам не придется вручную добавлять каждый сайт, за которым нужно следить). Обновление цен происходит по заданному вами расписанию автоматически. Можете легко отслеживать позиции вашего сайта в Яндексе по ключевым словам и фразам. Этот инструмент даст вам лучшее понимание того, как ваша SEO-стратегия влияет на видимость вашего сайта в поисковой выдаче, и поможет вам улучшить контент и структуру сайта для повышения его позиций. Функция доступна во всех тарифах.

19950 руб.

23.09.2019    31021    7    12    

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

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

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

|ПОМЕСТИТЬ ВремЗначенияСвойствТовара
4. jo0506 20 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 1747 01.03.21 21:07 Сейчас в теме
Идея интересная.Реализация красивая. Может пригодиться.
8. RustIG 1747 01.03.21 23:03 Сейчас в теме
Можно ведь просто передать список значений в виде одной строки, а на стороне битрикса загрузить эту строку - разложить на составляющие - тогда городить в 1с такой механизм не нужно будет....
Раздельно выгружать значения имеет смысл, когда на каждое такое значение своя цена и свой остаток....
Но уже реализовано через механизм характеристик....
Пока у меня мнение 50/50 - понимания зачем это нужно нет, но сделано красиво в плане создания строки значений через выделения флажками ...
9. aurumm 66 04.03.21 17:39 Сейчас в теме
(8)Можно, при условии, что на стороне битрикса адекватные спецы, а не ждут что им из 1с все разжуют и готовое пришлют. Такие костыли как этот механизм, явно не от хорошей жизни ваяются.
10. RustIG 1747 04.03.21 18:33 Сейчас в теме
(9) так значит, 1с-ники могут решить, а разрабы битрикс простую задачу - разложить строку на значения не могут.... я думаю в битрикс как и в 1с адекватные спецы....
11. zhernikov 27.04.21 05:49 Сейчас в теме
12. Designer1C 457 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 66 25.08.21 11:27 Сейчас в теме
(12) Я побоялся делать, как описано в статье по ссылке. не знаешь какие проблемы могут вылезти, если изменить регистр значения свойств объектов, в котором хранятся значения свойств многих объектов. Плюс мой метод более визуально красивый и удобный пользователю. НО жирный минус отсутствие ссылочной целостности
Designer1C; +1 Ответить
14. JIexa_74 15.02.22 14:54 Сейчас в теме
Здравствуйте. Вопрос. А сколько может быть значений в этом мультивыборе?
15. aurumm 66 15.02.22 15:18 Сейчас в теме
(14)тот пример, что приведен в статье все ограничивается длинной строки в 1024 символа, достаточно много, но не бесконечно
16. JIexa_74 15.02.22 15:39 Сейчас в теме
(15) Печально( А как быть если больше 1024 символа интересно?
17. jo0506 20 26.05.22 10:43 Сейчас в теме
Добавлю еще в код:
1) В плане видов характеристик, в Модуле формыЭлемента добавляем В процедуру ОбновлениеОтображения() в конец код:
Если Строка(ТипЗначения) = "Строка, Значения свойств объектов" Тогда
		ЭлементыФормы.Мультивыбор.Доступность=Истина;
	Иначе
		ЭлементыФормы.Мультивыбор.Доступность=Ложь;
		Если Мультивыбор Тогда
			Мультивыбор=Ложь;
		КонецЕсли;
КонецЕсли;
Показать


Так сказать защита от неумного пользователя)).
Оставьте свое сообщение