Real-time обмен с «1С» от «Битрикс. Real-time обмен с «1С» от «Битрикс Возможность автоматической работы по расписанию

В 2010 году, в самом начале пути нашей компании мы занимались сопровождением программного обеспечения на базе «1С:Предприятие» в различных организациях. Это были типовые решения, а так же индивидуальные, полностью переработанные для нужд этих организаций. За это время накоплен тот самый опыт, который мы готовы использовать сейчас для нужд ваших сайтов. Мы настроим выгрузку товаров на сайт, подготовим базу пользователей сайта из ваших контрагентов в 1С, настроим обмен документами в реальном времени. У нас есть опыт выполнения работ как в сфере розничной торговли, так и в секторе b2b.

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

Взаимодействие продуктов «1С» и «1С-Битрикс» реализуется на базе процедур двунаправленного обмена данными. Обмен данными выполняется с использованием основанного на XML открытого Стандарта обмена коммерческой информацией – CommerceML 2.0.

Интеграция с «1С» – это:

  • Естественная интеграция «из коробки»
  • Широкий функционал
  • Простота настройки
  • Возможность автоматической работы по расписанию
  • Безопасность
  • Производительность

Real-time обмен с «1С»

Real-time обмен с «1С» – это технология двусторонней непрерывной связи между «1С-Битрикс: Управление сайтом» и «1С». Система обеспечивает обмен данными в режиме реального времени между этими программными продуктами. Она не требует установки отдельного сервера и специальных настроек. Система стабильно работает практически на любом «железе», минимально нагружая интернет-магазин и «1С».

Получить информацию в режиме реального времени можно:

  • из «1С» в интернет-магазин – о товарах, ценах, остатках в рамках заказов;
  • из магазина в «1С» – по заказам, статусам, платежным системам, покупателям, контрагентам.

Постоянный выпуск обновлений

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

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

Осталось только загрузить реальный каталог из 1С — это означает, что впереди еще много работы. Придется добиться, чтобы все нужные данные выгружались вообще и выгружались в нужное место. Иначе придется подгонять проект под структуру данных из 1С.

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

Цели статьи

  • Коротко изложить основные возможности обмена и его алгоритм работы;
  • Дать ссылки на официальные и прочие полезные источники;
  • Ответить на частые вопросы;
  • Прояснить, с чего начать интеграцию и как ее успешно завершить.

Стандартный обмен между 1С-Битрикс и 1С

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

Как таковой обмен и правда настраивается быстро и несложно, только часто (почти всегда) на этом дело не заканчивается, так как из 1С выгружаются не все данные или выгружаются не туда (в том числе из-за модификаций в 1С).

Что умеет штатный механизм обмена

  • Импорт каталога товаров из 1С на сайт;
  • Экспорт каталога товаров с сайта в 1С;
  • Экспорт заказов с сайта в 1С;
  • Импорт заказов из 1С на сайт;
  • Импорт справочников (highload-инфоблоков) из 1С на сайт.

Информация о товарах передается на сайт в следующих файлах

  • import.xml - товары, группы (разделы инфоблока), типы цен, склады, свойства товаров и единицах измерения;
  • offers.xml - торговые предложения (ТП) товаров и их свойствах;
  • prices.xml - цены ТП;
  • rests.xml - остатки ТП;
  • references.xml - пользовательские справочники (HL-инфоблоки).

Файлы import.xml и offers.xml содержат описания свойств, типов цен, и прочую информацию, которая относится в равной степени ко всем товарам/ТП.

Если каталог большой, в целях оптимизации, описания выгружаются в отдельных “заголовочных” файлах. Это такие же файлы import.xml и offers.xml, только не содержат ничего кроме описаний. В таком случае заголовочные файлы обрабатываются только в самом начале обмена.

Информация о заказах передается на сайт в следующих файлах

  • documents.xml - документы (заказы);
  • contragents.xml - контрагенты (пользователи-покупатели).

Куда на сайт загружаются файлы выгрузки

