Инструкция по интеграции интернет-магазина 1С-Битрикс с TotalCRM

Интеграция интернет-магазина на 1С-Битрикс с TotalCRM позволяет автоматизировать обмен данными: синхронизировать каталог товаров, передавать заказы в единую CRM-систему и управлять статусами. В этой инструкции — полная настройка обмена через CommerceML.

Интеграция карточек товара

  • Интеграция осуществляется через внешний код
  • Из TotalCRM передается доступный остаток товара
  • TotalCRM управляет ценами товара
  • Доступна интеграция с системами учета (1С, МойСклад)

Интеграция заказов

  • Заказы с сайта попадают в единое окно заказов TotalCRM
  • Полная синхронизация статусов заказа
  • Интеграция с курьерскими службами. Заказ отгружается через TotalCRM
  • Финансовая аналитика в едином окне

1. Введение

1.1. Назначение документа

Настоящий документ представляет собой подробное техническое руководство по настройке обмена данными между интернет-магазином, работающим на платформе "1С-Битрикс: Управление сайтом", и системой управления взаимоотношениями с клиентами (CRM) - TotalCRM.

Инструкция предназначена для широкого круга специалистов:

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

Документ не привязан к конкретному клиенту и описывает стандартные сценарии, подходящие для большинства проектов по внедрению TotalCRM в связке с 1С-Битрикс.

1.2. Цели интеграции

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

  1. Централизованное управление каталогом: Все изменения товаров (названия, цены, остатки) вносятся в TotalCRM и автоматически транслируются на сайт. Это исключает рассинхронизацию данных и ручной ввод.
  2. Автоматизация обработки заказов: Заказы, оформленные на сайте, автоматически попадают в TotalCRM. Это позволяет операторам работать с единой лентой заказов, отслеживать их статусы и передавать в учетную систему (1С) без ручного переноса данных.
  3. Консолидация данных по всем каналам продаж: Заказы из интернет-магазина, маркетплейсов и офлайн-точек собираются в одном месте, что дает целостную картину бизнеса и упрощает управленческий учет.
  4. Повышение прозрачности процессов: Статусная модель заказа (от "Нового" до "Доставленного") становится единой для всех каналов, что упрощает контроль за исполнением заказов как менеджерами, так и клиентами.

1.3. Используемый протокол обмена

Для обмена данными между системами используется открытый стандарт CommerceML (Commerce Markup Language) версии 2.x.

CommerceML является отраслевым стандартом для обмена торговой информацией между различными системами учета и интернет-платформами в экосистеме 1С. Он разработан специально для передачи:

  • Каталогов товаров (структура, характеристики, фото).
  • Предложений (цены, остатки, склады).
  • Заказов и их статусов.
  • Информации о контрагентах (клиентах, поставщиках).

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

2. Общая архитектура интеграции

Интеграция строится на двустороннем синхронно-асинхронном обмене данными между тремя основными компонентами информационной системы:

  1. Веб-сайт (1С-Битрикс) - источник заказов и получатель данных о товарах.
  2. TotalCRM - система-оркестратор, центральный узел управления продажами, заказами и клиентами.
  3. Учетная система клиента (1С:УТ / 1С:Бухгалтерия / КА) - получатель заказов и источник данных о товарах (цены, остатки) и статусах отгрузок.

Все взаимодействия осуществляются по протоколу HTTP/HTTPS, что позволяет организовать обмен как через локальные сети, так и через Интернет. В качестве формата данных используется XML (eXtensible Markup Language) в структуре CommerceML.

2.1. Схема потоков данных

  • Поток A: Учетная система → TotalCRM
    • Назначение: Поддержка актуального справочника "Товары" в TotalCRM.
    • Содержимое: Номенклатура, цены, остатки.
    • Инициатор: 1С (выгружает данные по расписанию или в реальном времени).
  • Поток B: TotalCRM → Сайт (1С-Битрикс)
    • Назначение: Обновление витрины интернет-магазина.
    • Содержимое: Каталог товаров (импорт), остатки и цены (офферы).
    • Инициатор: TotalCRM (периодически запрашивает и отправляет данные, либо использует механизм "загрузки файлов" на сайт).
  • Поток C: Сайт (1С-Битрикс) → TotalCRM
    • Назначение: Передача оформленных заказов в CRM для дальнейшей обработки.
    • Содержимое: Заказы, данные клиентов, адреса доставки.
    • Инициатор: TotalCRM (периодически запрашивает заказы у сайта).
  • Поток D: TotalCRM → Учетная система (1С)
    • Назначение: Передача заказов для дальнейшего бухгалтерского и управленческого учета.
    • Содержимое: Заказы со всеми товарными позициями, клиентами и суммами.
    • Инициатор: TotalCRM (периодически выгружает заказы в 1С).

Важно: Потоки B и C опосредуют обмен данными между сайтом и учетной системой, минуя прямую интеграцию "Сайт ↔ 1С". Это дает преимущество в единообразии данных: например, статус заказа, обновленный в 1С, синхронизируется сначала с TotalCRM (Поток A), а затем уже может быть передан на сайт (Поток B), если это необходимо.

3. Описание компонентов и ролей в TotalCRM

Для реализации обменов в TotalCRM используются модули и консольные команды. Их работа основана на объектно-ориентированном подходе (Symfony Framework), что позволяет легко настраивать и расширять функциональность.

3.1. Разделы, участвующие в интеграции

Понимание этих сущностей критично для ИТ-специалистов при мониторинге или расширении интеграции.

