Возможности доработки выгрузки из 1С в Битрикс

13.03.24

Интеграция - WEB-интеграция

В статье собраны некоторые полезные и интересные примеры доработок выгрузки из 1С на сайты на платформе Битрикс (Возможно, что-то подойдёт и для WordPress и других платформ, принимающих типовую выгрузку на сайт из 1С). Доработки рассмотрены без привязки к конкретным конфигурациям, примеры кода взяты в основном из доработок УТ 10 и 11. Некоторые доработки требуют изменений на стороне Битрикса, некоторые укладываются в типовой функционал. Примеры взяты из личного опыта, возможно, описание где-то не полное, т.к. доработки делались в разное время. Если материал будет интересен или будут аналогичные актуальные задачи, буду стараться дополнять статью более подробным описанием и примерами.
  1. Несколько групп-категорий товаров.
  2. Множественные свойства товаров.
  3. Свойства к предложению.
  4. Передача картинок через внешний ресурс.
  5. Выгрузка справочников и регистров сведений в highload-блоки.
  6. Выгрузка файла обмена на FTP
  7. Объединение товаров в одной карточке на сайте.
  8. Продажа товаров по разной цене от количества в заказе.

1. Несколько групп-категорий товаров.

Битрикс позволяет относить один товар к нескольким категориям, т.е. например товар "Конструктор" можно выводить одновременно в категориях "Развивающие игрушки", "Новинки" и "Конструкторы".

В 1С необходимо организовать хранилище дополнительных групп номенклатуры. Для этого можно использовать новый регистр сведений или добавить табличную часть в справочнике Номенклатура.

В процедуре выгрузки необходимо доработать добавление дополнительных групп в товаре в тег Группы. Для типовой выгрузки на сайт из УТ 11 это процедура ДобавитьНоменклатуруXDTO в общем модуле ОбменССайтом, для выгрузки от битрикса процедуры ВыгрузитьТоварыXDTO-ВыгрузитьГруппыНоменклатурыXDTO в общем модуле Б_ПроцедурыИФункцииВыгрузкиДанныхНаСайт.

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

В XML файле получаем следующую структуру:

 

 

Так же надо проверить вывод дополнительных групп в описании каталога в разделе Группы. По умолчанию туда попадают только группы номенклатуры, участвующей в выгрузке, поэтому дополнительные группы туда могут не попасть.

 

 

Доработок со стороны битрикса не требуется. 

Модули обмена от Битрикс версий 7 и 8 позволяют настроить выгрузку товара в несколько групп при настройке произвольной иерархии групп, там можно отнести товар в несколько групп, доработок со стороны 1С в этом случае не потребуется. 

2. Множественные свойства

Расширение для УТ 11.5, КА 2.5, ERP 2.5, Розница 3 и 2.3, УНФ 3 для работы с множественными свойствами - //infostart.ru/public/1813142/

Функционал Битрикса позволяет задавать для товара множественные свойства, т.е. одно свойство может иметь несколько значений, на пример, одна деталь может применяться на несколько моделей. В 1С хранение таких свойств не реализовано и требует доработки. На инфостарте есть несколько статей с подробным описанием подобных доработок для разных конфигураций, в том числе и мой вариант. В двух словах, во первых, необходимо доработать выбор множественного свойства на форме номенклатуры. Далее, для УТ 10.3 необходимо организовать хранилище множественных свойств в отдельном регистре или через разделители в справочнике ЗначенияСвойств. В УТ 11 доп. реквизиты хранятся в таблице справочника номенклатуры и организация отельного хранилища не требуется, т.к. в табличной части нет проверки уникальности. Возможен вариант хранения как отдельной строкой для каждого значения свойства, так и использования разделителей или сериализации, на пример с помощью объекта СериализаторXDTO или методом ЗначениеВСтрокуВнутр(). В случае использования сериализации значение списка свойств можно хранить в реквизите табличной части ТекстоваяСтрока (Строка неограниченной длины), а в реквизит Значение - записать строковое представление (первые несколько значений) для вывода в отчетах.  

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

 

 

Вывод значений свойств необходимо сделать в блоке ЗначенияСвойства - после реквизита ИД необходимо для каждого значения добавить блок "ЗначениеСвойства" содержащий реквизит "Значение". Без доработок выгрузка УТ11 будет формировать отдельный блок ЗначенияСвойства для каждой строки таблицы свойств, что не верно. На скриншоте пример множественного и одиночного свойства. 

 

 

Для УТ 11 доработки вносятся в общем модуле ОбменССайтом, процедуры ДобавитьСвойстваНоменклатурыВКлассификаторXDTO и ДобавитьЗначенияСвойствНоменклатурыXDTO.

