Создание множественного дополнительного реквизита. Управление торговлей 11

Публикация № 802289 20.03.18

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

доработка обмен xml xsd битрикс множественный реквизит множественный выбор

Создание механизма множественного дополнительного реквизита для выгрузки в битрикс.

Здравствуйте, уважаемые читатели! 

Хочу поделиться своей реализацией множественного выбора дополнительного реквизита в Управлении торговлей 11 (проверено на 11.4.1.261) для последующей выгрузки его в интернет-магазин под управлением 1С битрикс. Для чего это потребовалось? В определенный момент менеджер интернет-магазина мне сказал: хочу увидеть весь ассортимент выбранного товара (условно назовем его Товар№1) красного, синего и зеленого цветов, как?. Сразу оговорюсь, что по ряду внутренних причин характеристики мы не используем, возможно, с ними будет совсем другая история, но поскольку данный вопрос возникает периодически, я решил написать эту статью. Так вот, в УТ цвет это у нас дополнительный реквизит и соответственно он может принимать только одно значение. На сайте это выглядит как выбор из списка, а требуется чтобы можно было отмечать галочкой несколько значений.

з.ы. это моя первая публикация (не только на ИС, но и вообще), не судите строго :)

Итак, начнем. Весь процесс доработки можно разделить на 3 этапа:

  1. Доработка механизма создания и вывода на форму дополнительных реквизитов.
  2. Доработка xsd схемы.
  3. Доработка выгрузки на сайт.

1. Доработка механизма создания и вывода на форму дополнительных реквизитов.

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

Чтобы получать ссылку на нужный элемент ПВХ, я добавил функцию в модуль УправлениеСвойствамиСлужебный

Функция ПолучитьУИДМножественногоСвойства() Экспорт
    Возврат "859484ef-7e0a-11e7-8111-3863bb43122b";
КонецФункции

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

Перед ним добавим следующий код:

лУИД = Новый УникальныйИдентификатор(ПолучитьУИДМножественногоСвойства());
МножественноеСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку(лУИД);
ЭтоПервый = Истина;

А в теле цикла будем отлавливать наше свойство следующим образом:

Если Строка.Свойство = МножественноеСвойство Тогда
    Если ЭтоПервый Тогда
        ЭтоПервый = Ложь;
    Иначе 
        фКэшОписания = ОписаниеСвойства;
        ОписаниеСвойства = ОписаниеСвойств.Добавить();
        ЗаполнитьЗначенияСвойств(ОписаниеСвойства, фКэшОписания);
    КонецЕсли;
КонецЕсли;

В итоге должна получится следующая картина:

После этого переходим к созданию элементов на форме. Тут логика следующая, каждый дополнительный реквизит в своем наименовании имеет уникальный идентификатор и тем самым обеспечивается уникальность (простите за тавтологию) имен элементов формы. Поэтому нам необходимо пронумеровать наш реквизит в момент создания. За это отвечает процедура ЗаполнитьДополнительныеРеквизитыВФорме общего модуля УправлениеСвойствами.

Находим в ней строку

Для каждого ОписаниеСвойства Из ОписаниеСвойств Цикл

Перед началом этого цикла вставим счетчик, например:

СчСвойств = 1;

А в теле цикла, после строки

ОписаниеСвойства.ИмяУникальнаяЧасть = ...

добавим наш код:

Если СтрНайти(Строка(ОписаниеСвойства.Свойство.УникальныйИдентификатор()), УправлениеСвойствамиСлужебный.ПолучитьУИДМножественногоСвойства()) > 0 Тогда             
    ОписаниеСвойства.ИмяУникальнаяЧасть = ОписаниеСвойства.ИмяУникальнаяЧасть    +"_"+ Строка(СчСвойств);            
    СчСвойств = СчСвойств + 1;                                                  
КонецЕсли;

Получается такая картина:

Дальше, чтобы не заморачиваться с формой при обновлении, добавляем ее в расширение. Добавляем событие ПриСозданииНаСервере с типом вызова "После", в нем создаем кнопку для копирования и заполним технические реквизиты. На форму потребуется добавить 2 реквизита:

1. МножВыборИмя - тип строка, хранит имя дополнительного реквизита без индекса

2. СчСвойств - тип число, хранит текущий индекс дополнительного реквизита.

 
 Полный текст модуля формы в расширении

После этих действий у вас должно получиться что-то подобное:

Если нужно добавить кнопку удаления реквизитов, то, думаю, у вас не возникнет с этим больших проблем :)