Разделы в TotalCRMНазначение
ИнтеграцииХранит настройки подключения к внешней системе (сайту или 1С). Содержит логин, пароль, URL, тип интеграции (bitrix_products, bitrix_orders, 1c_products и т.д.), статус (активна/неактивна), а также технические поля для логирования (дата последнего обмена, внешние идентификаторы).
Каналы сбытаПредставляет канал продаж. В данном случае — это ваш интернет-магазин. К этому каналу привязываются склады, прайс-листы, настройки доставки и оплаты.
Справочник товараНоменклатура. Каждая запись уникально идентифицируется в системе с помощью idexternal (GUID из 1С) или артикула.
Справочник прайс-листовСправочник типов цен (розничная, оптовая, закупочная и т.д.).
Справочник складовСправочник складов.
ЗаказыСодержит всю информацию о заказе: номер, дата, клиент, статус, сумма.
ПолучателиСодержит ФИО, телефон, email, адрес доставки
Позиции заказовТтоварная строка. Связывает заказ и товар, содержит количество, цену и сумму.

3.2. Консольные команды для работы с сайтом (Bitrix)

Ниже приведено описание команд, которые обеспечивают обмен с интернет-магазином. Все они являются частью пакета интеграции 1C-Битрикс.
Запуск команд осуществляется в автоматическом режиме, или в настройках канала сбыта (карточке маркетплейса)

  1. ts:integrations:bitrix:export-products
  2. ts:integrations:bitrix:import-orders

4. Настройка и обмен данными с сайтом (Bitrix)

В этом разделе мы подробно рассмотрим, как настроить каждый из потоков данных между TotalCRM и сайтом, а также разберем структуру передаваемых XML-файлов.

</b>Total<b>CRM</b>

Настройка включает в себя заведение кабинета сайта в разделе маркетплейсов (каналов сбыта):
1. Название кабинета - отображаемое название во всех интерфейсах программы
2. Юридическое лицо - связанное с сайтом юридическое лицо
3. Интеграция УС - указание с какой интеграцией будет осуществляться обмен. Логин и пароль для подключения к сайте  указывается в настройках интеграции
4. Активность - признак, что интернет-магазин активен
5. Импорт заказов FBS/DBS - признак, что будет осуществляться обмен заказами по указанной интеграции

</b>Total<b>CRM</b>

На вкладке [Прайс-листы] настраиваются выгружаемые прайс-листы (тип цен).
Возможно указания максимум 3-х прайс-листов, по которым будут выгружаться цены по каждой номенклатуре
Название типов цен - цена продажи, старая цена, минимальная цена - не важно, маппинг типов цен осуществляется на стороне 1C-Битрикс, TotalCRM передает все указанные цены у указанием внешнего кода, который указывается в настройках прайс-листа.

</b>Total<b>CRM</b>

На вкладке [Склады FBS] настраивается маппинг передаваемых остатков по складам хранения.
Можно указывать несколько складов FBS.
Настройки маппинга склада со складами хранения и параметрами обработки заказов осуществляется в открывающемся окне настроек склада

</b>Total<b>CRM</b>

Помимо настроек обработки заказов, для обмена с 1С-Битрикс указывается внешний код - он будет использоваться в обмене остатками

</b>Total<b>CRM</b>

Настройка интеграции - указывается тип интеграции, логин, пароль, адрес сайта и внешний код, который должен быть равен коду каталога товаров в 1С-Битрикс.
Внешний код интеграции вляет на сопоставление передаваемых товаров из TotalCRM c каталогом товаров в 1С-Битрикс, которых там может быть несколько.

</b>Total<b>CRM</b>

Для запуска обменов в ручном режиме необходимо воспользоваться пунктами меню в карточке маркетплейса:
1. Действия / Обмен данными / Экспорт / Остатки FBS - выгрузка номенклатурного справочника с цена и остатками
2. Действия / Обмен данными / Импорт / Заказы FBS - импорт заказов с сайта, помеченных на выгрузку (новых или измененных)
Остальные пункты меню - не импользуются.

4.1. Поток: TotalCRM → Сайт (Экспорт товаров)

4.1.1. Подготовка сайта (1С-Битрикс)

Для того чтобы TotalCRM мог отправлять данные на сайт, на стороне Bitrix должен быть доступен стандартный скрипт обмена, расположенный по адресу:/bitrix/admin/1c_exchange.php

Этот скрипт входит в состав модуля "Информационные блоки" и "Интернет-магазин". Для его активации и настройки необходимо:

  1. Включить обработку обмена в настройках модуля (Администрирование → Настройки → Настройки модулей → Интернет-магазин → Обмен с 1С).
  2. Установить галочку "Разрешить обмен с 1С".
  3. Задать логин и пароль для доступа к скрипту. Важно: Эти учетные данные будут использоваться в настройках интеграции TotalCRM.

4.1.2. Настройка в TotalCRM

Для создания новой интеграции необходимо заполнить следующие поля:

  • Название интеграции: Например, "Экспорт товаров на сайт".
  • Тип интеграции: Выбираем Bitrix Products (или Bitrix Products and Orders, если планируем использовать один набор настроек для обоих обменов).
  • Сайт (URL): Адрес вашего сайта, но без пути к скрипту. Например: https://мой-магазин.ru.
  • Логин / Пароль: Учетные данные, установленные на сайте для доступа к /bitrix/admin/1c_exchange.php.
  • Канал продаж (Marketplaces): Выбираем созданный ранее канал продаж "Интернет-магазин".
  • Настройки экспорта товаров (settingsImportProducts):
    • fieldArticul: Поле, используемое в качестве артикула (externalId - внешний код из 1С или articul - артикул из карточки товара). Рекомендуется externalId для максимальной совместимости с 1С.
    • isUpdateNameMc: Разрешить обновление названия товара на сайте.
    • isUpdateArticul: Разрешить обновление артикула.

4.1.3. Структура файлов обмена

Для экспорта товаров TotalCRM формирует два основных файла:

Файл 1: import.xml (Каталог товаров)