Если ВыборкаСвойствНоменклатуры.м_МожетПриниматьМножественноеЗначение Тогда
	СвойствоXDTO.Множественное = XMLСтрока(Истина);	
КонецЕсли;

Для добавления блока ЗначениеСвойсва в блок ЗначенияСвойства необходимо внести изменения в пакете XDTO Commerce ML 2.08 (В Управлении торговлей 10 и 11 это пакет с именем CML208). В типах объектов добавляем новый тип ЗначениеСвойства, содержащий реквизит Значение - тип ЗначениеТип. А в типе ЗначенияСвойств добавляем поле ЗначениеСвойства - тип наше добавленное ЗначениеСвойства. Для полей Значение и ЗначениеСвойства необходимо настроить Минимальное количество = 0, т.к. для одиночных свойств будет заполнено только Значение, а для множественных только ЗначениеСвойства. Для поля ЗначениеСвойства устанавливаем Максимальное количество = -1 - без ограничений. 

 

 

Доработок со стороны битрикса не требуется. 

3. Свойства к предложению

Битрикс позволяет устанавливать свойства как для товара, так и для товарного предложения. В типовой выгрузке товарное предложение формируется как Номенклатура + Характеристика (если используются) и в свойства предложения выгружаются дополнительные реквизиты добавленные к характеристике. Это можно использовать, на пример, для вывода параметров, относящихся к конкретной характеристике - габариты для разные размеров товаров и т.д. 

Но свойства предложений можно использовать и без использования характеристик в 1С. На пример, на одном проекте была необходимость на сайте дать возможность пользователям заказывать один и тот же товар с разных складов в одном заказе. От выбора склада зависел срок поставки и цена товара. Типовой механизм работы со складами на битриксе использовать для этой задачи не получалось. В итоге выгрузка остатков по складам была отключена, а при формировании выгрузки товарного предложения сделаны доработки: ИД товарного предложения формировался как Уникальный идентификатор номенклатуры + Уникальный идентификатор склада. Товарное предложение разбивалось на несколько по количеству складов в базе, со своим остатком и ценой для каждого склада. В товарное предложение было добавлено свойство "Склад". Описание свойства "Склад" и возможные значения принудительно выводились в классификатор в разделе свойства. В результате в рамках одной корзины клиент на сайте по каждому товару мог выбрать склад с которого он хочет сделать заказ.

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

 

 

Механизм не требует доработки со стороны битрикса для получения данных. Но требует настройки вывода и логики работы с полученными данными на сайте.

4. Картинки через внешний ресурс

Эта доработка требует изменений и со стороны Битрикса. Специфика базы 1С в описываемой задаче - это большое количество товаров, при этом регулярно появляются новые товарные позиции и могут изменяться большие объёмы уже существующих данных. Т.е. в типовом варианте выгрузки регулярно на сайт передавался большой объём фотографий товаров, что негативно сказывалось на скорости обмена и объёме трафика. Варианты комбинирования полного обмена и обмена изменениями без картинок не дали необходимого улучшения и было принято решение не передавать картинки типовыми средствами.

В базе было доработано хранение картинок на диске (речь идёт о УТ 10.3, для УТ 11 и современных конфигураций на БСП хранение приложенных файлов в томах уже типовой функционал). Папка хранения картинок была синхронизирована с каталогом на хостинге по средствам стороннего ПО. В настройках обмена в 1С отключена выгрузка картинок на сайт, а в выгрузку добавлено множественное свойство КартинкаСтрокой в которое выгружался список путей к картинкам.

 

 

На битриксе сделаны соответствующие доработки для отображения картинки из папки на FTP по пути переданному в  свойстве КартинкаСтрокой.

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

5. Справочники и регистры сведений в highload-блоки

Выгрузка дополнительных справочников реализована в модуле обмена от Битрикса и позволяет передавать данные справочников на сайт с гибкой настройкой какие реквизиты требуется передать. Но в типовом Обмене с сайтом в конфигурациях 1С это не реализовано.

Для доработки типового механизма потребуется внести изменения в XDTO-пакет, т.к. типовой пакет CML208 не содержит типов ПользовательскиеСправочники, Справочник и ЭлементСправочника. Можно добавить их в типовой пакет или воспользоваться пакетом из обмена предоставленного модулем Битриксом, я воспользовался вторым вариантом. XDTO-пакет находится в плане обмена Б_ОбменССайтом в макете СхемаXSDОбмена.

В общем модуле ОбменССайтом было реализовано заполнение файла XML в соответствии со структурой пакета. В блоке ПользовательскиеСправочники в начале описывается структура справочника: перечень реквизитов и их типы, далее записываем значение элементов справочника. На выходе получаем файл следующей структуры:

Этот файл можно передать на типовой скрипт обмена с сайтом, при этом необходимо указать Тип соединения -  "reference".

// Отправляем файл на сайт.
Если Параметры.ВыгружатьНаСайт Тогда
		
	ВыгруженоУспешно = ВыгрузитьДанныеНаСайт(Параметры, СтрокаТаблицыИнформации, "reference");
			
Иначе
	ВыгруженоУспешно = Истина;
КонецЕсли;

/////////////////////////
Функция ВыгрузитьДанныеНаСайт(Параметры, СтрокаТаблицыИнформации, ТипСоединения = Неопределено)

	АдресДляРаботы = НастройкиПодключения.АдресСкрипта + "?type=" + ТипСоединения;

Данный метод подходит для выгрузки любых произвольных данных, не только справочников. На пример, была задача выгрузки таблицы независимого регистра сведений на сайт. Алгоритм выгрузки остался аналогичным выгрузке справочника, в качестве ИД Элемента справочника был указан перечень идентификаторов измерений регистра, т.е. по сути ключ записи. Тут надо обратить внимание на ограничение типа поля ИД у ЭлементСправочника. В пакете из обмена Битрикса это поле имеет тип ИдентификаторГлобальныйТип - строка с ограничением длины 40 символов. Т.е. для записи Уникальных идентификаторов двух измерений пришлось увеличить длину строки до 73 символов. В данном случае обмен прошел и Битрикс успешно принял эту строку. Но для регистров с большим количеством измерений такой вариант может не подойти и нужен будет другой механизм формирования ИД записи, на пример, добавить реквизит в регистр и при записи записывать в этот реквизит уникальный идентификатор.

Механизм не требует доработки со стороны битрикса для получения данных. Но требует настройки вывода и логики работы с полученными данными на сайте.

6. Выгрузка файла обмена на ФТП

Эта доработка будет скорее актуальна для сайтов на платформах, отличных от Битрикса и UMI, не имеющих готового функционала для приёма от 1С файлов обмена. При настройке выгрузки на прямую на сайт 1С выполняет определённую последовательность http-запросов и получает ответы от сайта, подробнее по протоколу обмена можно почитать на сайте 1С в этой статье.

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

Для реализации доработки в УТ 11 в план обмена ОбменССайтом были добавлены настройки доступа к FTP ресурсу (сделано по аналогии с типовыми настройками обмена РИБ). Для хранения настроек в базе использован регистр сведений Безопасное хранилище данных и процедуры - ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище, ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища. Настройка способа обмена данными выбрана - Выгружать в каталог на диске. И в общем модуле ОбменССайтом в процедуре ВыполнитьОбменССайтом после выгрузки каталога и пакета предложений добавлено сжатие файлов обмена в архив и отправка сформированного архива с файлами обмена на указанный FTP сервер.

 

7. Объединение товаров в одной карточке на сайте.

Что бы товар с разными свойствами выводился на сайте в одной карточке с возможностью выбора свойств в типовом варианте в 1С необходимо использовать Характеристики номенклатуры. На примере одежды, для карточки товара заносим в характеристики размеры и цвета, принты. В результате типовой выгрузке по справочнику номенклатуры на сайте формируются товары, а по справочнику Характеристики - товарные предложения (ТП). Получаем единую карточку товара, с возможностью выбора характеристик.

Но что делать, если использование характеристик в 1С не целесообразно или учёт уже ведётся без использования характеристик?

Эту задачу можно решить доработкой со стороны Битрикса: в 1С заводим доп. реквизит для объединения товаров, на пример - Общее наименование карточки. Товары выгружаются на сайт типовой выгрузкой. Далее товар уже на сайте объединяется в одну карточку по этому полю. Дополнительно можно добавить в свойствах товара признак, что дополнительный реквизит используется для объединения. В одном из проектов не делали этого признака, реквизит для свёртки настраивался на сайте в ручном режиме программистами Битрикс.

К сожалению, данная доработка вызывает сложности у некоторых Битрикс-специалистов. Не являюсь специалистом по Битрикс и оценить её реальную сложность не могу. Но эту задачу можно решить и со стороны 1С, без доработки Битрикс. В этом случае необходимо разработать интерфейс для настройки объединения товаров в базе 1С и доработать выгрузку на сайт. При выгрузки заменять формирование ТП с Номенклатура+характеристика, на номенклатура+объединяемая номенклатура. Для доп. реквизитов так же необходимо завести признак - использовать реквизит для товара или ТП. 

Для встроенной выгрузки в УТ необходимо доработать формирование файла Offers.xml. Для модуля от Битрикс ещё формирование файлов по остаткам и ценам. Если планируется использование загрузки заказов, то механизм получения номенклатуры так же необходимо доработать.