В папку /upload/1c_catalog/. Перед каждым обменом эта папка очищается. То есть в этой папке всегда находятся файлы последнего обмена.

Можно включить " режим отладки” обмена — отключить перезапись файлов в папке 1c_catalog. Таким образом можно отключить удаление файлов выгрузки после завершения обмена.

Для этого нужно объявить константу в файле dbconn.php:

// Включает "режим отладки” для обмена с 1С, // отключает перезапись файлов в папке 1c_catalog // Что бы сохранялись все файлы после выгрузки. define("BX_CATALOG_IMPORT_1C_PRESERVE", true);

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

Чем больше число у папки, тем новее эта папка.
Однако, самая новая папка всегда будет без чисел, и только со следующим обменом она будет переименована.

Важно помнить, что с включенным режимом отладки очень быстро идет расход места на диске. Поэтому после отладки следует отключить лог и удалить все лишние папки обмена.

Что нужно для обмена на стороне сайта

  • редакция битрикса “Малый бизнес” или “Бизнес”
  • создать пользователя и группу “Обмен с 1С” для обмена, настроить права
    • разрешить группе выполнять выгрузку товаров/заказов (в настройках параметров)
    • разрешить группе доступ на чтение папки /bitrix/admin/

Что нужно для обмена на стороне 1С

  • настроить адрес сайта и пользователя сайта из группы “Обмен с 1С”
  • настроить параметры выгрузки на стороне 1С (зависят от версии УТ)

Структура каталога в 1С и на сайте

Что делать если структура каталога в 1С не совпадает со структурой на сайте?

В 1С можно задать какие товары и разделы выгружать.

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

Так же можно задать условия отбора товара (не все товары нужны на сайте) для выгрузки на сайт и свойства (в 1С много св-в, не все нужны на сайте).

Виды выгрузок из 1С

Полная выгрузка

Происходит при выгрузке данных на сайт в первый раз, или при ручном запуске.

  • Выгружаются все товары.
  • Картинки выгружаются только у новых или измененных товаров.

Краткая выгрузка

Происходит часто, между полными, содержит только изменения по ценам и остаткам.

Полная принудительная выгрузка

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

Обычно используется только при отладке обмена.

С чего начать интеграцию c 1C

Если вы делаете новый сайт и планируете интеграцию с 1С в дальнейшем, то первым следует установить битрикс и сделать тестовый обмен. Вот, что это даст:

  • Будет создан тип иблока;
  • Будет создан иблок;
  • Будут созданы св-ва и справочники;
  • Будут созданы разделы каталога;
  • Будут созданы элементы каталога;
  • Будут созданы торговые предложения.

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

Как завершить интеграцию

Сопоставить структуры данных на сайте со структурой в 1С — вот главная цель интеграции.

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

  • В существующий инфоблок;
  • В существующие св-ва;
  • В существующие разделы инфоблока;
  • В существующие товары и торговые предложения;
  • В существующие типы цен.

Все эти задачи решаются путем настройки одинаковых идентификаторов (XML_ID), то есть у вас должны совпадать все внешние коды на сайте с внешними кодами из 1С.

Для реализации интеграции с 1С не требуется покупать какие-либо дополнительные модули или конфигурации. Покупая «1С: Управление торговлей» и «1С-Битрикс: Управление сайтом» вы сразу получаете необходимый функционал.

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

Широкий функционал

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

Простота настройки

Чтобы обеспечить интеграцию с 1С не требуется быть специалистом в программировании или веб-технологиях. Предусмотренные настройки просты и понятны пользователю, обладающему общими навыками работы с компьютером и базовыми знаниями продуктов «1С» и «1С-Битрикс».

Возможность автоматической работы по расписанию

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

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

Real-time обмен с «1С»

Real-time обмен с 1С – это технология непрерывной двусторонней связи между 1С-Битрикс: Управление сайтом и 1С. Система обеспечивает обмен данными (остатки, цены, заказы и пр.) в режиме реального времени. Для этого не требуется установка отдельного сервера и специальных настроек. Система стабильно работает практически на любом сервере.