Этот файл содержит структуру каталога и описание товаров. Он отправляется первым для создания или обновления инфоблоков на сайте.

Ключевые элементы:

Элемент (Тег)ОписаниеПримечание
КлассификаторГруппы товаров (категории, разделы).Структура вложенности (Группа → Группы → Группа).
КаталогОписание самих товаров.
ТоварыСписок товаров.
ТоварОписание конкретной позиции.
ИдУникальный идентификатор товара.Используется для сопоставления (связи) товара в разных системах. Обычно это GUID из 1С.
НаименованиеНазвание товара.Отображается на сайте.
АртикулАртикул товара.
ШтрихкодШтрихкод товара.
БазоваяЕдиницаЕдиница измерения.Шт, кг, м и т.д.
Группы / ИдГруппа, к которой привязан товар.Должна соответствовать Ид из Классификатор.
ЗначенияРеквизитовДополнительные свойства товара.Могут использоваться для передачи характеристик.

Пример фрагмента import.xml:

<КоммерческаяИнформация ВерсияСхемы="2.08" ДатаФормирования="2026-08-11T12:00:00"> <Классификатор> <Ид>MY_STORE_CATALOG</Ид> <Наименование>Номенклатура</Наименование> <Группы> <Группа> <Ид>1c_group_kitchen</Ид> <Наименование>Кухонная техника</Наименование> <Группы> <Группа> <Ид>1c_group_mixers</Ид> <Наименование>Миксеры</Наименование> </Группа> </Группы> </Группа> </Группы> </Классификатор> <Каталог> <Ид>MY_STORE_CATALOG</Ид> <ИдКлассификатора>MY_STORE_CATALOG</ИдКлассификатора> <Товары> <Товар> <Ид>1c_product_001</Ид> <Наименование>Миксер Braun MQ 100</Наименование> <Артикул>MX-100</Артикул> <БазоваяЕдиница Код="796">шт</БазоваяЕдиница> <Группы> <Ид>1c_group_mixers</Ид> </Группы> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Мощность</Наименование> <Значение>500 Вт</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Товар> </Товары> </Каталог> </КоммерческаяИнформация>

Файл 2: offers.xml (Предложения - Цены и Остатки)

Этот файл содержит коммерческие предложения: цены для разных типов покупателей и остатки на складах. Отправляется после import.xml.

Ключевые элементы:

Элемент (Тег)ОписаниеПримечание
ПакетПредложенийОбертка для предложений.
ТипыЦенСписок типов цен (Розничная, Оптовая и т.д.).Для каждого типа указывается Ид и Валюта.
СкладыСписок складов.Для каждого склада указывается Ид и Наименование.
ПредложениеПредложение для конкретного товара.
ИдДолжен совпадать с Ид товара из import.xml.Критично для связи.
ЦеныСписок цен для товара.Для каждой цены указывается ИдТипаЦены (из ТипыЦен) и ЦенаЗаЕдиницу.
Склад (элемент)Остаток на конкретном складе.Атрибуты: ИдСклада (из Склады), КоличествоНаСкладе.

Пример фрагмента offers.xml:

<КоммерческаяИнформация ВерсияСхемы="2.08" ДатаФормирования="2026-08-11T12:00:00"> <ПакетПредложений> <Ид>MY_STORE_CATALOG#</Ид> <ИдКаталога>MY_STORE_CATALOG</ИдКаталога> <ТипыЦен> <ТипЦены> <Ид>price_retail</Ид> <Наименование>Розничная</Наименование> <Валюта>RUB</Валюта> </ТипЦены> </ТипыЦен> <Склады> <Склад> <Ид>storage_msk</Ид> <Наименование>Основной склад (Москва)</Наименование> </Склад> </Склады> <Предложения> <Предложение> <Ид>1c_product_001</Ид> <Наименование>Миксер Braun MQ 100</Наименование> <Цены> <Цена> <ИдТипаЦены>price_retail</ИдТипаЦены> <ЦенаЗаЕдиницу>2500.00</ЦенаЗаЕдиницу> <Валюта>RUB</Валюта> </Цена> </Цены> <Склад ИдСклада="storage_msk" КоличествоНаСкладе="15" /> <Количество>15</Количество> </Предложение> </Предложения> </ПакетПредложений> </КоммерческаяИнформация>

4.1.4. Алгоритм работы команды export-products

  1. Анализ данных: Команда собирает данные из разных таблиц. Она проверяет, какие товары (и их цены/остатки) связаны с конкретным "Магазином" (Marketplace) через сущность MarketplacesMc.
  2. Генерация GUID: Для корректного обновления данных на сайте, команда использует существующий GUID (внешний код) товара, который изначально был создан в 1С. Если товар новый, он также получает свой уникальный GUID.
  3. Сборка XML: Формируются два больших XML-документа. Команда старается оптимизировать размер файлов, используя метод "дельта" (передавая только изменения), если это предусмотрено настройками.
  4. Отправка на сайт:
  5. Обработка ответа: Команда анализирует ответы от скрипта Bitrix. Если в ответе приходит success - обмен завершен успешно.

4.2. Поток: Сайт → TotalCRM (Импорт заказов)

4.2.1. Настройка в TotalCRM

Для настройки импорта заказов создается или используется та же самая запись в Integrations, что и для экспорта товаров, но с типом Bitrix Orders (или расширенным Bitrix Products and Orders).

Поля настройки аналогичны экспорту:

  • URL, логин, пароль для доступа к /bitrix/admin/1c_exchange.php.
  • Выбор канала продаж (Marketplace), в который будут попадать заказы.

4.2.2. Структура файла заказов

Заказы, передаваемые с сайта, формируются в виде файла в том же формате CommerceML.

Файл: orders.xml (Заказы)

Ключевые элементы:

Элемент (Тег)ОписаниеПримечание
ДокументОписание одного заказа.
ИдУникальный ID заказа на сайте.Используется для проверки уникальности (идемпотентности) и исключения дублей.
НомерНомер заказа, видимый покупателю.
Дата / ВремяДата и время оформления заказа.
СуммаИтоговая сумма заказа.
КомментарийКомментарий к заказу.Часто содержит информацию о доставке и способе оплаты.
СтатусТекущий статус заказа в Bitrix.Может использоваться для приведения к статусной модели TotalCRM.
Контрагенты / КонтрагентДанные о покупателе.
Контакты / КонтактТелефон и email покупателя.Критично для поиска клиента в TotalCRM.
АдресАдрес доставки.
Товары / ТоварТоварные позиции в заказе.Содержат Ид (GUID товара), Артикул, Наименование, ЦенаЗаЕдиницу, Количество, Сумма.
ЗначенияРеквизитовДополнительные данные.Например, способ оплаты (Метод оплаты), признак оплаты (Заказ оплачен).

Пример фрагмента orders.xml:

<КоммерческаяИнформация ВерсияСхемы="2.08" ДатаФормирования="2026-08-11T14:00:00"> <Документ> <Ид>B-ORD-2026-001</Ид> <Номер>2026-001</Номер> <Дата>11.08.2026</Дата> <Время>13:45:00</Время> <Сумма>5900.00</Сумма> <Комментарий> Способ доставки: Курьер Адрес доставки: г. Москва, ул. Пушкина, д. 10 Получатель: Петров Петр Петрович </Комментарий> <Статус>Подтвержден</Статус> <Контрагенты> <Контрагент> <Ид>user_12345</Ид> <Наименование>Петров Петр Петрович</Наименование> <Контакты> <Контакт> <Тип>Телефон</Тип> <Значение>+7 (999) 123-45-67</Значение> </Контакт> <Контакт> <Тип>Почта</Тип> <Значение>petrov@example.com</Значение> </Контакт> </Контакты> <Адрес> <Представление>г. Москва, ул. Пушкина, д. 10</Представление> </Адрес> </Контрагент> </Контрагенты> <Товары> <Товар> <Ид>1c_product_002</Ид> <Артикул>BL-100</Артикул> <Наименование>Блендер Braun BL 100</Наименование> <ЦенаЗаЕдиницу>4500.00</ЦенаЗаЕдиницу> <Количество>1</Количество> <Сумма>4500.00</Сумма> </Товар> <Товар> <Ид>1c_product_001</Ид> <Артикул>MX-100</Артикул> <Наименование>Миксер Braun MQ 100</Наименование> <ЦенаЗаЕдиницу>1400.00</ЦенаЗаЕдиницу> <Количество>1</Количество> <Сумма>1400.00</Сумма> </Товар> </Товары> <ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Метод оплаты</Наименование> <Значение>Банковская карта</Значение> </ЗначениеРеквизита> <ЗначениеРеквизита> <Наименование>Заказ оплачен</Наименование> <Значение>true</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов> </Документ> </КоммерческаяИнформация>

4.2.3. Алгоритм работы команды import-orders

  1. Авторизация и запрос: Команда авторизуется на сайте и делает запрос на получение XML-файла с заказами (по сути, имитирует работу 1С в режиме "загрузки заказов").
  2. Получение XML: Сайт генерирует XML-файл, содержащий все новые заказы (которые еще не были выгружены).
  3. Парсинг:
  4. Создание заказа: Новый заказ создается в TotalCRM с необходимыми полями (клиент, товары, суммы) и присваивается выбранному каналу продаж ("Интернет-магазин").
  5. Обновление статусов: Заказ получает начальный статус, принятый в компании (например, "Новый").
  6. Подтверждение успеха: После обработки всех заказов команда отправляет на сайт подтверждение mode=success. Это позволяет сайту пометить заказы как выгруженные, чтобы избежать дублирования при следующем запросе.

5. Интеграция с учетной системой (1С)

5.1. Общая схема интеграции

Взаимодействие с учетной системой (например, 1С:Управление торговлей) осуществляется по тем же принципам, но здесь TotalCRM выступает в роли посредника и единого источника данных для сайта.

  1. Выгрузка каталога из 1С: 1С выгружает в TotalCRM файлы с товарами и остатками. Это может происходить как по расписанию, так и по факту изменений.
  2. Обработка в TotalCRM: Команда ts:1c:import-products обрабатывает эти файлы, обновляя справочник товаров (Katmc), цены и остатки.
  3. Синхронизация с сайтом: После того, как в TotalCRM обновились цены и остатки, команда ts:integrations:bitrix:export-products отправляет эти обновления на сайт.
  4. Передача заказов в 1С: Заказы, созданные в TotalCRM (в том числе с сайта), попадают в очередь на отправку. Команда ts:1c:export-orders (или аналогичная) формирует файл с заказами и предоставляет его 1С для загрузки.
  5. Получение статусов из 1С: 1С отправляет в TotalCRM файлы с обновленными статусами заказов и данными об отгрузках (номера накладных). Команда ts:1c:update-orders обрабатывает эти файлы и обновляет заказы в TotalCRM.

5.2. Поток: 1С → TotalCRM (Каталог и Остатки)

5.2.1. Настройка в TotalCRM

Для приема данных от 1С создается интеграция типа 1C Products (или 1C Products and Orders). В настройках указывается только логин/пароль для базовой авторизации (используется в Exchange1CController), а также настройки маппинга полей.

Ключевые настройки (settingsImportProducts):

  • fieldArticul: externalId или articul - определяет, по какому полю будет происходить сопоставление товаров.
  • isCheckIntegration: Если включено, товары из 1С будут привязываться к конкретной интеграции.
  • isUpdateNameMc / isUpdateArticul: Разрешить обновление названий и артикулов из 1С.
  • isCreateOnSearchMP / isCreateOnStock / isCreateAll: Стратегии создания новых товаров в TotalCRM, если их нет в базе (например, по артикулу или по штрихкоду).