2. Доработка xsd схемы.

Если вы не знакомы с этой темой, то в интернете полно информации с подробным описанием, расписывать детально тут не буду. Схема находится в плане обмена Б_ОбменССайтом в макете СхемаXSDОбмена. Сохраняем в файл, открываем и находим там строку

<xs:complexType name="ЗначенияСвойства">

после элемента "Значение" добавляем следующий код

<xs:element name="ЗначениеСвойства" minOccurs="0" maxOccurs="unbounded" >
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Значение" type="tns:ЗначениеТип" maxOccurs="1" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>

В итоге должно получится следующее: 

Далее обновляем макет в плане обмена и сохраняем конфигурацию. Все, xsd схема готова.

3. Доработка выгрузки на сайт.

Итак, мы на финишной прямой. Еще чуточку усилий и все будет готово!

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

в ней ищем строку:

XDTOСвойство.Наименование	= Лев(ТекСвойство.Наименование, 250);

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

Если СтрНайти(XDTOСвойство.Ид, УправлениеСвойствамиСлужебный.ПолучитьУИДМножественногоСвойства()) Тогда
	XDTOСвойство.Множественное = Истина;
КонецЕсли;

Далее нам нужно подкорректировать процедуру ВыгрузитьСвойстваНоменклатурыXDTO. Она не очень большая, поэтому приведу ее листинг с доработками. 

 
 Процедура ВыгрузитьСвойстваНоменклатурыXDTO

 

Вот и все, после этих манипуляций, xml код файла для битрикса должен выглядеть примерно так:

Битрикс такую структуру понимает и никаких действий со стороны сайта делать не требуется. Если вы все сделали правильно, то все должно работать.

p.s. 

Хочу поблагодарить Сергея Главатских за его идею копирования дополнительных реквизитов, а так же парней из ветки https://dev.1c-bitrix.ru, без них у меня бы ничего не получилось.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. EmpireSer 21.03.18 00:47 Сейчас в теме
По мне "ЗначениеСвойства" в XSD задан "не красиво". Можно было всё в одном месте указать:
<xs:element name="ЗначениеСвойства" type="tns:ЗначениеТип" minOccurs="0" maxOccurs="unbounded" />

Так же можно было доработать доп. реквизит так, что бы он просто принимал "СписокЗначений", а не делать копирование. По моему мнению это получилось "элегантнее".
shurik_shurik; +1 Ответить
2. bad_wag 44 21.03.18 11:06 Сейчас в теме
(1) В начале я так и пытался сделать, но для этого потребовалось дорабатывать поддержку списков значений доп реквизитами, а это, на мой взгляд, гораздо сложнее данной реализации
3. vis_tmp 31 11.05.18 18:15 Сейчас в теме
Спасибо, очень познавательно про множественные доп. реквизиты.
6. bad_wag 44 06.06.18 02:00 Сейчас в теме
4. mark_oilbass 05.06.18 14:07 Сейчас в теме
5. bad_wag 44 06.06.18 01:59 Сейчас в теме
9. itdvl 28 16.08.18 06:41 Сейчас в теме
(5) не понимаю как сделать кнопку удалить. Не подскажете?
7. mark_oilbass 04.07.18 15:39 Сейчас в теме
Коллеги, подскажите пожалуйста! как быть если множественных реквизитов несколько? Я в плане видов характеристик создал реквизит МножественныйРеквизит и с помощью него получаю все множественные доп свойства. Перед выгрузкой свойств формирую запрос результатом, которого является список всех множественных свойств и дальше делаю такие же проверки как в этой статье. Прикрепляю файл с кодом. Заработает ли такой код?
Прикрепленные файлы:
Код.txt
8. mark_oilbass 05.07.18 11:24 Сейчас в теме
10. EliWalles 27.05.19 10:02 Сейчас в теме
Возможно ли вынести функции в расширение и воспользоваться &Вместо("ЗаполнитьДополнительныеРеквизитыВФорме") такой конструкцией, что бы не менять конфигурацию, будет работать?
УИД - это в XML файле экспорта поле <Ид>?
11. bad_wag 44 27.05.19 13:41 Сейчас в теме
(10) Вынести в расширение можно, работать будет, но при обновлениях конфигурации надо будет следить за изменениями в этой функции. Про УИД сейчас не вспомню, можно посмотреть отладчиком или выгрузить в файл там уже глянуть
12. goodwill 20 02.07.19 15:40 Сейчас в теме
Большое спасибо за выложенный материал, очень помог.

