Программы 1С могут обмениваться с сайтом на Битриксе с помощью встроенных механизмов. То есть, если у вас имеется типовая конфигурация 1С: Предприятие и сайт, разработанный на платформе «1С-Битрикс: Управление сайтом», то можно ничего дополнительно не устанавливать, а использовать тот обмен, который предусмотрен в 1С. А если вы хотите получить дополнительные улучшенные возможности обмена, то нужно установить подходящую вам версию модуля обмена.
Выбрать подходящую версию можно на странице скачивания, в зависимости от редакции и релиза вашей 1С.
Примечание: если у вас более ранние версии продуктов 1С:УТ и/или «1С-Битрикс: Управление сайтом» и нет возможности обновиться, то для обмена данными следует использовать возможности типовой конфигурации 1С. В этом случае часть имеющегося на текущий момент функционала по обмену данными будет вам недоступна.
Модуль интеграции 1С представляет собой файл, являющимся расширением базы 1С. Для установки модуля интеграции не нужно вносить изменения в типовую конфигурацию базы 1С, поэтому установка обновлений конфигурации 1С не изменится.
При обновлении конфигурации 1С она может поменяться в части объектов, которые соприкасаются с модулем интеграции, в результате чего модуль интеграции перестанет работать. Это случается редко, но если случилось, напишите в техподдержку, с указанием конфигурации 1С и релизом.
Модули интеграции разработаны для наиболее востребованных конфигураций 1С. Получить их можно 2 способами:
- Перейти на сайт интеграции 1С и скачать вручную.
- С помощью обработки 1С, которая сама проанализирует конфигурацию и предложит установить подходящий модуль. Обработку можно скачать как из раздела 1С+ CRM Битрикс24 на вашем портале, так и с сайта.
Если для конфигурации 1С не разработан модуль интеграции, то можно скачать наиболее подходящий и адаптировать его. Это значительно сэкономит трудозатраты.
Для установки модуля через обработку 1С нужно запустить обработку в базе 1С в режиме 1С:Предприятие. Если для конфигурации 1С есть модуль интеграции, то доступна кнопка Установить, по которой можно установить интеграцию 1С.
Если необходимо вручную установить модуль, то нужно зайти в базу 1С в режиме 1С:Предприятие, затем открыть форму управления расширениями конфигурации.

В открывшемся окне нужно нажать на кнопку Добавить.

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

Если сеанс 1С был монопольным, то расширение установится в базу 1С.

Обязательно снимите флаг «Безопасный режим, имя профиля».

Далее нужно перезапустить сеанс 1С, чтобы модуль интеграции был виден в интерфейсе.
Если предполагается, что взаимодействие между 1С и Битрикс24 будет происходить через http сервис 1С, то его необходимо опубликовать на веб-сервере 1С. Для этого необходимо зайти в конфигуратор базы 1С и выбрать пункт Администрирование > Публикация на веб сервере. Обязательно установите флаг Публиковать HTTP сервисы расширений по умолчанию.