5.2.2. Структура файлов

Структура файлов import.xml и offers.xml от 1С полностью аналогична описанной в разделе 4.1.3. TotalCRM умеет "понимать" этот стандарт и корректно обрабатывать данные.

5.2.3. Алгоритм работы команды ts:1c:import-products

  1. Сканирование каталога: Команда проверяет наличие новых файлов в каталоге /documents/exchange1C/products/.
  2. Парсинг:
  3. Обновление данных: Все изменения сохраняются в базе данных TotalCRM.
  4. История изменений: Для отслеживания изменений в ценах и остатках ведется история (McStockHistory, PriceHistory), что позволяет анализировать динамику.

5.3. Поток: TotalCRM → 1С (Заказы)

5.3.1. Структура файла заказов для 1С

Для передачи заказов в 1С используется аналогичный формат orders.xml. Структура идентична той, что описана в разделе 4.2.2, так как и сайт, и 1С используют единый стандарт CommerceML.

Особенности формирования:

  • В заказе обязательно указываются все реквизиты клиента (телефон, email) и адрес доставки.
  • Каждая позиция заказа должна содержать точный идентификатор товара (Ид), который существует в справочнике 1С.
  • Статус заказа должен соответствовать состоянию в TotalCRM.

5.3.2. Алгоритм работы команды

  1. Формирование выборки: Команда выбирает из базы заказы, которые еще не были переданы в 1С (или изменены после передачи).
  2. Генерация XML: Для каждого заказа формируется XML-блок, аналогичный описанному выше.
  3. Отправка в 1С: Готовый XML-файл сохраняется в каталог, доступный 1С для загрузки. Либо может быть отправлен напрямую через API.
  4. Получение подтверждения: После того как 1С загрузит и обработает заказ, она может вернуть подтверждение, и TotalCRM обновит статус заказа (например, Отправлен в 1С).

5.4. Поток: 1С → TotalCRM (Обновление статусов)

5.4.1. Команда ts:1c:update-orders

Эта команда отвечает за обработку файлов с заказами, которые 1С возвращает в TotalCRM после своей обработки.

Структура ответа от 1С:

1С формирует такой же XML-файл orders.xml, но заполняет в нем дополнительные реквизиты:

  • Номер по 1С - внутренний номер заказа в 1С.
  • Дата по 1С - дата проведения заказа в 1С.
  • Проведен - признак того, что заказ проведен в учетной системе.
  • Номер отгрузки по 1С - номер реализованного товара/накладной.
  • Дата отгрузки по 1С - дата отгрузки.

Алгоритм обработки:

  1. Чтение файла: Команда находит XML-файлы в каталоге /documents/exchange1C/orders/.
  2. Парсинг заказов: Из каждого документа извлекается ключевая информация: номер заказа (Номер), GUID, новые реквизиты из 1С.
  3. Поиск заказа в TotalCRM: По номеру заказа (Номер) находится соответствующая запись в таблице Orders.
  4. Обновление данных: Найденный заказ обновляется:
  5. Подтверждение успеха: После обработки файла он перемещается в папку processed/.

6. Жизненный цикл заказа в интегрированной системе

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

Этап 1: Клиент оформляет заказ на сайте

  • Действие: Клиент на сайте добавляет товары в корзину, заполняет контактные данные и нажимает кнопку "Оформить заказ".
  • Результат: В базе данных 1С-Битрикс создается новый заказ со статусом, например, "[N] Принят, ожидается оплата".
  • Следующий шаг: Заказ ожидает выгрузки в TotalCRM.

Этап 2: Импорт заказа в TotalCRM

  • Действие: По расписанию (каждые 5 минут) запускается команда ts:integrations:bitrix:import-orders.
  • Процесс: Команда отправляет запрос на сайт (mode=query). Сайт отдает файл orders.xml, содержащий этот заказ.
  • Обработка в TotalCRM:
    • Команда находит или создает клиента (по телефону/email).
    • Находит или создает товары (по GUID/артикулу).
    • Создает заказ в TotalCRM. Заказ получает статус "Новый" и присваивается каналу продаж "Интернет-магазин".
  • Результат: Заказ появился в единой ленте заказов TotalCRM, готовый к обработке оператором.

Этап 3: Обработка заказа оператором в TotalCRM

  • Действие: Менеджер видит новый заказ в CRM. Он проверяет наличие товаров, при необходимости связывается с клиентом для подтверждения.
  • Действие в CRM: Менеджер меняет статус заказа на "В работе" или "Готов к сборке".
  • Результат: Заказ теперь имеет внутренний статус TotalCRM, который может отличаться от исходного статуса на сайте (например, в CRM он "Подтвержден", а на сайте еще висит "Новый").

Этап 4: Передача заказа в 1С для учета

  • Действие: По расписанию (например, каждые 30 минут) запускается команда выгрузки заказов в 1С (ts:1c:export-orders).
  • Процесс: Команда выбирает из TotalCRM заказы, которые еще не отправлены в 1С (статус exportstatus = 0). Формирует файл orders.xml и делает его доступным для 1С.
  • Обработка в 1С: 1С загружает этот файл. В учетной системе создается документ "Заказ клиента". В нем фиксируются клиент, товары, суммы.
  • Результат: Заказ теперь существует и в управленческой учетной системе.