Хочу добавить от себя немного, Мне показалось не очень удачным определять множественный реквизит по GUID, в разных базах они разные и код получается не универсальным. Так же нет возможности добавить несколько множественных реквизитов. Для того что бы это исправить я добавил в ПланВидовХарактеристик.ДополнитеотныеРеквизитыИСведения новый реквизит МножественныйРеквизит

Изменения от первоначальной статьи следующие
1) Функция ПолучитьУИДМножественногоСвойства() не нужна
2) В модуле УправлениСвойствами

Если ОписаниеСвойства.Свойство.МножественныйРеквизит Тогда
	ОписаниеСвойства.ИмяУникальнаяЧасть = ОписаниеСвойства.ИмяУникальнаяЧасть    +"_"+ Строка(СчСвойств);            
	СчСвойств = СчСвойств + 1;                                                  
КонецЕсли;


3) УправлениеСвойствамиСлужебный


// < -- xs
СоответствиеСвойствЭтоПервый = Новый Соответствие;
// xs -- > 
	
// Заполнение значений свойств.
Для Каждого Строка Из ДополнительныеСвойстваОбъекта Цикл
	ОписаниеСвойства = ОписаниеСвойств.Найти(Строка.Свойство, "Свойство");
	Если ОписаниеСвойства <> Неопределено Тогда
		
		// < -- xs
		Если СоответствиеСвойствЭтоПервый.Получить(Строка.Свойство) = Неопределено Тогда
			СоответствиеСвойствЭтоПервый.Вставить(Строка.Свойство, Истина);
		КонецЕсли; 
		
		Если Строка.Свойство.МножественныйРеквизит Тогда
			
			Если СоответствиеСвойствЭтоПервый.Получить(Строка.Свойство) Тогда
				СоответствиеСвойствЭтоПервый.Вставить(Строка.Свойство, Ложь);
			Иначе 
				фКэшОписания = ОписаниеСвойства;
				ОписаниеСвойства = ОписаниеСвойств.Добавить();
				ЗаполнитьЗначенияСвойств(ОписаниеСвойства, фКэшОписания);
			КонецЕсли;
		КонецЕсли;
		// xs -- > 

		// Поддержка строк неограниченной длины.
		Если НЕ ЭтоДополнительноеСведение
		   И ИспользоватьНеограниченнуюСтроку(
		         ОписаниеСвойства.ТипЗначения, ОписаниеСвойства.МногострочноеПолеВвода)
		   И НЕ ПустаяСтрока(Строка.ТекстоваяСтрока) Тогда 
			
			ОписаниеСвойства.Значение = Строка.ТекстоваяСтрока;
		Иначе
			ОписаниеСвойства.Значение = Строка.Значение;
			КонецЕсли;
	КонецЕсли;
КонецЦикла;
Показать


4) Форма элемента справочника Номенклатура, так же добавил туда кнопку удаления реквизита.


&НаСервере
Процедура хот_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	НоваяКоманда = ЭтаФорма.Команды.Добавить("СкопироватьСвойство");
	НоваяКоманда.Заголовок = "+";
	НоваяКоманда.Действие = "хот_СкопироватьСвойство";
	
	НоваяКоманда = ЭтаФорма.Команды.Добавить("УдалитьСвойство");
	НоваяКоманда.Заголовок = "-";
	НоваяКоманда.Действие = "хот_УдалитьСвойство"; 
	
	Для каждого стрДополнительногоРеквизита Из ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов Цикл
		
		Если НЕ стрДополнительногоРеквизита.Свойство.МножественныйРеквизит Тогда
			Продолжить;
		КонецЕсли; 
			
		Если Элементы.Найти("КнопкаСкопироватьСвойство") = Неопределено Тогда
			НоваяКнопка = Элементы.Добавить("КнопкаСкопироватьСвойство", Тип("КнопкаФормы"),   Элементы.Найти("ГруппаДополнительныеРеквизитыКнопки"));
			НоваяКнопка.ИмяКоманды = "СкопироватьСвойство";
		КонецЕсли; 
		
	КонецЦикла; 
	
	спМножественныхСвойств = ПолучитьСписокМножественныхСвойств();
	Если спМножественныхСвойств.Количество() > 0 Тогда
		НоваяКнопка = Элементы.Добавить("КнопкаУдалитьСвойство", Тип("КнопкаФормы"), Элементы.Найти("ГруппаДополнительныеРеквизитыКнопки"));
		НоваяКнопка.ИмяКоманды = "УдалитьСвойство";
	КонецЕсли;
		
