Как синхронизировать 1с и битрикс
Интеграция Битрикс 24 и 1С позволяет оптимизировать процессы внутри предприятия, что повышает качество сервиса и экономит массу времени. Синхронизация данных между двумя программами существенно сокращает объем работы менеджеров компании. Собственник же предприятия получает возможность легко контролировать все бизнес-процессы предприятия.
Решение интегрировать Битрикс24 и 1С позволяет:
- Автоматизировать продажи – время обмена заказами, счетами и товарами сокращается до нескольких секунд. Это ускоряет оформление заявок, и повышает уровень сервиса компании.
- Обеспечить полный контроль бизнеса – отслеживать все процессы можно в удобном формате через ПК или планшет. Кроме того, интеграция позволяет получать всегда только актуальные данные.
- Оптимизировать внутренние процессы – синхронизация экономит время сотрудников. Такое решение предотвращает необходимость выгрузки массивов информации для нескольких программ учета, их статистики и анализа.
Синхронизация 1С и Битрикс 24 – это простой и надежный способ улучшения вашего бизнеса. Этот процесс позволяет увеличить качество предоставляемых услуг и усилить конкурентоспособность компании на рынке. Настроить интеграцию между программами можно через модуль 1С:Бэкофис.
Установка модуля обмена: коротко о главном?
Чтобы подключить интеграцию систем 1С и Битрикс24, требуется скачать модуль обмена. Установка модуля происходит через 1С – необходимо:
- В интерфейсе выбрать «Файл» – «Отрыть» и указать путь к скачанному файлу.
- Далее откроется окно установки, где следует нажать «Установить модуль» .
- После распаковки перезагружаем программу. В нижней части интерфейсе слева появится команда «Синхронизация с Битрикс 24».
- Теперь можно приступать к первичной настройке модуля. Для этого переходим в Б24 и открываем приложение «1С + CRM Битрикс24», где требуется найти цифровой ключ.
- Далее возвращаемся к 1С и переходим по пути «Синхронизация с Б24» – «Настройки синхронизации» , после чего нажимаем кнопку «Создать подключение» . Внутри диалогового окна нужно вставить цифровой ключ-лицензию.
Программа самостоятельно определит адрес портала, и создаст подключение. На этом этапе при необходимости можно заполнить таблицу соответствий. Процедура позволяет настроить соответствие типов пользователей и клиентов, а также выбрать подходящий порядок обмена данными с 1С.
Настройки синхронизации 1С и Битрикс24: все, что нужно знать
После установки ключа проводится настройка обмена между 1С и Битрикс24 данными компании. Интерфейс системы предполагает возможность взаимодействия с категориями массивов, а также со способами синхронизации самой информации.
Настройка синхронизации позволяет осуществлять обмен данными из следующих категорий:
- Клиенты – здесь находится вся контактная информация об физических и юридических лицах, сотрудничающих с компанией.
- Товары – категория содержит товарные каталоги, сами товары и характеристики всех элементов.
- Счета – здесь находятся банковские реквизиты и прочая платежная информация всех контрагентов компании.
- Сделки – категория содержит историю и статистические данные об текущих, проведенных и запланированных продажах компании.
Интеграция с 1С позволяет выгружать информацию отдельно для каждой категории. При этом документооборот будет производиться в двустороннем порядке. Это позволяет полностью исключить утерю документов внутри какой-либо из систем.
Интеграция 1С и клиентов из CRM Bitrix 24
Выгрузка контактов клиентской базы из 1С считается первостепенной задачей после интеграции. Синхронизация контактов позволяет не упустить ни одного контрагента, а также предотвратить вероятность повторного обращения к клиенту. Инструкция по интеграции Битрикс24 для категории «Клиенты» следующая:
- Переходим в «Настройки синхронизации контрагентов» . При необходимости загрузить клиентов из CRM ставим галочку напротив «Загружать клиентов» .
- Провести синхронизацию контактов можно полностью или отдельными группами, здесь же можно выгрузить параметры пользовательских полей.
- В завершение интеграции нажимаем «Выгружать контрагентов» .
По умолчанию юридические лица из контактов выгружаются как компании, физические – как контакты. Значения можно изменить при необходимости в настройках. Если контакт клиента уже есть, модуль обмена сравнит и запишет свежее значение. Если информации нет – программа создаст нового контрагента.
Обратите внимание! Как правило, интеграция контрагентов между программами происходит в одностороннем порядке. Однако также возможна синхронизация контактов клиентов в двустороннем порядке.
Синхронизация товаров: как настроить выгрузку?
Выгрузка товаров из 1С в Битрикс24 позволяет синхронизировать товарные группы, а также свойства товаров и используемые единицы измерения. Для запуска обмена данными необходимо:
- Перейти к меню «Синхронизация информации о товарах» и активировать галочку напротив опции «Выгружать информацию о товарах» . При этом если был активирован обмен по счетам или сделкам – опция будет включена автоматически.
- Отфильтровать выгружаемые товары можно с помощью отбора. Для этого нажимаем кнопку «Настроить отбор» , что позволит отфильтровать товары по категориям «Номенклатура», «Остаток и цена», «Выгружаемые свойства» .
- В завершение использовать команду «Загружать информацию о товарах», если она не была активирована. Далее нажимаем «Принять и закрыть» .
Обратите внимание! Из CRM невозможна выгрузка изображений и цен товаров.
Интеграция с 1С всех счетов компании
Обмен счетами между программами позволяет контролировать всю информацию по оплате счетов или отгрузке товаров. Интеграция счетов – основной этап автоматизации продаж компании, ускоряющий время обработки заказов. Для этого необходимо:
- Перейти к меню «Настройки синхронизации счетов» .
- Далее требуется указать соответствие между программами. Для этого нажимаем «Настроить сопоставление статусов» .
- Затем нажимаем «Загрузить из Битрикс 24» и для каждого добавленного статуса выбираем аналог из 1С.
- Теперь в обеих программах необходимо поставить галочку напротив ячейки «Загружать счета» .
Интегрированные данные можно сортировать автоматически по мере добавления или на основе значений из CRM. Загруженные счета можно сразу сохранить, либо проводить через оплату, либо работать только с оплаченными.
Обратите внимание! Модуль обмена также поддерживает опцию обратной интеграции в CRM. Для этого необходимо в настройках выбрать «Выгрузить счета» и отфильтровать данные по нужным значениям.
Обмен данных по всем сделкам: как настроить?
Для интеграции сделок компании переходим к соответствующему окну настроек диалогового окна и нажимаем «Настроить». В открывшемся окне необходимо:
- Кликнуть кнопку «Настроить сопоставление статусов» , и указать соответствие между статусами сделок из Б24 и заказов 1С.
- Использовать команду «Загрузить с Битрикс 24» , после чего выбрать аналоги статус-значений из Б24 в 1С.
- Указать дату или способ нумерации сделок в базах данных.
- Нажать кнопку «Загружать сделки» для загрузки значений из Б24. Команда меню «Выгрузить» позволит выгружать информацию в обратном порядке.
Обратите внимание! Для каждой конфигурации характерны свои параметры настроек. К примеру, «УНФ» может выгружать сделки и счета в Битрикс, «Управление торговлей» – только обмениваться сделками.
Настройка режимов синхронизации: что нужно знать?
Ниже категорий в интерфейсе настроек можно выбрать режим обмена данными между программами. В настройках можно указать приоритет программы – по умолчанию основной стороной является Б24.
Пользователю предоставляется 3 метода обмена информации:
- Вручную – в этом случае обмен между 1С и порталом Битрикс24 будет производиться только при запуске клиентом. Идеальный вариант для малого бизнеса.
- По расписанию – этот метод позволяет назначить синхронизацию в определенное время. Чаще всего указывается период наименьшей нагрузки на сервер компании – например, с 3 до 5 часов ночи. Это оптимальное решение для малого и среднего бизнеса.
- В формате реального времени – режим позволяет передавать все данные в режиме онлайн. Вариант подходит для компаний с большим товарооборотом.
Подключение к Битрикс24 1С Бухгалтерия через модуль обмена имеет защиту от дублированная информации. Перед началом выгрузки все элементы проходят трехфакторную идентификацию, не позволяющую повторять уже имеющиеся данные.
Обратите внимание! Проводить синхронизацию данных полностью вручную целесообразно только в первый раз и при отсутствии массива информации в одной из программ. В остальных случаях целесообразно проводить только пакетный обмен данными или настроить обмен по расписанию или в режиме онлайн.
Что нужно знать программисту про интеграцию сайта и 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С и Битрикса
«Из коробки» (без доработок программиста) работают 4 типа обмена:
товары из 1С на сайт (тип «catalog»);
справочники из 1С на сайт (тип «reference»);
пользователей/контрагентов из 1С на сайт (тип «sale»);
заказы (тип «sale»):
Протокол
Все взаимодействия между 1С и Битриксом проводятся по HTTP, синхронно. Т.о. 1С подобна браузеру, она «открывает» специальную страницу, отправляет данные (методами POST и GET) и получает текстовый ответ. Есть даже способ имитировать выгрузку из 1С браузером (и мы часто используем этот трюк во время разработки и отладки). Подробнее про отладку мы рассказали в предыдущей статье «Типовые ошибки интеграции между 1С и 1С-Битрикс».
В терминах сетевых взаимодействий 1С — клиент, а сайт — сервер. Обращения всегда инициируются на стороне 1С. В 1С есть настройки адреса сайта, сайт про 1С не знает ничего.
Протокол синхронный. 1С отправляет следующий запрос на сайт только после получения ответа на предыдущий (или получения ошибки таймаута).
Формат
Данные передаются в двух форматах.
Первый формат — текстовый для ответов сайта на запросы из 1С. Сайт выводит в первой строке ответа «success», если завершил некую процедуру, «progress», если продолжает ее выполнять и «error» или «failure», если была ошибка. В последующих строках могут быть дополнительные данные (зависит от каждого конкретного запроса).
Второй формат — CommerceML 2 . Основан на XML, в этом формате передаются товары, предложения, цены, склады, заказы и контрагенты (пользователи+платежные профили).
Алгоритм
Подготовка к обмену
Выше мы уже сказали, что протокол обмена — синхронный HTTP. Все перечисленные типы обмена подразумевают выполнение нескольких запросов (шагов обмена) друг за другом. Первые два шага одинаковы для любого типа обмена, различия начинаются дальше
Авторизация
Basic access логин:
Логин сайта из настроек 1С
Basic access пароль:
Пароль сайта из настроек 1С
<имя Cookie авторизации>
<значение Cookie авторизации>
Любой обмен начинается с авторизации 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 минут. Вероятно неправильно настроены временные зоны. Выполните настройку и повторите обмен.
Проверить настройку часовых поясов на веб-сервере и на сервере БД
Запрос настроек сайта
<имя Cookie авторизации>=<значение Cookie авторизации>
На этом шаге 1С узнает важные для обмена настройки сайта. Управление этими параметрами на сайте происходит на странице «Интеграция с 1С» в панели управления сайтом.
Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик.
Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей.
Получив эти параметры, 1С начинает формирование данных для передачи на сайт. Если «zip=yes», то все файлы будут переданы как zip-архив. Иначе каждый выгружается по отдельности. Желательно включать всегда.
Ошибка инициализации временного каталога
При создании каталога для хранения файлов выгрузки произошла ошибка. Проверить права и путь для хранения файлов или закончилось место на диске. По умолчанию сайт складывает файлы в папку /upload/1c_catalog/.
Обмен товарами (1С -> Битрикс)
Данный тип обмена (type=catalog) используется для создания и обновления на сайте следующих сущностей:
UF-поля разделов в этом инфоблоке;
свойства элементов в этом инфоблоке;
разделы в инфоблоке товаров;
элементы в инфоблоке товаров (товары);
наличие товаров по складам.
При обмене товарами 1С формирует XML-файлы, передает их на сайт и контролирует их обработку сайтом. 1С может передать 4 вида файлов:
В файлах с префиксом import_ — разделы каталога, товары, свойства товаров.
В файлах с префиксом offers_ — SKU.
В файлах с префиксом prices_ — цены товаров и предложений.
В файлах с префиксом rests_ — остатки товаров и предложений по складам.
На шаге авторизации в случае успеха сервер вернет дополнительный параметр timestamp (текущее время). 1С сохранит timestamp и передаст на сайт на последнем шаге обмена товарами.
Обмен товарами
Шаг 1. Передача файла (повторяющийся)
Содержимое файла в виде строки
<имя Cookie>=<значение Cookie>
Шаг может выполняется несколько раз. Каждый файл выгружается частями не более file_limit байт (см. предыдущий шаг) в бинарном виде через сырой POST-запрос. Сайт создает файл, если его нет. Имя файла берет из GET-параметра filename и дописывает в него переданный контент. Так продолжается до тех пор, пока 1С не передаст все части этого файла.
Ошибка чтения HTTP данных
Проверить сетевое соединение между сайтом и 1С.
Ошибка открытия файла <имя файла> для записи
Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.
Ошибка записи в файл <имя файла>
Проверить права на файл и папку файла у пользователя apache, под которым работает Битрикс.
Шаг 2. Основной
<имя Cookie>=<значение Cookie>
Если импорт завершен:
Если импорт продолжается:
Этот шаг — особенный. Файл уже целиком загружен на сайт и Битрикс готов его обработать. Его обработка может состоять из 11 более мелких операций, о которых 1С ничего не знает. Поэтому в параметре GET приходит mode=import (один и тот же запрос!), но сайт выполняет совершенно разные операции. Текущий прогресс Битрикс сохраняет в сессии в переменной $_SESSION[BX_CML2_IMPORT][NS]. Например, узел STEP в этом массиве отвечает как раз за номер внутренней операции импорта.
Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
Если файл распакован:
Идет распаковка архива
Если файл распаковывается:
Распаковка архива завершена
Шаг исполняется, только если 1С передала файл в формате ZIP. Распаковка происходит в той же директории, где лежат все файлы обмена товарами (по умолчанию — /upload/1c_catalog/). Эта операция не нумеруется внутри Битрикса (значение STEP в сессии не изменяется).
Ошибка распаковки архива
Проверьте работоспособность функции PHP zip_open и расширение Zip . Если все корректно — скачайте архив с сайта и проверьте его корректность вручную.
Шаг 2.2 Удаление временных таблиц
Временные таблицы удалены
Работать напрямую с файлом XML (тем более, если он большой) неудобно и неэффективно. Поэтому все данные прочитываются во временную таблицу b_xml_tree. На этом подготовительном шаге таблица b_xml_tree, если она существует, удаляется.
Шаг 2.3 Создание временных таблиц
Временные таблицы созданы
Таблица b_xml_tree создается. Если объявлена PHP константа BX_XML_CREATE_INDEXES_IMMEDIATELY, таблица сразу же индексируется. В конце этого шага Битрикс испускает событие OnBeforeCatalogImport1C .
Ошибка создания временных таблиц
Проверить права и подключение СУБД.
Шаг 2.4 Загрузка файла во временную таблицу (повторяющийся)
Если файл читается:
Обработано <число>% файла
Если файл прочитан:
Файл импорта прочитан
Битрикс шаг за шагом начинает читать переданный из 1С файл, добавляя записи в таблицу b_xml_tree. Чтобы избежать проблем с временем исполнения, процесс происходит пошагово. Управление продолжительностью шага происходит на странице «Интеграция с 1С» в панели управления сайтом.
Ошибка открытия файла импорта
Проверить доступ к файлу
Шаг 2.5 Индексация временных таблиц
Временные таблицы проиндексированы
Для повышения скорости работы импорта таблица b_xml_tree индексируется после прочтения файла.
Ошибка создания индекса для временных таблиц
Возможная причина: проблемы с СУБД, правами в ней или подключением.
Шаг 2.6 Импорт метаданных
Метаданные импортированы успешно
Ошибка импорта метаданных
На этом шаге создаются или обновляются следующие данные:
Инфоблоки товаров и SKU
Служебные свойства каталога (с префиксом CML2_: CML2_BAR_CODE, CML2_ARTICLE, CML2_ATTRIBUTES…)
UF-поля разделов инфоблоков
Важно: никакие сущности при импорте метаданных не удаляются. Случайно выгруженный из 1С склад или тип цены остается на сайте, пока администратор не удалит его вручную.
Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен
Пояснения не требуются
Ошибка создания типа информационных блоков
После этого сообщения следует текст ошибки API, который пояснит причину ошибки.
Ошибка добавления новой единицы измерения (код единицы: <код>)
Текст ошибки Битрикс не выведет, необходимо разобрать XML файл самостоятельно и найти причину ошибки.
Количество импортированных складов превышает разрешенное для данной редакции
Пояснения не требуются
Ошибка импорта пользовательского свойства (xml_id: <код>)
Проверить параметры пользовательского свойства
Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр.
Пояснения не требуются
В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно.
Пояснения не требуются
В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС.
Пояснения не требуются
Шаг 2.7 Импорт разделов каталога
Ошибка импорта метаданных
На этом шаге в инфоблоке создаются и обновляются все разделы каталога, которые были в XML файле. Сопоставление разделов из XML-файла и в БД происходит по XML_ID.
Если на сайте нет раздела с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД. Если изменения нет, то Битрикс только обновляет поле TIMESTAMP_X и пропускает раздел. Если изменения есть — происходит полноценное обновление. Это происходит независимо от настроек сайта.
Для экономии ресурсов сервера добавление разделов происходит без пересчета дерева (речь о полях LEFT_MARGIN и RIGHT_MARGIN).
Так как импорт разделов не пошаговый, при обмене большом дереве разделов на сайте может возникать ошибка превышения времени исполнения. Решения три.
Увеличить время исполнения на странице «Интеграция с 1С» и в настройках сервера (nginx).
Доработать 1С, чтобы ошибки на этом этапе игнорировались пока не будет получен ответ «progress».
Повторить всю выгрузку несколько раз.
Объясним, как поможет повтор шага или всей выгрузки. Допустим, в XML-файле и на сайте 20001 раздел. Пусть за один проход Битрикс успевает импортировать только 10000 разделов.
Пропущено т.к. нет изменений
Битрикс каждый раз обрабатывает столько разделов, сколько успевает. При повторении выгрузки первые 10000 разделов он пропустит (обновит только TIMESTAMP_X) и обновит еще 10000 разделов, пока не наступил тайм-аут. И только на 3-ей выгрузке из 1С шаг будет завершен корректно.
Шаг 2.8 Пересчет дерева разделов
Деактивация/удаление групп завершено
Ошибка импорта метаданных
На этом шаге Битрикс выполняет две задачи:
Удаление/деактивация разделов (в старых версиях модуля обмена в 1С)
Перестройка дерева разделов
В старых версиях 1С отличить полную выгрузку от частичной просто: при частичной в узле «Классификатор» был атрибут СодержитТолькоИзменения=»true», при полной его не было.
В 2019 году 1С всегда выгружает этот атрибут. Если этого атрибута нет, Битрикс мог (и до сих пор может, просто этот код не используется) удалить, деактивировать старые разделы (или пропустить их). На выбор влиял параметр на странице «Интеграция с 1С». Сейчас эта настройка уже ни на что не влияет и ни деактивации, ни удаления не происходит.
Также на этом шаге пересчитываются служебные поля LEFT_MARGIN и RIGHT_MARGIN всех разделов.
Шаг 2.9 Импорт товаров (повторяющийся)
Если идет процесс импорта:
Обработано <число> из <число> элементов
Если импорт завершен:
Загрузка элементов завершена
Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле
На этом шаге в инфоблоке создаются и обновляются все товары, которые были в XML файле. Сопоставление товаров в файле товарам на сайте происходит по полю XML_ID.
Если на сайте нет товара с XML_ID из файла, он создается. Если есть, то выполняется сравнение полей из XML файла с аналогичными полями в БД.
Если изменения нет, и задан параметр «Использовать контрольные суммы элементов для оптимизации обновления каталога», Битрикс только обновляет поле TIMESTAMP_X и пропускает товар. Иначе происходит полноценное обновление.
При импорте товара заполняется поле TMP_ID. Значение для этого поля хранится в узле <НомерВерсии>. Если узла нет — Битрикс вычисляет контрольную сумму от всей информации о товаре из XML файла.
Временная таблица не существует
Ошибка возникает если с сайтом работает несколько 1С или одна 1С присылает несколько запросов одновременно. В одном потоке выполняется шаг 4.9, а другой запустил шаг 4.2.
Шаг 2.10 Деактивация/удаление товаров (повторяющийся)
Если идет обработка:
Обработано <число> из <число> элементов
Если обработка завершена:
Деактивация/Удаление элементов завершены
Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле
На этом шаге раньше (как и на шаге 2.8 Пересчет дерева разделов ) Битрикс проводил чистку товаров. Чистка товаров происходила только если в узле “Классификатор” XML файла не было пометки СодержитТолькоИзменения=»true» (старый формат выгрузки). Есть аналогичная настройка для выбора, что делать с товарами.
В 2019 году на этом шаге ничего не происходит.
Шаг 2.11 Завершение импорта
Импорт успешно завершен
Служебный шаг. Обработки данных нет, только испускается событие OnSuccessCatalogImport1C .
Шаг 3. Деактивация старых данных
timestamp=<время на сервере>
<имя Cookie>=<значение Cookie>
Деактивация элементов завершена
Ошибка деактивации элементов
На этом шаге в 2019 году Битрикс деактивирует все товары и разделы каталога, не затронутые в текущей сессии. Для этого время последнего изменения сравнивается с timestamp, который передает 1С — время начала текущей сессии, полученное на шаге авторизации.
Напомним, что эти настройки в панели управления сайта сейчас ни на что не влияют (всегда происходит деактивация):
Этот шаг будет выполнен, только если современная 1С делает полную выгрузку. Для выгрузки изменений и в старых версиях 1С этого шага нет.
Шаг 4. Завершение импорта
<имя Cookie>=<значение Cookie>
Завершение процедуры импорта
Служебный шаг. Обработки данных нет, только испускается недокументированное событие модуля catalog OnCompleteCatalogImport1C. Аргументы обработчика аналогичны обработчикам события OnSuccessCatalogImport1C , возвращаемого значения нет.
Обмен справочниками (1С -> Битрикс)
Данный тип обмена (type=reference) используется для создания и обновления на сайте HL-блоков. Этот тип намного короче чем обмен товарами и повторяет многие из его шагов.
Часто обмен справочниками — простой и быстрый способ расширить стандартные функции обмена.
Обмен справочниками
Шаг 1. Передача файла (повторяющийся)
см. аналогичный шаг обмена товарами, (отличается только mode, в данном типе обмена mode=reference).
Шаг 2. Основной
<имя Cookie>=<значение Cookie>
Шаг 2.1 Распаковка архива (повторяющийся, необязательный)
Шаг 2.2 Подготовка справочника
Найден или создан справочник. Код справочника: <ID>
На этом шаге Битрикс создает HL-блок (если не существует) и все UF-поля. В начале шага испускается событие модуля catalog OnBeforeCatalogImportHL. Событие недокументированное, в обработчики передаются массив параметров компонента и путь к XML-файлу. Обработчик может вызвать ошибку и вернуть произвольное сообщение.
Важно знать следующие особенности импорта справочников:
1С не может удалить справочник или поле, только создать;
1С может создать только поля следующих типов: Строка, Булево, Дата, Число;
все поля, создаваемые 1С будут одиночными, необязательными, скрытыми в фильтре, показанными и редактируемыми в таблице;
Битрикс автоматически создает поля: UF_NAME, UF_XML_ID, UF_VERSION, UF_DESCRIPTION.
Ошибка при создании поля в справочнике <Текст ошибки>
Изучить текст и исправить в 1С или на сайте
Ошибка при создании справочника <Текст ошибки>
Изучить текст и исправить в 1С или на сайте
Ошибка разбора XML. Код ошибки: <Код ошибки>
Расшифровать код и исправить в 1С или на сайте
Расшифровка кодов ошибок.
Неизвестная ошибка парсинга XML файла
Невалидный XML файл
В XML файле отсутствует или пустой узел <Ид> справочника
В XML файле отсутствует или пустой узел <Наименование> справочника
Во время импорта UF-полей не был найден higloadblock
В XML файле отсутствует или пустой узел <Ид> в <Реквизит>
В XML файле отсутствует или пустой узел <Наименование> в <Реквизит>
Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число)
Неизвестная ошибка при создании UF-поля highload блока
Во время элементов справочника не был найден higloadblock
В XML файле отсутствует или пустой узел <Ид> в <ЭлементСправочника>
В XML файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника>
Шаг 2.3 Импорт элементов (повторяющийся)
Если импорт завершен:
Импорт успешно завершен
Если импорт в процессе:
Импортировано элементов: <число>
На этом шаге Битрикс импортирует все элементы HL-блока.
Если выгрузка была полной, Битрикс удаляет все элементы HL-блока, у которых значение поля UF_VERSION не начинается с <ID текущей сессии> + «#»
В конце шага Битрикс испускает событие модуля catalog OnSuccessCatalogImportHL. Аргументы — массив параметров компонента и путь к файлу.
Аналогичны ошибкам на предыдущем шаге.
Формат файлов
Формат файла обмена товарами
Формат файла обмена предложениями
Формат файла обмена ценами товаров и предложений
pasted image 0 (35).png
Формат файла обмена остатками товаров и предложений
Формат файла обмена справочниками
Поясним некоторые места этого 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-параметров, компонентов и основных классов приведена ниже в таблице.
Класс с логикой
Товары, предложения, склады, цены, наличие
В папке с компонентом
Существует 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С с интернет-магазином
Третий способ (через справочники) подходит, если у нужной сущности 1С совсем нет аналога на сайте или по каким-то причинам стандартный импорт совсем не годится. У модуля highloadblock есть все необходимые события (создание, редактирование, удаление) и для ненагруженных проектов это достаточно неплохое решение.
С помощью выгрузки справочников решаются такие задачи, как создание пользователей на сайте через 1С, выгрузка персональных цен и скидок, бонусов и информации для личного кабинета партнеров.
Отладка обмена — отдельный больной вопрос. Обычно решается логированием всех происходящих в недрах Битрикса процессов. В ИНТЕРВОЛГЕ разработали свою систему логирования обмена, которая представляет весь процесс в виде диаграммы Гантта. На ней сразу видно, если идут одновременно 2 обмена или 1С не дожидается ответа и начинает слать новые запросы.
Заключение
Часто самой сложной задачей в процессе разработки является именно интеграция с 1С. Отчетливое понимание происходящих в Битриксе процессов необходимо для серьезных проектов.
Синхронизация данных
Подсистема синхронизации данных позволяет синхронизировать в обе стороны данные CRM и интернет-магазина. Синхронизация может происходить в трех режимах:
- Ручном. Только пользователем по кнопке.
- По расписанию. Автоматически по заданному расписанию
- В режиме реального времени. В момент изменения данных. Для режима реального времени должна быть установлена связь между Битрикс24 и 1С.
Для сущностей Битрикс24 «Компания», «Контакт», «Сделка» из 1С выгружается дело, нажав на которое может открыться сущность 1С в слайдере или десктоп приложении, связанная с сущностью Битрикс24. Также по дело осуществляется привязка к роботам и триггерам.
Синхронизация данных настраивается в разрезе настроек подключения. Перейдите в Раздел Битрикс24 — Настройки синхронизации.
При переходе на список настроек синхронизации можно увидеть, есть ли для текущей настройки подключения настройки синхронизации. У настроек подключения с серым фоном нет настроек синхронизации.
Из списка настроек по выбранной настройки подключения можно запустить синхронизацию. Синхронизация всегда выполняется в режиме изменений. Если требуется полная синхронизация, то выполнить ее можно по кнопке «Еще – Выполнить полную синхронизацию», но выполнять ее рекомендуется только на этапе первоначальной синхронизации данных, далее рекомендуется выполнять только в режиме синхронизации изменений.
При двойном щелчке мыши на настройку подключения, или при нажатии на кнопку «Настроить синхронизацию», открывается окно настройки синхронизации.
В группе «Настройка синхронизации» задается перечень типов данных, которые должны синхронизироваться между 1С и Битрикс24. Для товаров и счетов можно выбрать версию. Рекомендуется использовать последние версии синхронизации.
В группе «Способ синхронизации данных» задается способ выполнения синхронизации. Если синхронизация выполняется в режиме реального времени, то для корректной работы должно быть запущено подключение к Битрикс24(в разделе «1С + CRM Битрикс24» желтый фон у настройки подключения).
В группе «Прочие настройки» указываются менее влияющие настройки синхронизации.
В группе «Сопоставление типов контрагентов к шаблонам Битрикс24» указывается какого типа контрагент или партнер будет в зависимости от шаблона Битрикс24. Это очень важная настройка задается также в окне настройки синхронизации клиентов.
В группе «Сопоставление ставок НДС 1С и Битрикс24» задается связь ставок НДС 1С и Битрикс24. Это важная настройка задается также в окне настройки синхронизации товаров.
В группе «Сопоставление пользователей 1С и Битрикс24» задается привязка пользователей обеих систем. В первую очередь эта настройка необходима для заполнения ответственного за контрагентом или заказом, в зависимости от менеджера Битрикс24. Также по этой настройки заполняются дополнительные поля с типом «Сотрудник». Эта же настройка используется и для модуля экспорта печатных форм и отчетов в живую ленту.
В группе «Настройки удаления объектов» настраиваются сценарии.
Если установлен флаг «Управлять пометкой на удаление через поле «Удален в 1С», то из 1С в Битрикс24 для компаний/контактов/сделок/счетов выгружается служебное дополнительное свойство 1С (создается модулем), которое хранит признак пометки удаления объекта в 1С. Если свойство не выгрузилось на сайт, то необходимо заново сохранить это свойство в 1С, чтобы оно при следующей синхронизации выгрузилось в Битрикс24. Дополнительное свойство 1С это дополнительный реквизит Битрикс24. По значению дополнительного реквизита Битрикс24 можно увидеть, помечен ли объект 1С, а также управлять пометкой удаления объекта 1С из Битрикс24.
Если установлен флаг «Помечать на удаление в 1С если удален в Б24», то когда удаляется объект в Битрикс24, а затем выполняется синхронизация в режиме изменения – объект 1С, привязанный к удаленной сущности Битрикс24 будет помечен на удаление.
В группе «Прочие настройки» есть настройки не относящиеся к подгруппам.
По настройке «Количество повторений при ошибках» указывается, сколько раз будет повторно выгружаться пакет данных, если во время выгрузки получена ошибка.
По умолчанию порядок синхронизации такой: сначала данные выгружаются из Битрикс24 в 1С, а затем из 1С загружаются в Битрикс24. Настройкой «Порядок выполнения синхронизации» можно изменить порядок.
Если установлен флаг «Игнорировать ошибки», то если во время выгрузки из Битрикс24 в 1С произойдет критическая ошибка, то выгрузка из 1С в Битрикс24 все равно будет выполнена. И наоборот.
Если установлен флаг «Не регистрировать изменения», то в базе 1С не регистрируются изменения. Это влечет за собой то, что изменения 1С в битрикс24 не выгружаются.
По кнопке «Очистить настройки синхронизации» заполняются по умолчанию настройки синхронизации данных.
Как синхронизировать 1с и битрикс
Курс предназначен для базовой подготовки пользователей, осуществляющих администрирование порталов, созданных на коробочной версии сервиса Битрикс24. Изучение курса позволяет освоить основные методы администрирования системы. Если вы хотите ознакомиться с тем как внедрить наш сервис в работу вашей компании, то для вас создан курс Внедрение корпоративного портала.
Курс предусматривает обучение по двум ролям администраторов: Администратор корпоративного портала и Администратор системы.
Разные роли созданы в связи с тем, что для администрирования настроенного и отлаженного корпоративного портала нет необходимости в работе профессионала высокого уровня. Вполне достаточно пользователя успешно изучившего данный курс в рамках роли Администратор КП.
При условии качественного изучения материалов курса, по его окончании специалист должен уметь:
- настраивать модули системы;
- использовать возможности интерфейса по управлению системой;
- управлять доступом к системе, сайтами, пользователями, группами пользователей;
- управлять содержимым портала;
- работать с инструментами системы;
Начальные требования
Для прохождения курса необходимо:
- наличие базовых навыков компьютерной грамотности и навыков работы с ОС Windows;
- наличие представлений о WWW и организации доступа к веб-серверу;
- базовые навыки установки и администрирования *nix-систем.
Если вам предстоит самостоятельная установка системы, то рекомендуется к изучению курс Установка и настройка.
Администратору системы будет полезно ознакомиться с курсом Разработчик Bitrix Framework, рассказывающем о принципах работы Bitrix Framework.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов — ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, добавляем новые уроки. Поэтому итоговое количество баллов курса и количество набранных вами баллов могут различаться между собой. Набранные вами баллы, в отличие от суммы баллов курса, не пересчитываются. Не переживайте!
Отличный результат — это если общее число набранных вами баллов отличается от максимального на несколько процентов.
Тесты и сертификат
После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче линейки тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.
Также вы можете поделиться ссылкой на страницу со своими сертификатами. Для этого на странице Моё обучение отметьте опцию Разрешить публичный доступ к резюме студента и скопируйте ссылку на страницу резюме . Страница с вашим резюме будет доступна всем, кому вы отправите ссылку на неё.
Комментарии к урокам
На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой: |
Для преподавания офлайн
Если данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 10 дней (70 академических часов).
Если нет интернета
Скачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на
Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
Linux:
Calibre
FBReader
Cool Reader
Okular обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла — от 05.05.2023.