Этап 5: Отгрузка заказа в 1С и обновление статуса

  • Действие: Сотрудник на складе собирает заказ, и менеджер в 1С оформляет реализацию (накладную). В 1С заказ получает статус "Проведен" и появляется "Номер отгрузки".
  • Процесс: 1С формирует ответный файл orders.xml, где для этого заказа указываются новые реквизиты (Проведен=true, Номер отгрузки по 1С). Этот файл отправляется в TotalCRM.
  • Обновление в TotalCRM: Команда ts:1c:update-orders обрабатывает этот файл. Она находит заказ в TotalCRM и обновляет его:
    • Устанавливает внешний номер (extNdoc) и флаг проведения (extIsConducted = 1).
    • Видя, что появился Номер отгрузки по 1С, команда автоматически меняет статус заказа в TotalCRM на "Отгружен".
    • Одновременно может быть активирован процесс резервирования (снятие товаров с резерва) и создание отправления в логистической системе.

Этап 6: Итог

  • Результат: Заказ в TotalCRM имеет статус "Отгружен", есть номер накладной из 1С, и информация может быть (опционально) передана обратно на сайт для оповещения клиента.
  • Клиент: Если настроена интеграция "CRM → Сайт" для статусов, клиент на сайте увидит, что его заказ отгружен и может отслеживать его.

7. Мониторинг, логирование и устранение неполадок

7.1. Мониторинг

Для стабильной работы интеграции важен постоянный мониторинг.

Что проверять:

  1. Статус команд: Все команды должны выполняться по расписанию. В случае сбоя (например, exit code != 0), необходимо проанализировать логи.
  2. Каталог файлов: Следите, чтобы файлы в папках products/ и orders/ не накапливались. Если они не обрабатываются, это указывает на ошибку в командах.
  3. Актуальность данных: Периодически проверяйте на сайте и в TotalCRM, совпадают ли цены и остатки для тестовых товаров.
  4. Заказы:

7.2. Логирование

Все операции логируются. Основные места для просмотра:

  1. Лог-файлы Symfony: Обычно находятся в папке var/log/ вашего проекта TotalCRM.
  2. Логи в базе данных: Некоторые важные события могут сохраняться в таблицах БД (например, истории изменений цен и остатков).
  3. Интеграция с Telegram: В критических случаях (ошибка авторизации, падение скрипта) система может отправлять уведомления в заданный Telegram-канал. Это позволяет быстро реагировать на проблемы.

7.3. Частые проблемы и их решение

Проблема: Заказы с сайта не попадают в TotalCRM.

  • Проверка: Убедитесь, что команда ts:integrations:bitrix:import-orders выполняется успешно. Проверьте логи на наличие ошибок. Убедитесь, что логин/пароль для доступа к /bitrix/admin/1c_exchange.php верны. Проверьте, не заблокирован ли IP-адрес сервера TotalCRM на уровне сайта.

Проблема: На сайте не обновляются цены или остатки.

  • Проверка: Убедитесь, что команда ts:integrations:bitrix:export-products выполняется успешно. Проверьте логи. Проверьте, есть ли в системе актуальные остатки (команда ts:1c:import-products). Убедитесь, что в настройках интеграции правильно указаны склады и типы цен для экспорта.

Проблема: Товары в заказе отображаются как "несопоставленные".

  • Причина: В XML-файле заказа указан GUID товара, которого нет в справочнике TotalCRM (и не удалось создать автоматически).
  • Решение: Проверьте в 1С и TotalCRM, совпадают ли GUID товаров. При необходимости вручную сопоставьте товар через интерфейс TotalCRM или добавьте недостающий товар в каталог.

Проблема: Заказ не уходит в 1С.

  • Проверка: Убедитесь, что команда ts:1c:export-orders или ее аналог выполняется. Проверьте, что файл с заказами создается и доступен для 1С. В логах 1С посмотрите, загружается ли файл.

8. Технические требования и рекомендации

8.1. Серверное окружение

  • PHP: Версия 7.4 или выше (рекомендуется 8.0+).
  • Расширения PHP: dom, simplexml, xmlwriter, zip, curl (для HTTP-запросов).
  • База данных: MySQL 5.7+ или PostgreSQL.
  • Доступ к интернету: Сервер TotalCRM должен иметь доступ к вашему сайту (для обмена по HTTP/HTTPS).

8.2. Настройка сайта (1С-Битрикс)

  • Включенный обмен с 1С: В настройках модуля Интернет-магазин должна быть включена опция "Разрешить обмен с 1С".
  • Доступность скрипта: /bitrix/admin/1c_exchange.php должен быть доступен по сети.
  • Настройка прав: Убедитесь, что у пользователя, от имени которого происходит обмен, есть права на чтение и запись данных в инфоблоки и заказы.
  • Кодировка: Убедитесь, что ваш сайт работает с кодировкой UTF-8 для корректного отображения кириллицы.

8.3. Рекомендации по планированию задач (Cron)

Настройте выполнение консольных команд по расписанию. Примерный график:

  • ts:integrations:bitrix:import-orders - каждые 5 минут (для быстрой обработки заказов).
  • ts:integrations:bitrix:export-products - каждые 15-30 минут для offers.xml (цены и остатки) и, например, раз в сутки для import.xml (каталог).
  • ts:1c:import-products - каждые 15-30 минут (зависит от частоты выгрузки из 1С).
  • ts:1c:update-orders - каждые 10-15 минут.

Совет: Используйте параметр --fast для длительных команд, если они уже выполняются и вы не хотите запускать их повторно. Это предотвратит конфликты.

Данная инструкция охватывает ключевые аспекты настройки и поддержки интеграции между интернет-магазином на 1С-Битрикс и CRM-системой TotalCRM. Благодаря использованию стандарта CommerceML и четкой архитектуре, вы получаете надежный и прозрачный механизм синхронизации данных.

Внедрение такого обмена позволяет:

  • Исключить ручной труд и ошибки при переносе данных.
  • Повысить скорость обработки заказов.
  • Обеспечить актуальность информации на сайте и в учетной системе.
  • Получить единую картину продаж по всем каналам.