КонецПроцедуры

&НаСервере
Функция ПолучитьСписокМножественныхСвойств()
	
	спМножественныхСвойств = Новый СписокЗначений;
	
	вт_Свойства = ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.Выгрузить();
	вт_Свойства.Колонки.Добавить("Счетчик");
	вт_Свойства.ЗаполнитьЗначения(1, "Счетчик");
	вт_Свойства.Свернуть("Свойство", "Счетчик");
	
	Для Каждого стрСвойство из вт_Свойства Цикл 
		Если стрСвойство.Счетчик > 1 Тогда
			спМножественныхСвойств.Добавить(стрСвойство.Свойство);
		конецЕсли
	КонецЦикла;
	
	Возврат спМножественныхСвойств;
	
КонецФункции

&НаСервере
Функция ПолучитьСписокМножественныхСвойствВсе()
	
	спМножественныхСвойств = Новый СписокЗначений;
	
	Для каждого стрДополнительногоРеквизита Из ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов Цикл
		
		Если НЕ спМножественныхСвойств.НайтиПоЗначению(стрДополнительногоРеквизита.Свойство) = Неопределено Тогда
			Продолжить;
		КонецЕсли; 
		
		Если стрДополнительногоРеквизита.Свойство.МножественныйРеквизит Тогда
			спМножественныхСвойств.Добавить(стрДополнительногоРеквизита.Свойство);
		КонецЕсли; 
		
	КонецЦикла;
	
	Возврат спМножественныхСвойств;
	
КонецФункции

&НаКлиенте
Процедура хот_СкопироватьСвойство()
	
	спМножественныхСвойств = ПолучитьСписокМножественныхСвойствВсе();
	
	Оповещение = Новый ОписаниеОповещения("хот_ПослеВыбораИзМеню", ЭтотОбъект);
	ПоказатьВыборИзМеню(Оповещение, спМножественныхСвойств, Элементы.КнопкаСкопироватьСвойство);
	
КонецПроцедуры

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

&НаКлиенте
Процедура хот_ПослеВыбораИзМеню(ВыбранныйЭлемент, Параметры) Экспорт
	Если НЕ ВыбранныйЭлемент = Неопределено Тогда
		хот_ДобавитьРеквизиты(ВыбранныйЭлемент.Значение)
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура хот_ПослеВыбораИзМенюУдалитьСвойство(ВыбранныйЭлемент, Параметры) Экспорт
	Если НЕ ВыбранныйЭлемент = Неопределено Тогда
		УдалитьСвойство(ВыбранныйЭлемент.Значение.ИмяРеквизитаЗначение);
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура УдалитьСвойство(ИмяРеквизитаЗначение)
	Элементы.Удалить(Элементы.Найти(ИмяРеквизитаЗначение));
	
	НайденныеСтроки = ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(Новый Структура("ИмяРеквизитаЗначение", ИмяРеквизитаЗначение));
	Для Каждого стрСвойство Из НайденныеСтроки Цикл 
		ЭтаФорма.Свойства_ОписаниеДополнительныхРеквизитов.Удалить(стрСвойство);
	КонецЦикла;
	
Конецпроцедуры

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

&НаСервереБезКонтекста
Процедура ДобавитьСвойство(лФорма, ИмяРеквизита, Свойство)

	лШаблон = лФорма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(Новый Структура("Свойство", Свойство));
	НовоеСвойство = лФорма.Свойства_ОписаниеДополнительныхРеквизитов.Добавить();
	
	Если лШаблон.Количество() > 0 Тогда
		ЗаполнитьЗначенияСвойств(НовоеСвойство, лШаблон[0]);
		НовоеСвойство.ИмяРеквизитаЗначение = ИмяРеквизита;
	КонецЕсли;
	
КонецПроцедуры


Показать


5) Модуль Б_ОбменССайтомСерверВыгрузкаДанных

Процедура ВыгрузитьСвойстваXDTO

// < -- xs
XDTOСвойство.Множественное = ТекСвойство.СвойствоНоменклатуры.МножественныйРеквизит;
// xs -- > 


Процедура ВыгрузитьСвойстваНоменклатурыXDTO


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

		Владелец.ЗначенияСвойств = XDTOЗначенияСвойств;
	КонецЕсли;
	
КонецПроцедуры