Если предполагается, что нужно будет открывать объекты 1С из Битрикс24, то также необходимо установить флаг Публиковать доступ для клиентский приложений.
Спасибо, помогло!
Спасибо 
Это не то, что я ищу
Написано очень сложно и непонятно
Есть устаревшая информация
Слишком коротко, мне не хватает информации
Мне не нравится, как это работает
- Модуль интеграции Битрикс24 и 1С 2-й версии: краткая справка
- Установка модуля
- Настройки интеграции 1С с Битрикс24
- Синхронизация клиентов
- Передача пользователей при интеграции 1С и Битрикс24
- Синхронизация информации о товарах
- Пользовательское дерево групп
- Настройка синхронизации счетов
- Синхронизация сделок: загрузка заказов, сопоставление статусов
- Прочие настройки и возможности интеграции 1С и Битрикс24
- Виды интеграции 1С и Битрикс24
- Особенности интеграции 1С и Битрикс24
- И в заключение…
ИНТЕРВОЛГА обладает большим опытом в оптимизация деятельности бизнеса с помощью интеграций различных веб-систем, ERP, CRM и ecommerce-систем с 1С.
Частая проблема — интеграция 1С и Битрикс24: компаний, товаров, документов, данных и статусов.
Ранее мы уже писали, как ее можно решать: читайте в нашей статье Синхронизация контрагентов 1С и компаний Б24.
Мы решили описать прошлые кейсы интеграции систем и поделиться с читателями подробной инструкцией, как правильно работать со связью этих систем.
Чтобы узнать способы настройки модуля для рабочей и безболезненной интеграции — читайте нашу статью.
В конце 2018 года вышел модуль версии 2.0. Несмотря на приставку «BETA-версия», ресурс сразу получился вполне работоспособным. В 2022 решение активно развивается, уже без приставки BETA, устраняются выявленные ошибки и расширяются возможности интеграции.
Вторая версия ПО — функционально отличается. Она имеет возможность обмена данными 1С с CRM Битрикс24 в режиме реального времени:
- Компании;
- Контакты;
- Сделки;
- Счета;
- Товары;
- плюс все сопутствующие данные.
Модуль интеграции «1С: Синхронизация Битрикс24» существует для нескольких конфигураций 1С:
- В конфигурации «1С:Управление торговлей» реализована передача данных о сделках (сделки в CRM это заказы в 1С:Управление торговлей);
- В конфигурации «1С:Бухгалтерия предприятия» реализована передача данных о счетах (счета в CRM это они же в 1С:Бухгалтерия предприятия);
- В «1С:Управлении нашей фирмой» реализована передача счетов и сделок;
- Обмен контрагентами, контактами, данными о продукции реализован во всех конфигурациях.
В каждой компании бизнес-процессы могут иметь свои особенности. Набор используемых документов и работа с ними может сильно отличаться от реализованного подхода в Возможности модуля интеграции 1С и CRM Битрикс24. При необходимости функционал можно расширить. В конце статьи приведена стоимость доработки решения под различные требования и массивы данных.
Рассмотрим базовые возможности модуля для конфигурации «1С:Управление нашей фирмой», так как в нем реализована передача данных о счетах и сделках.
Модуль интеграции Битрикс24 и 1С 2-й версии: краткая справка
Линейка 2-й версии реализована для последних версий конфигурации и требуют платформу 1С не ниже версии 8.3.12
В них реализован механизм регистрации изменений в Битрикс24. Это позволяет передавать в 1С только те данные, которые уже изменены в CRM.
Как следствие — минимизируется объем передаваемой информации.
Новый инструмент реализован на технологии REST.
Ограничения метода REST в Битрикс24:
- Получаем по 50 элементов в запросе,
- 2 запроса в секунду,
- Очередь не более 100 запросов.
Установка модуля
Установка нового решения стала проще.
Теперь не нужно обладать навыками программирования, заходить в конфигурацию и снимать конфигурацию с поддержки.
Скачать установщик интеграции с Битрикс24 можно на сайте 1С-Битрикс:
(https://1c.1c-bitrix.ru/intranet/download.php).
Возможно выбрать требуемую версию для прикладного решения 1С.
В отличие от предыдущих версий, новый инструмент — это не установочный файл, а обработка, которую требуется запустить в самом приложении 1С.
Рассмотрим установку на конфигурации «1С:Управление нашей фирмой 1.6». Это одна из наиболее активно развивающихся конфигураций 1С, широко используемая для нужд малого и среднего бизнеса.
- Для установки модуля интеграции 1C и Битрикс24 открываем скачанную обработку. Нажимаем кнопку «Установить модуль».
- После этого перезапускаем 1С, чтобы обновился интерфейс. Появился новый раздел «Синхронизация с Битрикс24».
Настройки интеграции 1С с Битрикс24
Рассмотрим, как работать с разделом «Синхронизация с Битрикс24».
- Для создания подключения к CRM нужно в разделе «Настройки» выбрать пункт «Настройки синхронизации с Битрикс24»;
- Нажимаем на кнопку «Создать подключение к Битрикс24»
В окне управления интеграцией указываем её название. - Указываем ключ подключения (узнать его можно на портале Битрикс24).
В портале встроено приложение «1С + CRM Битрикс 24». Оно используется для объединения с учетными системами через токен.
Если приложение не установлено, его можно установить с Маркетплейс — оно бесплатное.
Копируем ключ и вставляем его в 1С
1С автоматически определит адрес портала.
Возможны несколько вариантов интеграции:
- Упрощенный вариант: в Битрикс 24 отсутствуют данные, в 1С данные имеются;
- Сложный вариант: данные расположены в Битрикс 24 и в 1С. Иногда возникает проблема дублирования данных в системах.
Синхронизация клиентов
Из 1С контрагенты попадают в Битрикс 24:
- как компании;
- как контакты.
В зависимости от настроек данных.
По умолчанию, юридические лица попадают в компании, а физические лица – в контакты. Это возможно изменить на форме в разделе «Установка зависимости компаний /контактов и типов контрагентов».
Возможность обновления контрагентов в 1С при интеграции CRM можно отключить.
Хотите иметь возможность отслеживать и удалять дубли контрагентов?
Тогда необходимо указать группу для новых контрагентов (на этой же форме).
Для всех конфигураций, кроме 1С:Управление торговлей, в части сопоставления типов контрагентов с шаблонами Битрикс24, для компаний и контактов возможен только один шаблон. Если их будет несколько, могут возникнуть проблемы, поэтому рекомендуется использовать связку один-к-одному.
Для этого загружаем шаблоны Битрикс 24 по кнопке на форме регулирования интеграции контрагентов и сопоставляем с видом контрагента в 1С.
На форме можно настроить способы сопоставления контрагентов.
По умолчанию, сопоставление выполняется по внешнему идентификатору. Такой вариант подходит, если изначально базы перед интеграцией 1С и CRM пустые. Cоздание и управление перемещением контрагентов по внешнему идентификатору в базах происходит непосредственно в процессе работы.
Если необходимо сопоставить контрагентов в заполненных базах, можно использовать другие критерии для поиска. Например, контрагент не найден по внешнему идентификатору, следует выполнять поиск по наименованию, по e-mail, по ИНН+КПП и т.д.
Для сопоставления физических лиц часто используют критерий поиска — E-mail, т.к. он является уникальным.
Особенность: если найдется два контрагента с одинаковым e-mail, то ни один из них установлен не будет, а если контрагент не будет найден по внешнему идентификатору и по e-mail, то в 1С будет создан новый контрагент.
Для юридических лиц наиболее часто используется критерий поиска — ИНН+КПП, т.к. эта связка уникальна. Однако в режиме «реал-тайм» сопоставление по ИНН+КПП не будет срабатывать.
Также имеется возможность управления выгрузкой контрагентов из 1С по условию. Для этого можно настроить соответствующие отборы.
Синхронизировать можно не только реквизиты контрагентов и реквизиты банковских расчетов, но и пользовательские поля. Например, в 1С можно создать новое свойство контрагента, и оно выгрузится в Битрикс24 как пользовательское поле. Значения данного свойства могут далее изменяться после интеграции 1С и Б24 в каждой системе. Передачу значений созданного поля можно выполнять в режиме реального времени. Также можно создать пользовательское поле в Битрикс24, и оно выгрузится в 1С. Для свойств или пользовательских полей доступны следующие типы: строка, число, булево, дата, сотрудники (если они сопоставлены). Также доступны списки данных свойств.
Один из наших клиентов, который работает в сфере сельского хозяйства, использует данный механизм с небольшими доработками на стороне 1С для связи множества специфических характеристик своих контрагентов. Теперь в двух системах сотрудники этой компании могут видеть полную информацию о своих клиентах и партнерах. Эти данные идентичны и оперативно передаются.
Передача пользователей при интеграции 1С и Битрикс24
В новом модуле реализовано сопоставление сотрудников после интеграции 1С и CRM. Это необходимо для того, чтобы при обмене контрагентами, к сотрудникам как к менеджерам прикреплялись данных их контрагентов, договоров и документов.
Манипуляция выполняется на главной форме настройки управления.
Для сопоставления нажимаем кнопку «Загрузить пользователей Битрикс24». Отображается меню с подразделениями, пользователи которых будут подгружаться.
При выборе пункта «Все подразделения» в таблицу загружаются все данные о сотрудниках из Битрикс24. После этого можно делать сопоставление с сотрудниками из 1С.
Синхронизация информации о товарах
Для начала передачи информации об ассортименте нужно в разделе «Синхронизировать информацию о товарах» в Битрикс24 установить признак «Активировать».
Включится регистрация изменений (добавление, изменение, удаление) товаров, их групп, единиц измерений и свойств.
Для проведения изменений на форме уже указан прайс-лист и склад, на котором находятся остатки.
В инструменте еще не реализована передача остатков номенклатуры на складах, а указанный склад будет устанавливаться в сделках, которые приходят после интеграции Битрикс24 в 1С.
На форме можно настроить отбор по тем наименованиям, которые необходимо выгружать из 1С, например, по номенклатуре, по наличию остатка, по значению цены, указанной в выбранном прайс-листе или по другим данным.
Пока указывать можно только один прайс-лист.
На форме предусмотрена возможность сделать сопоставление ставок НДС после интеграций Битрикс24 и 1С
Пользовательское дерево групп
Корректировка пользовательского дерева групп уже используется в инструментах интеграции 1С с Битрикс: Управление сайтом. Теперь появилась возможность аналогичной доработки при связи с Битрикс24.
В 1С чаще всего иерархия номенклатуры в справочнике настроена для удобства ведения учета бухгалтерами — менеджерам же подходит другая структура данных.
Для того, чтобы выгрузка продукции после интеграции 1С в Битрикс24 происходила непосредственно в структуру иерархии каталога, предназначенную для менеджеров, используется пользовательское дерево групп.
Это позволяет создать иерархию любой вложенности.
Для этого в левом разделе формы создаются пользовательские данные группы SKU, необходимые для структуры в Битрикс24. Каждой создаваемой группе автоматически присваивается идентификатор раздела — у каждый группы должен быть уникальным.
Каждой такой группе необходимо сопоставить позиции из 1С, которые указаны в правом разделе формы.
При сопоставлении данных можно указывать:
- конкретные наименования;
- целые группы.
В группу слева выгрузятся все товары из раздела справа, а также из всех входящих в него подразделов (на рисунке).
Однако сами подразделы выгружаться не будут.

Это уже реализовано при интеграции 1С с 1С-Битрикс Управление Сайтом.
Настройка синхронизации счетов
На форме настройки интеграции счетов указываем какие печатные формы будем использовать.
Загружаем их из Битрикс24.
Указываем одну для контактов, другую для компаний и устанавливаем признак «Используется». Если в 1С несколько организаций, то указываем данные этих организаций.
На форме можно указать с какой даты выгружаются счета.
Существуют дополнительные отборы по которым из 1С будут выгружаться счета в CRM. Отборы можно использовать, например, когда учет по нескольким организациям ведется в одной 1С, но в разных порталах Битрикс24. Тогда из 1С можно документы по разным организациям выгружать в разные порталы.
Далее необходимо настроить сопоставление статусов.
Например, для расчетов и финансов статус должен иметься обязательно. Для них необходимо создать дополнительное свойство в виде списка со значениями, соответствующими статусам в Битрикс24.
Быстрый способ создания: открыть любой в 1С.
Далее зайти в дополнительное меню по кнопке «Еще» и выбрать «Изменить состав дополнительных реквизитов».
Создать новый дополнительный реквизит «Статусы» с типом значения = «Дополнительное значение».
Возвращаемся в управление отладкой. В окне «Настройка соответствий статусов» в дополнительном реквизите указываем только что созданный реквизит «Статусы» и загружаем статусы из Б24. Для каждого загруженного статуса создаем значение свойства «Статусы».
В поле «Когда оплачен» устанавливаем статус принудительно «Оплачен».
Синхронизация сделок: загрузка заказов, сопоставление статусов
Настройка обменом сделками выполняется в отдельном окне.
При работе с загрузкой заказов можно настроить правила нумерации и проставления даты в документах 1С.
Установка номера и даты может выполняться по данным Битрикс24 или по правилам 1С.
Можно настроить и режим записи и проведения для загружаемых документов.
Можно указать необходимость загрузки и выгрузки пользовательских полей сделок.
Из окна «Настройка синхронизации сделок» можно выполнить наладку загрузки контрагентов.
Помните! В настройках интеграции сделок также необходимо делать сопоставление статусов (как с дополнительным реквизитом заказа так и через состояние заказа).
Реализована возможность сопоставления статусов сделок по видам заказов. Виды заказов аналогичны направлениям сделок. Направления сделок и сами статусы загружаем из Битрикс24.
Для каждого загруженного статуса выбираем соответствующий статус заказа из 1С.
Когда заказ полностью оплачен или полностью отгружен, ему можно установить необходимый статус принудительно.
Сопоставление статусов заказов можно сделать для каждого направления.
Прочие настройки и возможности интеграции 1С и Битрикс24
Базовая настройка выполнена — переходим к точечному управлению.
Полную интеграцию имеет смысл делать, когда данные загружены только в одной системе, или в 1С или в Б24.
Если в обеих системах занесены данные и массив данных большой, лучше проводить передачу данных порционно.

Существует защита от дублей: сравнение контрагентов, как мы помним, идет по указанным критериям поиска. А для всех остальных сущностей идет трехуровневое сопоставление: сначала по внешнему идентификатору Б24, затем по внешнему идентификатору 1С и в итоге по наименованию.
Если же и по наименованию ничего не найдено, то только тогда создается новый объект.
Для каждой сущности, кроме товаров, выгружается по 50 элементов в пакете.
Номенклатура продукции выгружаются с картинками, и картинки могут много «весить», поэтому выгружаются по 10 элементов.
При обмене документами после интеграции 1С и Битрикс24, выгружаются документы созданные в обеих системах.
После завершения можно проверить его корректность в разделе «Зарегистрированные изменения».
На вкладке «Зарегистрированные изменения» показано, какие данные выгрузились успешно.
На вкладке «Неотправленные пакеты данных» отслеживаем, какие данные не выгрузились.
Если не все данные выгрузились, например остались не выгруженные реквизиты, нужно еще раз проверить элементы синхронизации с Битрикс24. Особое внимание обратите на сопоставление типов контрагентов к шаблонам Битрикс24.
После полной выгрузки, нужно провести только выгрузку изменений. Выгружаются все неотправленные пакеты и измененные объекты.
В модуле интеграции с Б24 в отличие от 1С-Битрикс Управление Сайтом нет возможности выгружать торговые предложения. Поэтому товары с характеристиками выгружаются как простые.
Например, номенклатура «Бумага офисная» с тремя характеристиками: А3, А4, А5, будет выгружена как три наименования: «Бумага офисная А3», «Бумага офисная А4» и «Бумага офисная А5».
Виды интеграции 1С и Битрикс24
Возможно три вида:
- ручной;
- по расписанию;
- в режиме реального времени.
В режиме реального времени состоит из двух фоновых заданий: выгрузка из 1С в Б24 и выгрузка из Б24 в 1С.
Для файловой базы 1С установлены ограничение на уровне платформы — активно только одно фоновое задание.
Если фоновое задание выгрузки из 1С в Б24 может выполняться незаметно для пользователя, то выгрузка из Б24 в 1С в фоновом режиме уже выполняться не может. Поэтому для файловых баз 1С необходимо запускать отдельного клиента 1С для реал-тайм.
1С подключается к Б24 и ждет от него сообщений. При сообщении об изменениях каких-либо объектов, 1С обращается в таблицу изменений, определяет тип данных и по ID делает запрос на получение полной информации по измененному объекту.
Для реал-тайм разработан специальный виджет, который можно установить на начальную страницу.
Это делается нажатием на кнопку «Установить виджет на начальную страницу». Если виджет не появился, нужно перезапустить клиента 1С.
Способ обмена переводится в режим реального времени на основной форме.
При переводе в режим обмена в реальном времени на виджете видно, что выгрузка в режиме реального времени выполняется, а загрузка нет.
Для запуска загрузки в режиме реального времени для файловой базы запускаем второго клиента 1С, а в первом нажимаем «Запустить загрузку в режиме реального времени». После этого будет работать и выгрузка и загрузка.
Особенности интеграции 1С и Битрикс24
И в заключение…
В новых модулях интеграции 1С и Битрикс24 появились дополнительные возможности, они активно развиваются, но все-таки по набору функций пока отстают от обмена 1С-Битрикс Управление Сайтом.
ИНТЕРВОЛГА может расширить возможности типовых решений для потребностей конкретного бизнеса. Например, активным спросом пользуются кейсы по интеграции одного корпоративного портала с несколькими учетными системами 1С для разных организаций, включение в процесс новых видов документов, изменение стандартных условий, загрузку в 1С информации из CRM о работе менеджеров с клиентами (встречи, звонки, …) и т.д.
Мы выполняем подобные работы и оцениваем их начиная от 26000 рублей. Стоимость доработок зависит от их сложности и уникальности.
Довольно часто возникает потребность в адаптации и доработке для тех конфигураций 1С, для которых готовых решений не существует. Стоимость таких работ от 52000 рублей.
Вам будет интересно:
- Обмен сделками в интеграции Битрикс24 и 1С
- Tutorial по стандартному и нестандартному обмену сайта с 1С. Часть первая: стандартный обмен и его хитрости.
- Tutorial по обмену сайта с 1С. Часть вторая: зачем и как писать свой обмен с нуля на очередях и REST API.
- Tutorial по обмену с 1С. Часть третья: Выжимаем максимум из стандарта. Что мы хотели бы знать 1000 проектов назад.
- Tutorial по обмену с 1С. Часть четвертая: Обмен через промежуточную базу данных.
- Tutorial по обмену с 1С. Часть пятая: Наш опыт настройки 1000 и 1 обмена.
Владельцы онлайн-магазинов на 1С-Битрикс при его разработке заполняют витрину демо-товарами, настраивают площадку под свои нужды, а вслед за этим, скорее всего, задумываются о настройке обмена с учетной системой 1С. Вопрос о такой синхронизации поднимается буквально на каждом втором крупном проекте автоматизации в отрасли торговли, и, чтобы избежать впоследствии накладок в работе, важно правильно синхронизировать работу приложений за счет полного совпадения номенклатуры.
Стандартный обмен между 1С-Битрикс и 1С
1С-Битрикс уже имеет встроенный инструмент – модуль интеграции, с помощью которого можно буквально «за пару кликов» настроить обмен данными между сайтом и приложением 1С
Но для реализации задуманного необходимо иметь «чистую» 1С со стандартной конфигурацией, то есть продукт в типовой версии.
Стандартный модуль обмена позволяет выполнять синхронизацию следующих типов:
- Загрузка товаров из каталога 1С на ресурс;
- Выгрузка из каталога товаров сайта в 1С;
- Выгрузка заказов с сайта в 1С;
- Загрузка заказов на сайт из 1С;
- Скачивание на сайт справочников из 1С.
Какие продукты от 1С можно интегрировать с 1С:Битрикс?
- 1С:Управление торговлей (УТ, начиная с версии 10.3);
- 1С:Управление производственным предприятием (не ниже редакции 1.3);
- 1С:Комплексная автоматизация (версия 1.1 и выше);
- 1С:Управление небольшой фирмой (УНФ, начиная с редакции 1.6);
- 1С:ERP (от версии 2.0);
- 1С:Бухгалтерия (3.0 и выше).
Настройка модуля обмена позволяет синхронизировать следующие данные:
- характеристики товаров;
- документы;
- предприятия;
- реквизиты;
- телефоны;
- товары;
- цены;
- счета;
- сделки;
- свойства товара;
- адреса;
- единицы измерения;
- группы товаров.
Подобная синхронизация выполняется, чтобы упростить различные бизнес-процессы, всегда иметь «под рукой» актуальные данные, а также ускорить получение аналитики.
Настройка интеграции со стороны 1С-Битрикс
Открываем меню «Интеграция с 1С», которое находится в разделе «Магазин-Настройки».

Переходим в активную вкладку «Каталог».

Здесь указываем учетную запись, которой разрешено проводить обмен данными (Администратор), а также основные настройки импорта:
- Активировать выгрузку товаров с их характеристиками в один блок данных, если это необходимо;
- Активировать функцию генерирования ЧПУ-ссылок (человеко-понятных урлов);
- Активировать функцию созданию превью для карточек товаров;
- и т.д.
Интеграция 1С с интернет-магазинами на Битрикс. Все вопросы возьмем на себя!
Что необходимо сделать на стороне 1С?
Скачаем модуль интеграции с 1С, выбрав соответствующий продукт из списка.

В меню «Администрирование-Синхронизация данных-Узлы обмена с сайтами» создаем новый узел обмена.

На вкладке «Настройка параметров обмена» только что созданного узла указываем:
- Адрес сайта (https:[домен]/bitrix/1С/1С_exchange.php);
- Имя пользователя (Администратор из примера выше);
- Пароль (пароль пользователя).

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

Здесь же можно настроить автоматическую синхронизацию между 1-Битрикс и 1С, задав удобные временные рамки.

Откроем вкладку с главными настройками узла обмена и перейдем в раздел «Выгрузка товаров», где выберем каталог товаров, который будет перенесен на сайт, после чего 1С-Битрикс создаст на его основании карточки товаров с данными о них.

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

Интегрировать данные по заказам можно 3-мя способами:
- Отправить абсолютно все заказы в 1С;
- Выгрузить лишь заказы с определенным статусом (например, «Оплаченные»);
- Создать свой статус заказов.
Первый вариант подразумевает, что выгруженные заказы в будущем придется обрабатывать менеджеру, второй – что менеджер получит лишь наиболее «важные» заказы, по которым нужно начать немедленную работу. Третий вариант позволяет предварительно задать для определенных заказов статус «Утвержден» и передать менеджеру на обработку лишь те заказы, которые, например, уже подтверждены клиентом по телефону.

Здесь важно настроить соответствия типов плательщика с юрлицами и физлицами. Это необходимо, поскольку для создания пользователей разного типа на сайте используют разный набор полей для их внесения в конкретный продукт от 1С. Далее откроем «Настройки обмена документами» и выберем один из шаблонов «Обмен заказами».

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

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

Подробнее о том, как настроить 1С для выгрузки на сайт, вы также можете прочитать на нашем сайте.
Способы обмена 1С-Битрикс и 1С
Существует два метода синхронизации 1С-Битрикс с 1С:
- Real-time синхронизация (обмен в режиме реального времени);
- Функция обмена «Обмен данными с сайтом».
Real-time синхронизация
Решение Real-time в 1С – функция двусторонней синхронизации между 1С и 1С-Битрикс в режиме реального времени, которая позволяет беспрерывно обмениваться данными между двумя 1С-продуктами. Для запуска обмена посредством Real-time не нужно изучать техническую документацию или выполнять какие-либо сложные инструкции. К тому же эта система работает с любыми конфигурациями, позволяя выполнять:
- Загрузку данных из 1С в 1С-Битрикс: товары со стоимостью и характеристиками, данные по остаткам;
- Выгрузка информации из 1С-Битрикс в 1С: заказы и сделки со статусами, платежные данные, клиенты, компании и контрагенты.
Обмен данными с сайтом
Также весьма простое штатное решение в 1С. Для доступа к нему перейдите в меню «Сервис», кликните по ссылке «Обмены данными» и пункту «Обмен данными с веб-сайтом», а далее просто следуйте инструкции, предложенной системой.
Возможные ошибки и их решение
Не импортируются цены
Если наблюдается такая проблема, на стороне 1С необходимо проверить:
- Разрешены ли типовые соглашения с контрагентами;
- Существует ли типовое соглашение с контрагентами, для которого открыт доступ сторонним пользователям;
- Выбран ли тип цены в соглашении, и есть ли у товара цена с таким типом.

- Указано ли созданное соглашение в «Форме настройки отбора» для товара.

Если вы используете редакцию «Битрикс24. Малый бизнес», тип цены обязательно должен совпадать у всех товаров.
Настроим обмен 1С с любым сайтом по выгодным тарифам
Не импортируются разделы
Если товары загружаются на сайт без разделов, причиной возникновения этой проблемы и методом их решения может стать:
- В разделах могут присутствовать обязательные для ввода данные, которые не выгружаются из 1С (например, номера телефонов). Из-за этого во время синхронизации могут появляться различные ошибки;
- Если вы используете «Битрикс24. Малый бизнес», выгрузка может содержать более одного типа цен. Поэтому выгрузка и не происходит, так как вначале загружаются цены, а уже после этого синхронизируется структура разделов. Если на загрузке цен возникнет ошибка, то и сами разделы загрузить не получается.
Не импортируются фотографии
Если возникает ошибка на этапе загрузки фото, нужно выполнить следующие действия:
- Проверить в 1С, есть ли галочки около чек-бокса для загрузки фото;
- Кликнуть по кнопке для принудительного импорта изображений;
Если проблема не решилась:
- Перейти в настройки обмена с 1С и проверить, активна ли функция «Использовать ZIP», а также работает ли ZIP-модуль на стороне ресурса.
Также нужно следить, чтобы максимальный объем скачиваемых фотографий был не больше, чем в серверных настройках post_max_size и upload_max_filesize, так как если картинка будет занимать больше места, чем прописано в этих переменных, то она просто не загрузится. Но решить и эту проблему можно при помощи разделения файлов на несколько архивов и активированием функции «Использовать сжатие ZIP, если доступно».

Одни и те же свойства загружаются по несколько раз
Причина «задваивания» свойств кроется в продукте 1С, поскольку свойства здесь обычно прикрепляются к номенклатурным типам и, если их будет более одного, то и свойства создаваться будут по несколько раз. Чтобы решить эту проблему, создайте в 1С свойства через копирование, активируя при этом параметр «Прикрепить это свойство к новому виду номенклатуры». Такое взаимодействие через api обычно решает проблему.
502 ошибка или просто белый экран
Если ресурс становится неработоспособным и выскакивает ошибка 502, это означает, что был превышен лимит объема памяти, которая выделена серверными мощностями. Чтобы исправить ситуацию, нужно в настройках обмена с 1С (на стороне сайта) указать время 1-го шага синхронизации в секундах (от 1-ой до 5-и).

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

Возникает много 404 ошибок сразу после синхронизации
Интеграция 1С с Битрикс
Удобный обмен с вашим сайтом: актуальные данные, отображение заказов и доставки, уведомление клиентов
Интеграция 1С с сайтом
Поможем настроить торговлю через интернет для любых CMS. Дорожная карта интеграции с сайтом в подарок
Подобное наблюдается, если активен чек-бокс «Транслитерировать символьный код из названия при обновлении элемента».

Решение – снять галочку около соответствующей строки.
Все вышеописанные проблемы обычно можно решить штатными средствами 1С или Битрикс. Если же это не помогло, а обмен произвести нужно срочно, можно выгрузить товары с сайта через Эксель (Excel) в виде xml-файла, после чего импортировать их в 1С. Отметим, что наша компания оказывает услуги синхронизации 1С с сайтами, причем разработанными не только на Битрикс, поэтому, если у вас возникнут проблемы, которые вы не сможете решить, или остались вопросы, свяжитесь с нашими специалистами, оставив заявку на сайте или по телефону. Также на нашем сайте есть статья об интеграции системы 1С с сайтом, где подробно описаны и разные пути интеграции.
Время на прочтение
18 мин
Количество просмотров 53K
Нельзя просто взять и интегрировать сайт с 1С. (с) Народное творчество.
Цель написания поста – изложить всю информацию по теме человеческим языком.
Интеграция сайта на 1С-Битрикс: Управление сайтом и 1С — неисчерпаемый источник вопросов и проблем. На сайте идей для Битрикс в соответствующем разделе 16 страниц, на форуме про это больше 23 000 сообщений. В форме обращения в техподдержку Битрикса есть даже отдельный тип заявки «Обмен с 1С».
Считается, что интеграция 1С и сайта на Битриксе должна работать из коробки. Самые простые функции действительно можно запустить за час-два. А вот на доработку обмена можно потратить и 10, и 100 часов.
Доработка обмена сайта и 1С — это уже магия уровня «эксперт», пугает даже бородатого опытного разработчика. В этой статье мы поговорим о том, как происходит обмен данными между этими двумя монстрами и как можно расширять возможности этого обмена. Статья содержит множество технических деталей обмена и будет полезна в основном программистам, которые хотят разобраться в предмете.
В данной статье будет рассмотрена общая теория обмена между двумя IT-системами и два стандартных обмена между 1С и сайтом на 1С-Битрикс: обмен товарами и обмен справочниками.
Немного теории
Интеграция — обмен информацией между двумя IT-системами. Иногда называют просто обмен. Определяется форматом данных, протоколом (стандартом) передачи данных, алгоритмом работы
Формат = как выглядят данные (например, XML, YML, JSON, CSV).
Протокол = как данные оказываются в другом месте (например, HTTP, SIP, SMTP, FTP).
Алгоритм = что при этом происходит. Представляется блок-схемой или диаграммой UML Activity.
Примеры интеграций:
-
обмен товарами между самописной учетной системой и сайтом (протокол FTP, формат CSV);
-
парсинг курсов валюты с сайта ЦБ РФ (протокол HTTP, формат XML);
-
интеграция сайта с Яндекс.Маркет (протокол HTTP, формат YML).
Процедуру обмена можно разделить на 3 части:
-
Экспорт данных из системы А в требуемый формат
-
Передача данных
-
Импорт данных требуемого формата в систему Б.
Часто весь обмен называют «импорт» («загрузка») и «экспорт» («выгрузка»). Это не ошибка, по такой формулировкой говорящий показывает, точка зрения какой системы ему ближе. То, что для 1С экспорт товаров, для Битрикса импорт. В дальнейшем тексте статьи мы не будем использовать эти понятия, чтобы не порождать двусмысленности.
И еще одно важное уточнение. «1С» — в зависимости от контекста, это может быть компания-легенда «ООО 1С», их разработка «1С:Предприятие» или конкретная конфигурация (например, «1С: Управление торговлей» или «1С:ERP Управление предприятием») с установленным модулем обмена с сайтом . В мире веб-разработки имеется в виду как раз последнее определение. В статье будет действовать аналогичное соглашение. Так же и с сайтом на платформе 1С-Битрикс: Управление сайтом — обычно это просто «Битрикс».
Резюме
Интеграция — обмен данными между двумя системами.
Формат — как выглядят данные.
Протокол — как передаются данные.
1С — софт.
Битрикс — сайт.
Краткость — сестра.
Стандартные возможности обмена 1С и Битрикса
«Из коробки» (без доработок программиста) работают 4 типа обмена:
-
товары из 1С на сайт (тип «catalog»);
-
справочники из 1С на сайт (тип «reference»);
-
пользователей/контрагентов из 1С на сайт (тип «sale»);
-
заказы (тип «sale»):
-
из 1С на сайт;
-
из сайта в 1С.
-
Протокол
Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. Т.о. 1С подобна браузеру, она «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Есть даже способ имитировать выгрузку из 1С браузером (и мы часто используем этот трюк во время разработки и отладки). Подробнее про отладку мы рассказали в предыдущей статье «Типовые ошибки интеграции между 1С и 1С-Битрикс».
В терминах сетевых взаимодействий 1С — клиент, а сайт — сервер. Обращения всегда инициируются на стороне 1С. В 1С есть настройки адреса сайта, сайт про 1С не знает ничего.
Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута).
Формат
Данные передаются в двух форматах.
Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса).
Второй формат — CommerceML 2 . Основан на XML, в этом формате передаются товары, предложения, цены, склады, заказы и контрагенты (пользователи+платежные профили).
Алгоритм
Подготовка к обмену
Выше мы уже сказали, что протокол обмена — синхронный HTTP. Все перечисленные типы обмена подразумевают выполнение нескольких запросов (шагов обмена) друг за другом. Первые два шага одинаковы для любого типа обмена, различия начинаются дальше
Авторизация
|
Запрос |
|
|
GET-параметры: |
type=<тип обмена> |
|
mode=checkauth |
|
|
Basic access логин: |
Логин сайта из настроек 1С |
|
Basic access пароль: |
Пароль сайта из настроек 1С |
|
Ответ |
|
|
Если успех: |
success <имя Cookie авторизации> <значение Cookie авторизации> sessid=<ID сессии> <параметр1>=<значение1> <параметр2>=<значение2> … |
|
Если ошибка: |
failure <текст ошибки> |
Любой обмен начинается с авторизации 1С на сайте методом Basic access. В случае успеха сайт выводит «success», имя и значение Cookie (которую будет проверять во всех последующих запросах), id сессии и прочие параметры (зависят от type — типа обмена).
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка авторизации. Неверное имя пользователя или пароль. |
Проверить логин и пароль в Битрикс |
|
У Вас нет прав для импорта каталога. Проверьте настройки компонента импорта. |
Проверить права пользователя в Битрикс |
|
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента |
Обновить модуль обмена в 1С или выполнить php-код на сайте: COption::SetOptionString(«catalog», «DEFAULT_SKIP_SOURCE_CHECK», «Y»); COption::SetOptionString(«sale», «secure_1c_exchange», «N»); |
|
Модуль Информационных блоков не установлен. |
Проверить модуль iblock в Битрикс. Должен быть скачан и установлен |
|
Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога определите константу BX_SESSION_ID_CHANGE: define(‘BX_SESSION_ID_CHANGE’, false); |
Выполнить предложенное действие |
|
Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно неправильно настроены временные зоны. Выполните настройку и повторите обмен. |
Проверить настройку часовых поясов на веб-сервере и на сервере БД |
Запрос настроек сайта
|
Запрос |
|
|
GET-параметры: |
type=<тип обмена> |
|
mode=init |
|
|
sessid=<ID сессии> |
|
|
Cookie: |
<имя Cookie авторизации>=<значение Cookie авторизации> |
|
Ответ |
|
|
Если успех: |
zip=<yes|no> file_limit=<число> |
На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.
|
Параметр |
Назначение |
Возможные значения |
|
zip |
Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик. |
yes no |
|
file_limit |
Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей. |
целое число >= 0 |
Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка инициализации временного каталога |
При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/. |
Обмен товарами (1С -> Битрикс)
Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:
-
инфоблок товаров;
-
UF-поля разделов в этом инфоблоке;
-
свойства элементов в этом инфоблоке;
-
инфоблок SKU;
-
типы цен;
-
склады;
-
разделы в инфоблоке товаров;
-
элементы в инфоблоке товаров (товары);
-
цены товаров;
-
наличие товаров по складам.
При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов:
В файлах с префиксом import_ — разделы каталога, товары, свойства товаров.
В файлах с префиксом offers_ — SKU.
В файлах с префиксом prices_ — цены товаров и предложений.
В файлах с префиксом rests_ — остатки товаров и предложений по складам.
На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами.
Шаг 1. Передача файла (повторяющийся)
|
Запрос |
|
|
GET-параметры: |
type=catalog |
|
mode=file |
|
|
sessid=<ID сессии> |
|
|
filename=<имя файла> |
|
|
POST: |
Содержимое файла в виде строки |
|
Cookie: |
<имя Cookie>=<значение Cookie> |
|
Ответ |
|
|
Если успех: |
success |
|
Если ошибка: |
failure <текст ошибки> |
Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка чтения HTTP данных |
Проверить сетевое соединение между сайтом и 1С. |
|
Ошибка открытия файла <имя файла> для записи |
Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс. |
|
Ошибка записи в файл <имя файла> |
Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс. |
Шаг 2. Основной
|
Запрос |
|
|
GET-параметры: |
type=<тип обмена> |
|
mode=import |
|
|
sessid=<ID сессии> |
|
|
filename=<имя файла> |
|
|
Cookie: |
<имя Cookie>=<значение Cookie> |
|
Ответ |
|
|
Если импорт завершен: |
success |
|
Если импорт продолжается: |
progress <текущий статус> |
|
Если ошибка: |
failure <текст ошибки> |
Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.
Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
|
Ответ |
|
|
Если файл распакован: |
progress Идет распаковка архива |
|
Если файл распаковывается: |
progress Распаковка архива завершена |
|
Если ошибка: |
failure <текст ошибки> |
Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется).
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка распаковки архива |
Проверьте работоспособность функции PHP zip_open и расширение Zip . Если все корректно — скачайте архив с сайта и проверьте его корректность вручную. |
Шаг 2.2 Удаление временных таблиц
|
Ответ |
|
|
Если успех: |
progress Временные таблицы удалены |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
0 |
Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.
Шаг 2.3 Создание временных таблиц
|
Ответ |
|
|
Если успех: |
progress Временные таблицы созданы |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
1 |
Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C .
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка создания временных таблиц |
Проверить права и подключение СУБД. |
Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)
|
Ответ |
|
|
Если файл читается: |
progress Обработано <число>% файла |
|
Если файл прочитан: |
progress Файл импорта прочитан |
|
Если ошибка: |
failure <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
2 |
Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем с временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка открытия файла импорта |
Проверить доступ к файлу |
Шаг 2.5 Индексация временных таблиц
|
Ответ |
|
|
Если успех: |
progress Временные таблицы проиндексированы |
|
Если ошибка: |
failure <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
3 |
Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка создания индекса для временных таблиц |
Возможная причина: проблемы с СУБД, правами в ней или подключением. |
Шаг 2.6 Импорт метаданных
|
Ответ |
|
|
Если успех: |
progress Метаданные импортированы успешно |
|
Если ошибка: |
failure Ошибка импорта метаданных <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
4 |
На этом шаге создаются или обновляются следующие данные:
-
Инфоблоки товаров и SKU
-
Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)
-
Торговый каталог
-
Свойства инфоблоков
-
UF-поля разделов инфоблоков
-
Типы цен
-
Склады
-
Единицы измерения
Важно: никакие сущности при импорте метаданных не удаляются. Случайно выгруженный из 1С склад или тип цены остается на сайте, пока администратор не удалит его вручную.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен |
Пояснения не требуются |
|
Ошибка создания типа информационных блоков |
После этого сообщения следует текст ошибки API, который пояснит причину ошибки. |
|
Ошибка добавления новой единицы измерения (код единицы: <код>) |
Текст ошибки Битрикс не выведет, необходимо разобрать XML файл самостоятельно и найти причину ошибки. |
|
Количество импортированных складов превышает разрешенное для данной редакции |
Пояснения не требуются |
|
Ошибка импорта пользовательского свойства (xml_id: <код>) |
Проверить параметры пользовательского свойства |
|
Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр. |
Пояснения не требуются |
|
В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно. |
Пояснения не требуются |
|
В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС. |
Пояснения не требуются |
Шаг 2.7 Импорт разделов каталога
|
Ответ |
|
|
Если успех: |
progress Группы импортированы |
|
Если ошибка: |
failure Ошибка импорта метаданных <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
5 |
На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID.
Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта.
Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).
Возможные ошибки
Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.
-
Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).
-
Доработать 1С, чтобы ошибки на этом этапе игнорировались пока не будет получен ответ «progress».
-
Повторить всю выгрузку несколько раз.
Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.
|
№ Обмена/шага |
Пропущено т.к. нет изменений |
Обработано |
Ответ |
|
1 |
0 |
10000 |
Ошибка сервера |
|
2 |
10000 |
10000 |
Ошибка сервера |
|
3 |
20000 |
1 |
progress Группы импортированы |
Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.
Шаг 2.8 Пересчет дерева разделов
|
Ответ |
|
|
Если успех: |
progress Деактивация/удаление групп завершено |
|
Если ошибка: |
failure Ошибка импорта метаданных <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
6 |
На этом шаге Битрикс выполняет две задачи:
-
Удаление/деактивация разделов (в старых версиях модуля обмена в 1С)
-
Перестройка дерева разделов
В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было.
В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит.
Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.
Шаг 2.9 Импорт товаров (повторяющийся)
|
Ответ |
|
|
Если идет процесс импорта: |
progress Обработано <число> из <число> элементов |
|
Если импорт завершен: |
progress Загрузка элементов завершена |
|
Если ошибка: |
failure <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
7 |
|
DONE |
Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле |
На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.
Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД.
Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.
При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Временная таблица не существует |
Ошибка возникает если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2. |
Шаг 2.10 Деактивация/удаление товаров (повторяющийся)
|
Ответ |
|
|
Если идет обработка: |
progress Обработано <число> из <число> элементов |
|
Если обработка завершена: |
progress Деактивация/Удаление элементов завершены |
|
Если ошибка: |
failure <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
8 |
|
DONE |
Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле |
На этом шаге раньше (как и на шаге 2.8 Пересчет дерева разделов ) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами.
В 2019 году на этом шаге ничего не происходит.
Шаг 2.11 Завершение импорта
|
Ответ |
|
|
Если успех: |
success Импорт успешно завершен |
|
Если ошибка: |
failure <текст ошибки> |
|
Сессия ($_SESSION[BX_CML2_IMPORT][NS]) |
|
|
STEP |
9 |
Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C .
Шаг 3. Деактивация старых данных
|
Запрос |
|
|
GET-параметры: |
type=<тип обмена> |
|
mode=deactivate |
|
|
sessid=<ID сессии> |
|
|
timestamp=<время на сервере> |
|
|
Cookie: |
<имя Cookie>=<значение Cookie> |
|
Ответ |
|
|
Если успех: |
success Деактивация элементов завершена |
|
Если ошибка: |
failure Ошибка деактивации элементов |
На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.
Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация):
Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.
Шаг 4. Завершение импорта
|
Запрос |
|
|
GET-параметры: |
type=<тип обмена> |
|
mode=complete |
|
|
sessid=<ID сессии> |
|
|
Cookie: |
<имя Cookie>=<значение Cookie> |
|
Ответ |
|
|
Если успех: |
success Завершение процедуры импорта |
|
Если ошибка: |
failure <текст ошибки> |
Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C , возвращаемого значения нет.
Обмен справочниками (1С -> Битрикс)
Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче чем обмен товарами и повторяет многие из его шагов.
Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена.
Шаг 1. Передача файла (повторяющийся)
см. аналогичный шаг обмена товарами, (отличается только mode, в данном типе обмена mode=reference).
Шаг 2. Основной
|
Запрос |
|
|
GET-параметры: |
type=reference |
|
mode=import |
|
|
sessid=<ID сессии> |
|
|
Cookie: |
<имя Cookie>=<значение Cookie> |
Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
см. аналогичный шаг обмена товарами.
Шаг 2.2 Подготовка справочника
|
Ответ |
|
|
Если успех: |
progress Найден или создан справочник. Код справочника: <ID> |
|
Если ошибка: |
failure <текст ошибки> |
На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение.
Важно знать следующие особенности импорта справочников:
-
1С не может удалить справочник или поле, только создать;
-
1С может создать только поля следующих типов: Строка, Булево, Дата, Число;
-
все поля, создаваемые 1С будут одиночными, необязательными, скрытыми в фильтре, показанными и редактируемыми в таблице;
-
Битрикс автоматически создает поля: UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.
Возможные ошибки
|
Текст ошибки |
Что делать |
|
Ошибка при создании поля в справочнике <Текст ошибки> |
Изучить текст и исправить в 1С или на сайте |
|
Ошибка при создании справочника <Текст ошибки> |
Изучить текст и исправить в 1С или на сайте |
|
Ошибка разбора XML. Код ошибки: <Код ошибки> |
Расшифровать код и исправить в 1С или на сайте |
Расшифровка кодов ошибок.
|
Код |
Объяснение |
|
10 |
Неизвестная ошибка парсинга XML файла |
|
20 |
Невалидный XML файл |
|
110 |
В XML файле отсутствует или пустой узел <Ид> справочника |
|
120 |
В XML файле отсутствует или пустой узел <Наименование> справочника |
|
210 |
Во время импорта UF-полей не был найден higloadblock |
|
220 |
В XML файле отсутствует или пустой узел <Ид> в <Реквизит> |
|
230 |
В XML файле отсутствует или пустой узел <Наименование> в <Реквизит> |
|
240 |
Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число) |
|
250 |
Неизвестная ошибка при создании UF-поля highload блока |
|
310 |
Во время элементов справочника не был найден higloadblock |
|
320 |
В XML файле отсутствует или пустой узел <Ид> в <ЭлементСправочника> |
|
330 |
В XML файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника> |
Шаг 2.3 Импорт элементов (повторяющийся)
|
Ответ |
|
|
Если импорт завершен: |
success Импорт успешно завершен |
|
Если импорт в процессе: |
progress Импортировано элементов: <число> |
|
Если ошибка: |
failure <текст ошибки> |
На этом шаге Битрикс импортирует все элементы HL-блока.
Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#»
В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу.
Возможные ошибки
Аналогичны ошибкам на предыдущем шаге.
Формат файлов
Формат файла обмена товарами
Формат файла обмена предложениями
Формат файла обмена ценами товаров и предложений
Формат файла обмена остатками товаров и предложений
Формат файла обмена справочниками
Поясним некоторые места этого XML.
-
Узел <Ид>
-
Значение становится названием сущности (после транслитерации).
-
С префиксом «b_» становится названием таблицы (после транслитерации).
-
-
Узел <Наименование> Не используется. Вообще. Но если узла не будет в файле, Битрикс выдаст ошибку (sic!)
-
Каждый <Реквизит> описывается тремя узлами:
-
<Ид>
-
Значение становится XML ID поля
-
С префиксом «UF_» становится кодом поля
-
-
<Наименование>
-
Значение становится названием UF-поля.
-
-
<ТипЗначений>
-
4 допустимых значения: Строка, Булево, Дата, Число
-
-
-
Каждый <ЭлементСправочника> описывается полями:
-
<Ид>
-
Становится значением поля UF_XML_ID
-
-
<НомерВерсии>
-
C префиксом <ID текущей сессии> + «#» становится значением поля UF_VERSION
-
-
<ЗначенияРеквизитов>
-
Реквизит Код
-
Становится значением поля UF_NAME
-
-
Реквизит Наименование
-
Становится значением поля UF_DESCRIPTION
-
-
Реквизит ПометкаУдаления
-
Не используется
-
-
Прочие реквизиты
-
Поля типа «Дата» представлены в формате YYYY-MM-DD HH:MI:SS.
-
Поля типа «Булево» представлены строками true или false (или пустой строкой).
-
-
Как дорабатывать обмен?
Все запросы (при стандартном обмене) 1С присылает на служебную страницу /bitrix/admin/1c_exchange.php. Но если заглянуть в файл, выяснится что вся логика скрыта в недрах модуля «Торговый каталог» в файле /bitrix/modules/sale/admin/1c_exchange.php. Эти страницу нельзя изменять, но можно скопировать (обычно мы копируем в /bitrix/admin/1c_exchange_custom.php) и изменить адрес в 1С.
На этой странице, в зависимости от переданных GET-параметров (совсем как комплексные компоненты в режиме не-ЧПУ) подключаются разные простые компоненты. Компоненты без шаблонов.
Значительная часть логики вынесена из этих компонентов в классы. Связь видов обмена, GET-параметров, компонентов и основных классов приведена ниже в таблице.
|
Тип данных |
GET[type] |
Компонент |
Класс с логикой |
Путь к классу |
|
Заказы, контрагенты |
sale |
bitrix:sale.export.1c |
\CSaleOrderLoader |
/bitrix/modules/sale/general/order_loader.php |
|
Товары, предложения, склады, цены, наличие |
catalog |
bitrix:catalog.import.1c |
\CIBlockCMLImport |
/bitrix/modules/iblock/classes/general/cml2.php |
|
Справочники |
reference |
bitrix:catalog.import.hl |
\CBitrixCatalogImportHl |
В папке с компонентом |
Существует 3 принципиально разных способа доработать обмен с 1С:
-
Не трогать стандартный обмен, использовать обработчики событий.
-
Кастомизировать файлы обмена на стороне сайта и доработать по требованиям
-
Выгружать нужные данные как справочники и обрабатывать самостоятельно.
Первый способ нужен для самых простых случаев, ничего серьезного сделать так не получится.
Второй способ реализуется так:
-
Создать собственную страницу обмена. Обычно это /bitrix/admin/1c_exchange_custom.php.
-
На эту страницу перенести код из /bitrix/modules/sale/admin/1c_exchange.php.
-
Кастомизировать нужный компонент обмена и заменить вызов системного компонента на вызов собственного (например, bitrix:catalog.import.1c на intervolga:catalog.import.1c) на новой странице обмена.
-
Может понадобиться изменение логики класса. Используйте наследование (например, класс \Intervolga\Custom\Exchange\Cml может быть наследником \CIBlockCMLImport и переопределять метод ImportElements).
После правок на сайте нужно изменить параметр «Адрес сайта и путь до скрипта обмена» в 1С. Имя пользователя и пароль одинаковые как для стандартного обмена, так и для доработанного.
Третий способ (через справочники) подходит, если у нужной сущности 1С совсем нет аналога на сайте или по каким-то причинам стандартный импорт совсем не годится. У модуля highloadblock есть все необходимые события (создание, редактирование, удаление) и для ненагруженных проектов это достаточно неплохое решение.
С помощью выгрузки справочников решаются такие задачи, как создание пользователей на сайте через 1С, выгрузка персональных цен и скидок, бонусов и информации для личного кабинета партнеров.
Отладка обмена — отдельный больной вопрос. Обычно решается логированием всех происходящих в недрах Битрикса процессов. В ИНТЕРВОЛГЕ разработали свою систему логирования обмена, которая представляет весь процесс в виде диаграммы Гантта. На ней сразу видно, если идут одновременно 2 обмена или 1С не дожидается ответа и начинает слать новые запросы.
Заключение
Часто самой сложной задачей в процессе разработки является именно интеграция с 1С. Отчетливое понимание происходящих в Битриксе процессов необходимо для серьезных проектов.
Источник: блог ИНТЕРВОЛГИ.











