Если у вас возникнут вопросы или потребуется дополнительная настройка, обращайтесь к службе технической поддержки TotalCRM.
Все детали настройки можно адаптировать под уникальные бизнес-процессы вашей компании.

  FAQ по интеграции 1С-Битрикс с TotalCRM

В рамках интеграции синхронизируются следующие данные:
- Каталог товаров — названия, артикулы, штрихкоды, единицы измерения, характеристики товаров.
- Цены — передаются до 3 типов цен (цена продажи, старая цена, минимальная цена) с привязкой к внешним кодам прайс-листов.
- Остатки — передаются остатки по складам FBS, настроенным в канале сбыта. Для каждого склада указывается внешний код для сопоставления с сайтом.
- Заказы — заказы, оформленные на сайте, автоматически импортируются в TotalCRM. В ответ передаются статусы заказов и информация об отгрузках.
- Клиенты — при импорте заказа клиент автоматически создается или обновляется в TotalCRM по номеру телефона или email.
Для обмена данными используется открытый стандарт CommerceML версии 2.x. Это отраслевой стандарт для обмена торговой информацией между системами в экосистеме 1С. Обмен осуществляется по протоколу HTTP/HTTPS, что позволяет организовать взаимодействие как через локальные сети, так и через Интернет. Все данные передаются в формате XML.
На сайте должен быть доступен стандартный скрипт обмена /bitrix/admin/1c_exchange.php. Для его настройки необходимо:
1. В административной панели сайта перейти в Настройки → Настройки модулей → Интернет-магазин → Обмен с 1С.
2. Включить опцию "Разрешить обмен с 1С".
3. Задать логин и пароль для доступа к скрипту обмена.
Эти учетные данные используются в настройках интеграции в TotalCRM.
Для настройки экспорта товаров необходимо создать интеграцию типа Bitrix Products и заполнить следующие поля:
- Название интеграции — произвольное название (например, "Экспорт товаров на сайт").
- Сайт (URL) — адрес вашего сайта (например, https://мой-магазин.ru).
- Логин и пароль — учетные данные для доступа к /bitrix/admin/1c_exchange.php.
- Канал продаж — выберите созданный канал "Интернет-магазин".
- Настройки экспорта — укажите поле для артикула (рекомендуется externalId), разрешите или запретите обновление названий и артикулов на сайте.
TotalCRM формирует два основных XML-файла:
import.xml — содержит структуру каталога (группы товаров) и описание товаров (названия, артикулы, штрихкоды, единицы измерения, характеристики). Отправляется первым для создания или обновления инфоблоков.
offers.xml — содержит коммерческие предложения: цены по типам цен и остатки по складам. Отправляется после import.xml для обновления цен и остатков на сайте.
Импорт заказов выполняется автоматически по расписанию с помощью команды ts:integrations:bitrix:import-orders. Алгоритм работы:
1. Команда авторизуется на сайте и запрашивает новые заказы.
2. Сайт формирует XML-файл orders.xml с заказами, помеченными на выгрузку.
3. TotalCRM парсит файл и обрабатывает каждый заказ:
- Проверяет уникальность заказа по внешнему ID.
- Находит или создает клиента (по телефону или email).
- Находит или создает товары (по GUID или артикулу).
- Создает заказ в TotalCRM со статусом "Новый".
4. После успешной обработки отправляется подтверждение на сайт, и заказы помечаются как выгруженные.
Товары отображаются как "несопоставленные", если в XML-файле заказа указан GUID товара, которого нет в справочнике TotalCRM, и автоматическое создание не удалось. Для решения проблемы:
1. Проверьте, что GUID товара в 1С и в TotalCRM совпадают.
2. Вручную сопоставьте товар через интерфейс TotalCRM.
3. Добавьте недостающий товар в каталог TotalCRM и выполните повторный экспорт каталога на сайт.
4. При повторном импорте заказа товар будет автоматически сопоставлен.
Рекомендуемый график выполнения команд:
ts:integrations:bitrix:import-orders Каждые 5 минут Импорт новых заказов с сайта
ts:integrations:bitrix:export-products Каждые 15-30 минут (offers.xml) Обновление цен и остатков
ts:integrations:bitrix:export-products Раз в сутки (import.xml) Обновление каталога товаров
ts:1c:import-products Каждые 15-30 минут Импорт каталога из 1С
ts:1c:update-orders Каждые 10-15 минут Обновление статусов из 1С
TotalCRM позволяет передавать до 3 типов цен для каждого товара:
- Цена продажи — основная цена, по которой товар продается.
- Старая цена — цена для отображения зачеркнутой (акционная цена).
- Минимальная цена — цена для специальных предложений или оптовых продаж.
Маппинг типов цен осуществляется на стороне 1С-Битрикс.
В TotalCRM для каждого типа цены указывается внешний код, который сопоставляется с соответствующим типом цены на сайте.
Для передачи остатков необходимо настроить склады FBS в канале сбыта:
1. В карточке канала сбыта перейти на вкладку "Склады FBS".
2. Добавить склад и указать:
- Название — отображаемое название склада.
- Внешний код — код для сопоставления со складом на сайте.
- Склад хранения — физический склад в TotalCRM, с которого берутся остатки.
- Параметры обработки заказов — настройки, влияющие на обработку заказов с этого склада.
Можно указать несколько складов FBS для одного канала продаж.
Если заказы не импортируются, выполните следующую проверку:
1. Убедитесь, что команда ts:integrations:bitrix:import-orders выполняется по расписанию и завершается без ошибок.
2. Проверьте логи на наличие ошибок авторизации или парсинга XML.
3. Проверьте, что логин и пароль для доступа к /bitrix/admin/1c_exchange.php введены корректно.
3. Убедитесь, что IP-адрес сервера TotalCRM не заблокирован на уровне сайта.
4. Проверьте, что в настройках сайта включена опция "Разрешить обмен с 1С".
5. Проверьте, что в карточке канала сбыта включен "Импорт заказов FBS/DBS".
Да, интеграция может работать в двух режимах:
1. С 1С (полный контур) — TotalCRM получает каталог, цены и остатки из 1С, синхронизирует их с сайтом, а заказы с сайта передает обратно в 1С для учета.
2. Без 1С (автономный режим) — TotalCRM является источником данных о товарах, ценах и остатках. Все изменения вносятся непосредственно в TotalCRM и синхронизируются с сайтом. Заказы с сайта импортируются в TotalCRM для обработки, но в 1С не передаются.
Обновление цен происходит автоматически по следующей цепочке:
1. В 1С изменяется цена товара.
2. 1С формирует файл offers.xml и отправляет его в TotalCRM.
3. Команда ts:1c:import-products обрабатывает файл и обновляет цены в справочнике TotalCRM.
4. Команда ts:integrations:bitrix:export-products формирует offers.xml с новыми ценами и отправляет на сайт.
5. Сайт обрабатывает файл и обновляет цены на витрине.
6. Весь процесс занимает от 5 до 30 минут в зависимости от настроек расписания команд.
Да, TotalCRM поддерживает работу с несколькими сайтами (каналами продаж). Для каждого сайта создается отдельный канал сбыта со своими настройками складов, прайс-листов и интеграций. Это позволяет управлять разными интернет-магазинами из одной системы TotalCRM.
Да, TotalCRM поддерживает передачу комплектов товаров. В каталоге товаров комплект отображается как отдельная позиция с признаком isBundle и содержит ссылки на товары, входящие в его состав. При передаче на сайт комплект передается как обычный товар, а его состав может быть использован для отображения на витрине или для складского учета.
Если остатки не обновляются на сайте, проверьте следующее:
1. Команда ts:integrations:bitrix:export-products выполняется успешно.
2. В настройках канала сбыта правильно указаны склады хранения и их внешние коды.
3. В 1С есть актуальные остатки, и команда ts:1c:import-products успешно их импортировала.
4. В карточке товара есть остатки для выбранного склада.
5. Остатки не обнулены настройками резервирования заказов.
Для отслеживания ошибок доступны следующие механизмы:
1. Лог-файлы — в папке var/log/ проекта TotalCRM:
- exchange_bitrix.log — логи обмена с сайтом.
- exchange_1c.log — логи обмена с 1С.
2. Интерфейс TotalCRM — в карточке интеграции и в разделе "Журнал обменов" отображается статус последних операций.
3. Telegram-уведомления — система может отправлять уведомления в заданный Telegram-канал при критических ошибках (авторизация, падение скрипта).
4. История изменений — таблицы McStockHistory и PriceHistory хранят историю изменений остатков и цен, что позволяет отслеживать динамику.
Стандартная настройка интеграции занимает от 3 до 8 часов в зависимости от сложности проекта и готовности систем. Работы включают:
- Анализ настроек — 2-3 часа.
- Настройка обмена каталогом — 3-4 часа.
- Настройка импорта заказов — 2-3 часа.
- Тестирование и отладка — 2-3 часа.
В сложных случаях (нестандартная структура каталога, множество складов, специфические статусные модели) время может увеличиться до 20 часов
Да, интеграция поддерживается с любой учетной системой на платформе 1С, включая 1С:Бухгалтерия, 1С:Управление торговлей (УТ), 1С:Комплексная автоматизация (КА) и другие. Для работы требуется наличие модуля обмена CommerceML в учетной системе.
Если товара нет в наличии при импорте заказа в TotalCRM, возможны следующие сценарии:
1. Заказ создается со статусом "Ожидает поступление" — оператор видит, что товар отсутствует, и может связаться с клиентом.
2. Автоматическая проверка остатков — перед подтверждением заказа система проверяет остатки.
3. Если товара нет, заказ может быть автоматически отклонен или отправлен на ручную проверку. Частичная отгрузка — если часть товаров есть в наличии, заказ может быть разделен на несколько отгрузок.
Поведение настраивается в параметрах обработки заказов для конкретного склада FBS.
CommerceML поддерживает передачу изображений через элемент ЗначенияРеквизитов или Характеристики. Однако на практике рекомендуется управлять изображениями непосредственно на сайте, так как передача больших файлов через XML может замедлить обмен. В TotalCRM изображения обычно не передаются — сайт использует свои медиафайлы, привязанные к товару по внешнему коду.
Обновление статусов на сайте происходит по следующей цепочке:
1. В 1С статус заказа меняется (например, "Отгружен").
2. 1С формирует файл orders.xml с обновленными статусами и отправляет его в TotalCRM.
3. Команда ts:1c:update-orders обрабатывает файл и обновляет статус заказа в TotalCRM.
4. Если настроена обратная синхронизация, статус может быть передан на сайт через команду ts:integrations:bitrix:export-products или отдельный механизм обновления статусов.

На практике чаще всего статусы обновляются только в TotalCRM, а клиент отслеживает заказ через личный кабинет сайта, где статус обновляется отдельно (например, через интеграцию с 1С напрямую).
Накопление файлов указывает на то, что команды обработки не выполняются или завершаются с ошибкой. Проверьте:
1. Выполняется ли команда ts:1c:import-products для файлов в products/.
2. Выполняется ли команда ts:1c:update-orders для файлов в orders/.
3. Есть ли ошибки в логах при обработке файлов.
4. Достаточно ли прав на запись в папки processed/ и error/.

Если файлы обрабатываются, но не удаляются, проверьте настройки очистки (обычно старые файлы удаляются автоматически раз в сутки).