Показать
Прикрепленные файлы:
nemec; Varozh; Buхter; bonya_by; chng; user1136006; +6 Ответить
13. bad_wag 44 02.07.19 18:09 Сейчас в теме
(12) Спасибо! Ну я решал свою задачу, по этому об универсальности не думал, но вы развернулись на широкую ногу! Хоть в типовую переноси :) Отличное дополнение
14. Djo82 80 04.07.19 15:17 Сейчас в теме
с кнопками не разобрался, если не сложно поясните подробнее
15. Djo82 80 04.07.19 16:51 Сейчас в теме
16. user1136006 07.08.19 11:54 Сейчас в теме
(12) Прекрасное решение, спасибо! Но обнаружил проблему: если было выбрано несколько значений, а потом меньшее количество - предыдущий выбор сохраняется. Наверное, надо каким-то образом очищать реквизиты во время загрузки, может быть проблема только у меня...
17. RSTR 07.09.19 13:16 Сейчас в теме
bad_wag, просьба-вопрос к вам. Можете ли вы сделать настройку данной доработки в нашей базе? Сделали всё по инструкции, в УТ множественный реквизит появился, но в файл обмена с Битриксом этот реквизит не попадает.. УТ (11.4.6.174), Битрикс 7.0.1.21
Сколько это будет стоить?
18. Djo82 80 31.01.20 19:33 Сейчас в теме
Статья помогла решить задачу. Спасибо!

Но не отработала процедура "ВыгрузитьСвойстваНоменклатурыXDTO" при условии, что присутствует несколько множественных свойств. Подсмотрел исходники от партнеров с Битрикс. Немного подправил процедуру и файл "СхемаXSDОбмена". Вдруг кому поможет.

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

				XDTOЗначенияСвойства = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначенияСвойстваТип);
				
				XDTOЗначенияСвойства.Ид = XMLСтрока(ВыборкаСвойств.ИдентификаторСвойства);
				Если НЕ ВыборкаСвойств.БулевоЗначение тогда
					Если НЕ ТипЗнч(ВыборкаСвойств.Значение) = Тип("СписокЗначений") Тогда
						XDTOЗначенияСвойства.Значение.Добавить(XMLСтрока(ВыборкаСвойств.ИдентификаторЗначения));
					Иначе
						Для каждого Свойство из ВыборкаСвойств.Значение Цикл
							XDTOЗначенияМножСвойств = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначенияСвойствМножТип);
							XDTOЗначенияМножСвойств.Значение = XMLСтрока(Свойство.Значение);
							XDTOЗначенияСвойства.ЗначениеСвойства.Добавить(XDTOЗначенияМножСвойств);
						КонецЦикла;
					КонецЕсли;
				Иначе
					XDTOЗначенияСвойства.Значение.Добавить(Строка(ВыборкаСвойств.ИдентификаторЗначения));
				КонецЕсли;
				
				XDTOЗначенияСвойств.ЗначенияСвойства.Добавить(XDTOЗначенияСвойства);
				
		КонецЦикла;
		Владелец.ЗначенияСвойств = XDTOЗначенияСвойств;
	КонецЕсли;
КонецПроцедуры

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

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


Показать


Немного другой текст в "СхемаXSDОбмена"

<xs:complexType name="ЗначенияСвойства">
        <xs:sequence>
            <xs:element name="Ид" type="tns:ИдентификаторГлобальныйТип" />
            <xs:element name="Наименование" type="tns:НаименованиеТип" minOccurs="0" />
            <xs:element name="Значение" type="tns:ЗначениеТип" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="ЗначениеСвойства" minOccurs="0" maxOccurs="unbounded" >
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Значение" type="tns:ЗначениеТип" maxOccurs="1" />
                    </xs:sequence>
				</xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
Показать
19. user691380_bel4enkin 18.04.20 14:18 Сейчас в теме
А случайно никто не выкладывал подобное расширение под УТ11.4 чтобы не изучать все тонкости? Интересует множественный реквизит с выгрузкой на сайт Opencart
20. ArturShaibakov 09.02.21 20:47 Сейчас в теме
Для 1с Розница, редакция 2.3 (2.3.5.35), дальше первого пункта делать ничего не нужно, все работает.
21. user1375596 20.08.21 20:08 Сейчас в теме
вы уверены, что Битрикс умеет парсить такую конструкцию?

					<ЗначенияСвойства>
						<Ид>e94be4ad-fb60-11eb-80e2-c643fff9747c</Ид>
						<Значение>
							<Значение>f237f346-fb60-11eb-80e2-c643fff9747c</Значение>
							<Значение>f237f347-fb60-11eb-80e2-c643fff9747c</Значение>
							<ЗначенияСвойства>
								<Значение>f237f346-fb60-11eb-80e2-c643fff9747c</Значение>
							</ЗначенияСвойства>
							<ЗначенияСвойства>
								<Значение>f237f347-fb60-11eb-80e2-c643fff9747c</Значение>
							</ЗначенияСвойства>
						</Значение>
					</ЗначенияСвойства>