Получать информацию в режиме реального времени можно:

  • из 1С в интернет-магазин – о товарах, ценах, остатках в рамках заказов
  • из магазина в 1С – по заказам, статусам, платежным системам, покупателям, контрагентам

Безопасность

Угрозы безопасности сайта не могут угрожать безопасности ваших данных в 1С.

Сайт интернет-магазина работает на удаленном хостинге и не имеет доступа к вашей системе 1С и ее базе данных.

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

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

Производительность

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

Сайт может держать нагрузку, не влияя на производительность 1С.

Нагрузка на 1С зависит только от настроек обмена данными, которые выполнит администратор: объема каталога товаров, наличия изображений и атрибутов и того, как часто должен проходить обмен. Наиболее ресурсоемкая процедура для 1С - это подготовка большого количества номенклатурных позиций для выгрузки. Но за счет контроля измененных позиций при каждом сеансе обмена с сайтом будут выгружены только те товары, данные по которым были изменены. Часто это не единицы или десятки товаров, поэтому такая нагрузка практически незаметна.

Открытый формат и протокол обмена

Интеграция основана на применении открытого обзедоступного задокументированного формата обмена коммерческой информацией CommerceML .

В апреле 2014 года компания 1С-Битрикс представила новую 14.5 версию . В числе множества новшеств в ней появилась возможность обмениваться данными с 1С в режиме реального времени. Новая система не требует установки отдельного сервера и специальных настроек. Рассмотрим «подводные камни», с которыми может столкнуться разработчик при работе с ней.

Постановка задачи

Решение задачи

Установка дополнения модуля обмена 1С

Устанавливаем дополнение модуля обмена с 1С с сайта Битрикса. Не будем останавливаться на этом пункте подробно, так как инструкция по установке и настройке модуля находится в скачанном архиве.

Первый запуск

После установки и настройки пробуем запустить обмен данными. Тут же сталкиваемся с первой трудностью: появляется сообщение об ошибке


Из ошибки видно, что причиной проблемы является отсутствие ограничения на максимальное количество символов в поле Номенклатура.Описание. Решается эта проблема следующим образом:

  1. Заходим в 1С в режиме Конфигуратора.
  2. Находим справочник Номенклатура, выбираем вкладку Данные, в свойстве Описание устанавливаем максимальную длину 1000 символов.


Следующая ошибка

Причина этой ошибки в разнице конфигураций 1С УТ 11.1.4.10 и 1С УТ 11.1.4.13

Решаем эту проблему так:

В 1С в режиме Конфигуратора находим модуль Общие — Общие модули — Б_ОбменССайтомСервер и меняем строку

ТОГДА Остатки.ВНаличииОстаток - Остатки на ТОГДА Остатки.ВНаличииОстаток - Остатки.ВРезервеСоСкладаОстаток - Остатки.ВРезервеПодЗаказОстаток

Очередная попытка...

Обновляем конфигурацию Базы данных, запускаем 1С и выполняем обмен.

Казалось бы все хорошо, но не обновляются статусы заказов на сайте. Тех. поддержка Битрикса на эту проблему ответила:

В битриксе есть ошибка которая не дает изменить данные заказа выгрузкой.
Ошибка исправлена, но пока еще не вышло обновление с исправлением.
Замените в файле /bitrix/modules/sale/general/order_loader.php строку:
if($arOrder["VERSION_1C"] != $orderInfo["VERSION_1C"]) // skip update if the same version
на
if($arOrder["VERSION_1C"] != $orderInfo["VERSION_1C"] || (strlen($orderInfo["VERSION_1C"]) и строку
if(is_array($val))
на
if(is_array($val) && is_array($val["#"]))
Это должно решить проблему.

Удачная выгрузка

Запускаем обмен ещё раз. Всё хорошо — ошибок нет, заказы и товары обновляются.

Результат

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

И 1С: Предприятие Управление торговлей, редакция 11.1 (11.1.2.31).
Точка актуальности статьи - май 2015.
Обращайте на это внимание.
Очень многие вещи, освоив однажды, мы делаем практически машинально.
Однако, не каждый из умеющих водить автомобиль, может стать инструктором вождения.
Одно дело - сделать самому, совсем другое - рассказать другому, как делать. Многим знаком этот старинный анекдот.
- Дорогая, где чай? Я никак не могу найти.... - Ах, какой ты беспомощный! Чай в аптечке, в банке из-под какао, на которой наклейка "СОЛЬ".
Именно поэтому большинство инструкций по интеграции 1С и Битрикс не заостряют внимание на моментах, на которые начинающий может потратить от нескольких часов, до нескольких дней своего времени.
Попробую максимально закрыть этот вопрос именно в плане быстрого старта
(не ошибусь, если скажу - у многих есть желание посмотреть, как работает 1С Управление торговлей в связке с интернет магазином).
Огромное спасибо разработчикам Битрикс за виртуальную машину. С ней установка системы для тестирования стала занимать минуты.
Дальше - обращайтесь к форумам, гуру, куру и т.п.

Приступаем.

Что нужно скачать:

Виртуальную машину запускаем в плейере.

Дополнения устанавливаем в каталог шаблонов 1С.

Из шаблонов же создаем базу Управление торговлей Демо, редакция 11.1 (11.1.2.31). Включаем в конфигураторе возможность изменения
, и интегрируем модуль дополнения от Битрикс.
Этот процесс полностью описан в файле документации, идущем в комплекте с модулем. Цитирую дословно:




  1. Включить в объединение (установить флажок) подсистему «Битрикс»: "Конфигурация" - "Общие" - "Подсистемы" - "Администрирование" - "Битрикс".

10. Выполнить сравнение и объединение конфигураций (кнопка «Выполнить»).

Обратить внимание.
Рекомендуется запустить 1С с параметром «ЗапуститьОбновлениеИнформационнойБазы », для того, чтобы 1С заполнил все служебные данные в 1С. Запуск с параметром можно запустить как через командную строку, так и из конфигуратора.

Для того, чтобы запустить из командной строки нужно указать следующие параметры:

"<Адрес к 1 cv 8. exe >" ENTERPRISE (/ F или / S в зависимости от типа базы) ""<Адрес к базе> " / N "<Логин>" / P "<Пароль>" /C ЗапуститьОбновлениеИнформационнойБазы

Для того, чтобы запустить из конфигуратора нужно зайти: Сервис -> Параметры. На вкладке «Запуск 1С: Предприятия» нужно указать параметр запуска.

Заодно лучше установить режим запуска «Толстый клиент управляемое приложение»

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

Загружаем дистрибутив «Управление сайтом» Бизнес Демо


Выбираем и настраиваем магазин.

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

В 1С настраиваем связь с сайтом. Проверяем, что сайт доступен.

Обратить внимание.
Делаем архивы.
1С - средствами 1С, а сайт - средствами виртуальной машины (если сделать архив через админку сайта, он пропадет при первом обмене с 1С).
Не забудьте убрать параметр запуска «ЗапуститьОбновлениеИнформационнойБазы» он уже не нужен.

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

Посмотреть, как устроены описания, свойства и т.п. Создаем под это вид и группу номенклатуры «Одежда»

Первая незадача - загрузка не проходит.
Получаем ошибку: «Не удалось загрузить данные с сервера. Ответ сервера: failure Ошибка инициализации экспорта».

Потому что по умолчанию ни у одной группы пользователей нет на это прав.

Обратить внимание.
Нужно в административной части сайта зайти в раздел Магазин - Интеграция с 1С - Экспорт каталога. Выделить как минимум группу Администраторы и сохранить изменения.

После этого загрузка товаров с сайта пройдет.

Помимо номенклатуры со всеми свойствами и характеристиками, загрузится цена BASE (запомните это наименование - оно нам пригодится) и документ установки цен

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

Переходим к выгрузке номенклатуры на сайт Битрикс из 1С.

Для начала - стандартным обменом 1С.

Переходим на вкладку Выгрузка товаров.

Обратить внимание.

Если произвести обмен сейчас - на сайте вообще не произойдет изменений. Вся номенклатура выгрузится в новый инфоблок, которого в пользовательской части сайта не видно.
Чтобы правильно попасть в уже настроенный инфоблок торгового каталога (он у нас называется Одежда) нужно правильно заполнить идентификатор каталога. Как его узнать?
В административной части сайта - переходим в Настройках к инфоблокам

И устанавливаем флажок «Показывать код загрузки из внешних источников »

После этого для Информационного блока Одежда увидим внешний код «clothes_s1»

Его можно поправить здесь или внести в 1С.

Далее переходим к настройке отбора в 1С

Обязательно создать и выбрать Соглашение

Как видно условия два: Доступно внешним пользователям и Сегмент партнеров - пустой

Обратить внимание.

На самом деле - есть еще и три: Оно должно называться BASE.Если пропустить этот момент, номенклатура на сайте будет заменена, но все товары будут недоступны для заказа. У них не будет ни количества, ни цен.

Остальные настройки в соглашении - могут быть «по вкусу». В том числе цена (многие волнуются по этому поводу).

Как и настройки отбора.

Обратить внимание.

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

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

После этого переключаемся в режим обмена с сайтом напрямую.

Обмениваемся с сайтом магазина.

Обмен прошел - номенклатура, цены, количество, картинки - все на месте.

Переходим к модулю обмена от Битрикс.

Тут гораздо больше настроек. Но основные нужно заполнить также как и в предыдущем случае.

Обмениваемся и видим - товаров нет в наличии.
Если копнуть глубже - не загрузились цены.

Обратить внимание.

Для настройки обмена модулем Битрикс нужно правильно ввести внутренний код цены сайта.
Помните, мы договаривались, что первый обмен пойдет не напрямую на сайт, а в каталог на диске.
Ищем там файл prices_..
Открываем его в любом текстовом редакторе и ищем, тег ИдТипаЦены - это и есть внешний код цены сайта.

На сайте в разделе Магазин - Типы цен - редактируем базовую цену. Записываем правильный внешний код.

После этого сайт магазина приобретает правильный вид

Обратить внимание.

Если захотим вернуться к стандартному обмену - он не пройдет. Нужно на сайте в разделе Настройки - Командная PHP-строка - выполнить две строки кода

COption::SetOptionString("catalog", "DEFAULT_SKIP_SOURCE_CHECK", "Y") ;

COption::SetOptionString("sale", "secure_1c_exchange", "N") ;

После этого можно обмениваться с сайтом как модулем обмена Битрикс, так и стандартным обменом конфигурации.

А так же переходить к обмену заказами и многим другим интересным вещам в связке 1С:Предприятие - 1С Битрикс.

 
Статьи по теме:
Как сделать удобной работу с большим количеством вкладок в браузере
Вы сможете работать за компьютером быстрее, если оптимально расположите окна и вкладки браузера. Как быстро переключаться между окнами Нажмите и удерживайте клавишу Alt . Затем нажмите и удерживайте Tab , пока не откроется нужное окно. Как просматривать д
Установка и удаление AVG Internet Security Антивирус авг как включить компонент программы
В этом уроке мы рассмотрим, как установить бесплатный антивирус AVG. Почему именно бесплатный? Этот и другие вопросы я подробно опишу ниже! Сегодня проводить время в Интернете без защиты очень опасно, особенно новичку. Под защитой я подразумеваю антивир
Проверенные безопасные способы
С целью заработка в интернете многие пользователи запускают каналы на Ютубе. Идея хорошая, только без качественных роликов и грамотной раскрутки, никогда не получится зарабатывать большие деньги. Контент играет ключевую роль, а публикуя
Сервисы распознования капчи Автоматическое распознавание капчи
Здравствуйте, уважаемые читатели блога сайт. Антикапча (временно это был Антигейт) – это многофункциональная площадка для автоматического распознавания так называемой капчи (защиты от автоматического постинга ботами, а также защиты поисковиков от парсинг