В этом варианте доработок со стороны битрикса не потребуется, но объём работ со стороны 1С может быть существенным.

8. Продажа товаров по разной цене от количества в заказе.

Расширение и более подробное описание доработанного функционала для УТ 11, КА 2 и ERP 2 - //infostart.ru/1c/tools/2033419/

На товар применяются разные цены в зависимости от количества товара в заказе. На пример, при заказе товара в количестве от 1 до 100 шт., цена товара 100руб/шт., при заказе от 101 до 1000 - 70руб/шт., и больше 1000 - 60руб./шт.

Со стороны 1С, на примере конфигураций УТ 11, КА 2 и ERP 2, данный механизм можно настроить типовыми  средствами, но типовой механизм имеет ряд недостатков и не выгружается на сайт типовыми модулями обмена. Поэтому было принято решение доработать механизм. Был добавлен справочник градаций цен в котором настраиваются пороги срабатывания цен и соответствующие им Виды цен. В справочнике номенклатура добавлена ссылка на справочник Градаций. Подробное описание доработки и настройки механизма можно посмотреть тут.

В выгрузке на сайт сделаны следующие доработки: В выгрузке типов цен каждая строка диапазона справочников градации выгружена как отдельный тип цены. В качестве ИД справочника использован ГУИД элемента справочника Градации цен и номер строки через #. Данное решение обусловлено ограничением типа для ИД справочника Типы цены в 40 символов в типовой схеме XDTO. И подразумевает полную выгрузку на сайт после редактирования справочника градаций, иначе цены на сайте могут быть не актуальны. В поле наименование записаны нижняя и верхняя граница диапазона количества для градации.

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

Для сайтов под управлением Битрикс данный механизм является не типовым и требует существенных доработок на сайте. Типы цен и значения цен загрузятся стандартной выгрузкой, т.к. сама структура файлов осталась типовой. Но потребуется настройка вывода, настройка алгоритма подстановки цены, парсинг границ уровней градаций из наименования типа цен.

Обмен с сайтом Битрикс UMI Несколько групп-категорий Множественные свойства Свойства к предложению highload-блоки Выгрузка на FTP файл обмена разные цены цены от количества

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

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

36000 руб.

03.08.2020    15932    13    18    

13

Интеграция 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    17884    6    15    

13

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

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

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88930    163    216    

318

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25872    9    0    

7

Интеграция с сервисом vetmanager

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

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16479    42    49    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. triviumfan 93 22.11.22 14:00 Сейчас в теме
Нет, БУС - это чушь, каждый, кто сталкивался с ним уже понял. 1-3 пункты баян, 5 - логично, но требует изменений как со стороны 1с, так и битрикса, не у всех есть возможность нанять толкового веб-программиста, многие из них также открещиваются от этой CMS.
+
2. de0nis 448 25.11.22 10:27 Сейчас в теме
(1) Почему же чушь? Он закрывает определённую нишу задач, многим этого достаточно. Согласен, что там есть ряд сложностей и не для каждого проекта подойдёт. Ну и опять же 1Совский XML сейчас принимает не только Битрикс, но и многие аналоги.
Баян - не баян - на форуме есть и начинающие разработчики, возможно кому-то будет полезно. Сам тут сидел, вспоминал как множественные свойства выгрузить, хотя уже делал это пару раз. Вот и написал шпаргалку.
Толкового 1С программиста тоже не у всех есть возможность нанять :)
+
8. mistervoron 10 12.04.24 14:23 Сейчас в теме
(2) Поддерживаю ваш комментарий)
de0nis; +1
3. пользователь 30.01.23 15:21
Сообщение было скрыто модератором.
...
4. user_lia 03.11.23 15:58 Сейчас в теме
Здравствуйте. По пункту 7, есть ли какие-то расширения? Конкретные Статьи? Предстоит доработать на стороне 1с. Но боюсь, создавая свой "велосипед" не всё учту и всё это затянется...
+
5. de0nis 448 04.11.23 15:12 Сейчас в теме
(4) Добрый день. Есть некоторые наработки, опыт реализации и понимание, что должно получиться на выходе, но для актуальных конфигураций готовых решений нет сейчас. Если есть вариант сотрудничества в рамках этой задачи, то с радостью поучаствовал бы.
+
6. DenaSSB 07.02.24 12:56 Сейчас в теме
Здравствуйте. Нужна одна из доработок описанных в статье. Сможете выполнить?
+
7. de0nis 448 07.02.24 13:00 Сейчас в теме
(6) Добрый день. Да, написал в ЛС.
DenaSSB; +1
9. mistervoron 10 12.04.24 14:23 Сейчас в теме
Поддерживаю ваш комментарий)
de0nis; +1
Оставьте свое сообщение