Показать



У меня БУС 21.400.300 не воспринимает такой массив.
22. user1375596 21.08.21 08:54 Сейчас в теме
23. sderzhu 10.11.22 16:30 Сейчас в теме
Если СтрНайти(XDTOЗначенияСвойства.Ид, УправлениеСвойствамиСлужебный.ПолучитьУИДМножественногоСвойства()) > 0 Тогда
				XDTOЗначениеСвойстваМнож = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначениеСвойства_МножТип);
				XDTOЗначениеСвойстваМнож.Значение = XMLСтрока(ВыборкаСвойств.ИдентификаторЗначения);
				
			    XDTOЗначенияСвойства_Множ.Ид = XMLСтрока(ВыборкаСвойств.ИдентификаторСвойства);
				XDTOЗначенияСвойства_Множ.ЗначениеСвойства.Добавить(XDTOЗначениеСвойстваМнож);
				//XDTOЗначенияСвойства_Множ.Значение.Добавить(XMLСтрока(ВыборкаСвойств.ИдентификаторЗначения));
				Продолжить;
			КонецЕсли;
Показать

Закоменченная строка не нужна - лишнее это...

И, кстати, если нужно полностью очистить множественное значение, нужно обязательно послать пустое значение:

XDTOЗначениеСвойстваМнож = ПараметрыОбмена.МояФабрикаXDTO.Создать(XDTOЗначениеСвойства_МножТип);
				XDTOЗначениеСвойстваМнож.Значение = XMLСтрока("");
Оставьте свое сообщение

См. также

xPath в 1С

Файловый обмен (TXT, XML, DBF), FTP Языки и среды Платформа 1С v8.3 Бесплатно (free)

Опыт работы методами языка xPath в 1С.

04.03.2023    2981    DemetrKlim    39    

40

Работа с ФабрикойXDTO без ПакетовXDTO

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Как можно использовать ФабрикуXDTO при невозможности создавать необходимые ПакетыXDTO в конфигурации.

16.02.2023    2235    DemetrKlim    28    

38

Инструменты обмена данными через xml используя сериализацию объектов

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Восстановление справочников, документов, регистров сведений из копии через xml, используя сериализацию объектов. Выгрузка/загрузка объектов базы данных в xml, используя сериализацию. Выгрузка/загрузка таблицы значений в xml, используя сериализацию.

24.01.2023    1212    andrey1508    8    

29

Создание и использование периферийной базы в 1С: Предприятие 8.3 8

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Здравствуйте, коллеги! В данной статье разберемся в том, как работает распределенная информационная база и периферийная база, подробно рассмотрим этапы ее создания и настройки. Периферийная база в 1С Предприятие 8.3 8 является частью РИБ (распределенная информационная база) и позволяет синхронизировать две или более используемые информационные базы, как правило, удаленных друг от друга, где используется загрузка файлов документов и их выгрузка, которую можно передавать по электронной почте или возможна передача файлов FTP путем один или несколько раз в день с любой периодичностью.

26.09.2022    1630    Koder_Line    2    

1

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.

Пример разработки инструмента загрузки данных SAP в 1С

Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Это описание конкретного примера программной реализации инструмента интеграции программ SAP и 1С, когда учет ведется в обеих программах. В нашем случае данные из SAP загружаются и интерпретируются в объекты данных 1С.

14.09.2022    1250    Anirina    3    

7

Ошибка при взаимодействии УПП с ФСС - 2

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет ФОМС, ЕФС Бесплатно (free)

При попытке отправить в УПП ответ на запрос ФСС для расчета пособия при рождении ребенка, получаем вот такой исчерпывающий ответ: Ошибка формата сообщения, Unknown format message. И что с этим делать, совершенно непонятно. Если так отвечает сервис ФСС, то похожие проблемы могут возникать и в других конфигурациях. Проблему удалось решить, но пришлось потратить пару дней. Возможно, мои заметки позволят вам в похожей ситуации решить проблему быстрее.

19.08.2022    2331    alex_bob    4    

8

Обход по группировкам в запросе, соединение таблиц, параметры в запросе, выгрузка прайс-листа в Excel, PDF, Docx, TXT

Запросы Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В помощь начинающим программистам. Использую обработку из предыдущей моей публикации для разработки выгрузки Прайс-листа в Excel, PDF, Docx, TXT. Рассмотрю, как работает обход результата запроса ПоГруппировкам (релиз платформы 1С:Предприятие 8.3 (8.3.20.1674), самописная конфигурация).

18.07.2022    3336    Pproksima    2    

8

Создание обработки для выгрузки в Excel, PDF, Docx, TXT (управляемые формы)

Загрузка и выгрузка в Excel Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В помощь начинающим программистам. Создание простой обработки для выгрузки табличного документа в файлы различных форматов, на примере справочника Контрагенты (релиз платформы 1С:Предприятие 8.3 (8.3.20.1674), самописная конфигурация).

18.07.2022    3425    Pproksima    6    

6

Выгрузка версии хранилища в XML файлы

Файловый обмен (TXT, XML, DBF), FTP Групповая разработка (Git, хранилище) Платформа 1С v8.3 Бесплатно (free)

Скрипт, выполняющий выгрузку произвольной версии из хранилища в XML.

17.03.2022    1031    kraynev-navi    2    

7

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Доработка УПП 1.3 для выгрузки без ЭДО файлов всех сотрудников из документа "Сведения о застрахованных лицах, ФСС" для СБИС

Зарплата Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет ФОМС, ЕФС Бесплатно (free)

ФСС потребовал предоставить полные списки работников при переходе на безбумажные больничные. Если сотрудников в УПП довольно много, становится проблематично каждого сотрудника выгружать в ФСС вручную. Можно даже сказать - довольно кропотливо. Вариант работы с ЭДО не требует жмакать кнопку для каждого сотрудника, но это платно (для второй и последующих организаций). Оказывается к ЭДО можно пока не подключаться. Предлагаю вариант автоматической выгрузки.

22.02.2022    3019    ksnik    12    

8

Использование LibreOffice для конвертации файлов в pdf на сервере

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться примером конвертации файлов в pdf с помощью LibreOffice на сервере.

26.01.2022    1669    pavelpribytkin96    5    

8

Список значений параметра в конвертации данных 2.0 (подключаемые обработки)

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Неоднократно сталкивался с вопросом: как сделать тип параметра - список значений, одно из самых простых решений - использовать подключаемые обработки в конвертации данных 2.0 (связать с параметрами конвертации). В данной статье будет дана подробная инструкция по данному вопросу.

26.01.2022    1356    Shining_ninja    0    

6

Немного про (кривые) кодировки XML

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Парочка функций для правильного чтения строк из XML.

24.11.2021    2581    ImHunter    5    

14

Интеграция 1С с ГИИС ДМДК

WEB-интеграция Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 Ювелирная промышленность и торговля Россия Бесплатно (free)

ГИИС ДМДК - единая информационная платформа для взаимодействия участников рынка драгоценных металлов и драгоценных камней. с 01.09.21 стартовал обязательный обмен данными с Федеральной пробирной палатой (ФПП) исключительно через ГИИС. А постепенно - с 01.01.2022 и с 01.03.2022 - все данные о продаже драгоценных металлов и камней должны быть интегрированы с ГИИС. У многих пользователей возникает вопрос как автоматизировать обмен между программой 1С и ГИИС ДМДК. В настоящей статье ВЦ Раздолье поделится своим опытом о реализации такого обмена. Автор статьи - Мордовин Антон - архитектор систем на базе 1С Внедренческого центра "Раздолье".

30.09.2021    35993    1СERP    159    

30

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Загрузка данных из файла .CSV

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Украина Бесплатно (free)

Алгоритм для загрузки данных в учебную конфигурацию из файла с расширением CSV.

23.08.2021    4718    user1571738    0    

14

Сравнительный анализ вариантов интеграции между системами

Файловый обмен (TXT, XML, DBF), FTP WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup «Интеграционные решения для 1С» выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами кейсами из собственной практики: какие интеграционные решения остаются актуальными до сих пор, а каких приемов стоит избегать – даже в безвыходных ситуациях.

30.07.2021    4238    SergeyN    1    

10

Новичок новичку: как выгрузить/загрузить XML данные

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Россия Бесплатно (free)

Рассказываю на примере, как с помощью xml файлов выгружать/загружать метаданные (документы, справочники, регистры). Рассматривается клиент-серверный вариант. Вариант передачи файла на сервер. Вариант загрузки файла без создания временных файлов.

04.06.2021    30857    user1312100    14    

25

Как вносить изменения в новое ЭДО от 1С в БП 3? Июнь 2021, БП 3.0.93.20

Документооборот и делопроизводство (СЭД) Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

Обновились на 3.0.93.20, и все мои расширения под ЭДО перестали работать. Разберем, где вообще искать код, который выводит данные электронного документа в XML, где вмешиваться в ход этого вывода?

03.06.2021    11178    fixin    34    

19

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Правила обмена больше не нужны

Внешние источники данных Обмен между базами 1C WEB-интеграция Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    18869    Nikola23    40    

79

R.I.P. РИБ

Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

РИБ, спасибо и до свидания.

19.02.2021    13322    1c-intelligence    133    

69

Сериализация данных 1С

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной статье я хочу рассказать о сериализации данных в 1С.

13.01.2021    11194    DanteLissi    7    

8

Загрузка или обновление файла на яндекс диске через rest-api

Файловый обмен (TXT, XML, DBF), FTP WEB-интеграция Платформа 1С v8.3 Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться кодом, с помощью которого можно загрузить файл на яндекс диск или обновить существующий.

12.08.2020    7099    pavelpribytkin96    11    

68

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Загрузка или обновление файла на гугл диске

Файловый обмен (TXT, XML, DBF), FTP WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Коллеги, в данной публикации я хочу поделиться кодом, с помощью которого можно загрузить файл на гугл диск или обновить существующий.

06.08.2020    5126    pavelpribytkin96    9    

48

REST API multipart/form-data или отправка файлов в nexus

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Понадобилось в nexus складывать файлы для автодеплоя. Для этого использовал onescript и rest api. Библиотека 1connector не отработала, примеры на зазеркалье и ИТС тоже. В этой статье расскажу как поборол проблему.

28.02.2020    3377    pashamak    2    

6

[БСП] Обмен через Конвертацию данных 2.1

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим новый план обмена и настроим в БСП типовой обмен через правила конвертации данных (КД 2.1)

03.02.2020    18580    John_d    22    

170

Вариант публикации каталога товаров из 1С с изображениями

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье опишу организацию контейнера для публикации в selectel, доработки структуры данных для хранения адреса публикаций изображений, использование схемы XDTO, отправку через FTP.

02.02.2020    2836    malikov_pro    8    

6

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Обмен через Конвертацию данных 2.1 во внешней обработке + Запуск внешней обработки по расписанию (БСП)

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

22.01.2020    9641    John_d    33    

100

Двусторонний обмен с поставщиком через интернет-магазин для реализации товаров с ответственного хранения (с 01.02.2020 "Партии" не используются)

Файловый обмен (TXT, XML, DBF), FTP WEB-интеграция Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Бесплатно (free)

Рассмотрены реализация двустороннего обмена данными с использованием API-сервиса сайта поставщика при продаже товаров со склада ответственного хранения, алгоритм движения товаров и обмена документами на примере конфигурации 1С: УНФ у партнера, который взаимодействует с поставщиком "ООО Пауэр-Интернэшнл-шины" - одним из крупнейших в России поставщиков автомобильных шин и дисков.

16.01.2020    6091    chkurs    9    

3

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования

Универсальные функции Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    20551    kraspila    33    

58

Практика XDTO. Нюансы

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Бесплатно (free)

Некоторые практические моменты работы с XDTO. Дополнения к очевидному.

23.09.2019    22954    Yashazz    31    

71

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

В курсе обобщен опыт работы аналитика на проектах в течение пяти лет, в нескольких фирмах. Подходы к написанию документов унифицированы и по возможности не привязаны к конфигурациям 1С.

3 500 рублей

Запись/Чтение XML, пример обмена по COM соединению

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Пример работы с XML, запись и чтение, обмен по COM между одинаковыми конфигурациями.

08.09.2019    22131    user5300    9    

19

EnterpriseData – часть 3. Загрузка данных, идентификация объектов

Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Основные этапы загрузки данных через EnterpriseData. Идентификация объектов загружаемых полностью и по ссылке. Приведены схемы процессов загрузки данных. Описание основных операций и обработчиков. Перечень процедур БСП, используемых при загрузке данных, структура «КомпонентыОбмена».

22.08.2019    22474    ids79    14    

97

Загрузка данных в БП 3.0 (Универсальный обмен данными XML)

Файловый обмен (TXT, XML, DBF), FTP Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Бесплатно (free)

Решение задачи по загрузке данных из имеющегося файла в формате xml в БП 3.0 (в том числе на 1cfresh.com) без доработок

26.05.2019    8658    rutadmeen    5    

13