Лидер рейтинга 1САВТОМАТИЗАЦИЯ, ВНЕДРЕНИЕ, СОПРОВОЖДЕНИЕ
Наши филиалы
МоскваЯрославль
Интеграция систем 1С и 1С-Битрикс является коробочным решением. По факту запуск можно выполнить в течение нескольких часов, но это будет работать только для базовых функций, а различные доработки для 100% использования возможностей, могут занять очень большое количество времени. Причем эта ситуация касается даже опытных разработчиков.
Интеграция – это обмен информацией между разными IT-системами. Этот обмен зависит от формата информации, используемых протоколов ее передачи и алгоритмов работы.
Интеграция 1С и Битрикса по умолчанию, производится при помощи протокола HTTP. В данном случае работа ПО очень похожа на работу браузера. 1С «открывает» страницу для отправки данных, отправляет их при помощи одного из таких методов, как GET или POST, получает ответ с сайт в текстовом виде. При рассмотрении сетевого взаимодействия этих двух IT-систем, ПО 1С обозначается клиентом, а сайт сервером. Обращения всегда поступают со стороны 1С, поскольку именно в программе указывается адрес сайт, а не наоборот.
Используемый протокол относится к синхронному типу, т.е. каждый из последующих запросов из 1С, отправляется только при условии получения ответа, на посланные ранее или после того, как система выдает ошибку таймаута.
Для обмена данными 1С и Битрикс используется синхронный HTTP. Он проводится в несколько основных шагов. 2 первых идентичны для любого типа обмена, затем для HTTP начинаются отличия:
Запрос
GET-параметры: type=<тип обмена>
mode=checkauth
Basic access логин: логин сайта из настроек 1С
Basic access пароль: пароль сайта из настроек 1С
Ответ
Если успех: success
<имя Cookie авторизации>
<значение Cookie авторизации>
sessid=<ID сессии>
<параметр1>=<значение1>
<параметр2>=<значение2>
...
Если ошибка: failure
<текст ошибки>
Обмен данными всегда стартует только после того, как была произведена авторизация 1С при помощи метода Basic access. Если сайт успешно авторизовал 1С, то система выдает success, имя, значение Cookie, id этой сессии и другие параметры.
Ошибка |
Решение |
Ошибка авторизации. Неверное имя пользователя или пароль. |
Требуется проверить правильность ввода логина и пароля в Битрикс |
Нет прав для импорта каталога. Проверьте настройки компонента импорта. |
Требуется проверка прав пользователя в Битрикс |
Ошибка проверки источника запроса. Обновите модуль обмена или отключите проверку в настройках компонента |
Можно обновить модуль обмена в 1С. Также можно выполнить php-код в Битрикс: |
Модуль Информационных блоков не установлен. |
Проверить наличие установленного в Битрикс модуля iblock |
Включена смена идентификатора сессий. В файле подключения компонента обмена, до подключения пролога определите константу BX_SESSION_ID_CHANGE: define('BX_SESSION_ID_CHANGE', false); |
Выполнить предложенное действие |
Время на сервере базы данных отличается от времени на веб-сервере больше, чем на 10 минут. Вероятно, неправильно настроены временные зоны. Выполните настройку и повторите обмен. |
Сравнить настройки часового пояса на сервере БД и web-сервере |
Запрос
GET-параметры: type=<тип обмена>
mode=init
sessid=<ID сессии>
Cookie: <имя Cookie авторизации>=<значение Cookie авторизации>
Ответ
Если успех: zip=<yes|no>
file_limit=<число>
На этом этапе разработчику требуется обращать пристальное внимание на настройки обмена. Все параметры доступные для управления, собраны на странице «Интеграция с 1С», которая находится в панели управления Битрикс.
Параметр |
Назначение |
Возможные значения |
zip |
Сайт умеет распаковывать zip-архивы. Если yes — 1С будет загружать файлы обмена в архивах, что сильно экономит время и трафик. |
yes |
no |
||
file_limit |
Максимально допустимый размер файла в байтах для передачи за один HTTP-запрос. Если системе 1С понадобится передать файл большего размера, они будут разбиты на несколько частей. |
целое число> =0 |
После того как эти параметры получены, ПО приступает к формированию данных в формат для отправки на сайт. В случае, когда архив zip=yes, то файлы включают в него и передаются в zip-архиве. Если zip ≠yes, то каждый сформированный 1С выгружается по 1, что значительно замедляет процесс, поэтому желательно всегда прописывать, что zip=yes.
Ошибка |
Решение |
Ошибка инициализации временного каталога |
Когда создавался каталог для размещения выгруженных файлов, в системе произошла ошибка. В этом случае необходимо проверить права, правильность заполнения пути в место хранения, а также наличие свободного места на диске. Если настройки не меняли, то по умолчанию сайт отправляет файлы в папку /upload/1c_catalog/. |
Тип обмена данными type-catalog задействован при создании обновления на сайте таких позиций, как:
Когда производится обмен товара, то 1С создает XML-файлы, отправляет их в Битрикс и проверяет, как сайт их обрабатывает. Из программы можно отправить несколько видов файлов:
Если авторизация прошла успешно, то сервер отправит параметр timestamp. Программа сохранит его и отправит на последнем шаге после обмена товарами.
Запрос
GET-параметры: type=catalog
mode=file
sessid=<ID сессии>
filename=<имя файла>
POST: Содержимое файла в виде строки
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если успех: success
Если ошибка: failure
<текст ошибки>
Описанная процедура повторяется такое число раз, сколько товаров передается из 1С в Битрикс. Каждый файл загружается на сервер в бинарном виде при помощи POST-запроса. Если его нет, то Битрикс создает файл с именем из GET-параметра (filename) и добавляет в него полученный из 1С контент, эти действия продолжаются до тех пор, пока 1С не отправит части файла в бинарном виде.
Ошибка |
Решение |
Ошибка чтения HTTP данных |
Следует выполнить проверку подключения через интернет между 1С и Битрикс |
Ошибка открытия файла <имя файла> для записи |
Следует просмотреть права на файл и папку с файлом у пользователя, под которым был осуществлен вход в Битрикс |
Ошибка записи в файл <имя файла> |
Следует просмотреть права на файл и папку с файлом у пользователя, под которым был осуществлен вход в Битрикс |
Запрос
GET-параметры: type=<тип обмена>
mode=import
sessid=<ID сессии>
filename=<имя файла>
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если импорт завершен: success
Если импорт продолжается: progress
<текущий статус>
Если ошибка: failure
<текст ошибки>
Описанная процедура является одной из самых важных. Переданный в процессе файл является полностью загруженным в Битрикс и система готова с ним работать. Как правило, для обработки проводится 11 небольших операций, о которых 1С не оповещается. В связи с этим с параметром GET отправляется один и тот же запрос mode-import, но при этом на сайт выполняет отличающиеся друг от друга операции. Весь прогресс сохраняется в сессии (переменная $_SESSION[BX_CML2_IMPORT][NS]).
Ответ
Если файл распакован: progress
Идет распаковка архива
Если файл распаковывается: progress
Распаковка архива завершена
Если ошибка: failure
<текст ошибки>
Данный этап актуален только в тех случаях, когда информация из 1С передается в Битрикс при помощи файлов, упакованных в zip-архив. Архив распаковывается в директории, где расположены другие файлы, задействованные при обмене товарами, если пользователь не менял путь, то по умолчанию это upload/1c_catalog/. Операция не отмечается системой Битрикса при помощи нумерации.
Ошибка |
Решение |
Ошибка распаковки архива |
Проверьте работоспособность функции PHP zip_open и расширение Zip. Если ошибок не обнаружено, то желательно скачать отправленный на сайт архив и проверить, как он открывается вручную на ПК. |
Ответ
Если успех: progress
Временные таблицы удалены
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 0
Поскольку прямая работа с файлом в универсальном формате XML не всегда удобна и более того не эффективна, то данные удобно читать из временной таблицы b_xml_tree. После завершения в ней всех действий, ее можно удалить.
3.3 Создание временных таблиц
Ответ
Если успех: progress
Временные таблицы созданы
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 1
Когда таблица создана, при объявлении PHP константы BX_XML_CREATE_INDEXES_IMMEDIATELY, система автоматически ее индексирует. По завершению данного этапа запускается событие OnBeforeCatalogImport1C.
Ошибка |
Решение |
Ошибка создания временных таблиц |
Пользователю следует права и стабильность, а также наличие подключения к СУБД |
Ответ
Если файл читается: progress
Обработано <число>% файла
Если файл прочитан: progress
Файл импорта прочитан
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 2
Запускается процедура, во время которой сайт один за один передает информацию из файла 1С, внося все записи в созданную таблицу. Процесс пошаговый, что снижает количество возможных проблем и временных задержек. Просмотреть и выполнить управление каждым шагом можно через панель управления сайтом, вкладка «Интеграция с 1С».
Ошибка |
Решение |
Ошибка открытия файла импорта |
Пользователь должен проверить доступен файл или нет |
Ответ
Если успех: progress
Временные таблицы проиндексированы
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 3
После того как файл прочитан, чтоб ускорить процесс переноса информации в таблицу, система проводит индексацию.
Ошибка |
Решение |
Ошибка создания индекса для временных таблиц |
В числе причин, способных вызвать эту ошибку выделяют: проблемы с правами доступа или подключением к СУБД |
Ответ
Если успех: progress
Матаданные импортированы успешно
Если ошибка: failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 4
Система создает или обновляет уже имеющие данные:
Важно отметить тот факт, что, когда импортируются метаданные, сущности не удаляются. Т.е. если из 1С скопированы ненужные цены, остатки товаров или склады, то они остаются на сайте до тех пор, пока не будут удалены вручную.
Ошибка |
Решение |
Отсутствует модуль «Торговый каталог». Импорт торговых предложений и цен невозможен |
Пояснения не требуются |
Ошибка создания типа информационных блоков |
Вместе с этим сообщением, система выдает текст самой ошибки API, прочитав который можно понять причину появления ошибки |
Ошибка добавления новой единицы измерения (код единицы: <код>) |
Система не выдает текст ошибки, поэтому пользователю придется, вручную устранять проблему, после изучения файла XML в Битрикс |
Количество импортированных складов превышает разрешенное для данной редакции |
Пояснения не требуются |
Ошибка импорта пользовательского свойства (xml_id: <код>) |
Нужно проверить на правильность параметры пользовательского свойства |
Название справочника должно начинаться с буквы и состоять только из латинских букв и цифр. |
Пояснения не требуются |
В выгрузке настроены цены с одинаковым названием. Продолжение обмена невозможно. |
Пояснения не требуются |
В редакции Малый Бизнес нет возможности иметь более одного типа цены. Настройте выгрузку из 1С или перейдите на другую редакцию БУС. |
Пояснения не требуются |
Ответ
Если успех: progress
Группы импортированы
Если ошибка: failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 5
На этом этапе в Битрикс создаются и проходят обновления разделы каталога, до этого указанные в файле XML. Сопоставление разделов из БД в 1С и XML файла происходит при помощи XML_ID. Если раздела с таким файлом на сайте нет, то он создается заново. Если есть, то просто проводится сравнительный анализ данных. Если изменения обнаружены, то Битрикс включает обновление в поле TIMESTAMP_X и переходит к следующему разделу (при наличии изменений запускается обновление).
Чтобы сэкономить ресурсы сервера можно заполнить поля LEFT_MARGIN и RIGHT_MARGIN, в таком случае новые разделы добавляются без пересчета дерева.
Поскольку процесс импорта разделов происходит не пошагово, то при большом количестве информации, возможны ошибки, связанные с превышением допустимого времени для исполнения. Устранить их можно одним из следующих способов:
Можно повторить выгрузку. В файле XML и в Битрикс может быть создано какое-то количество разделов. За один проход система успевает получить определенное количество разделов. В каждом подходе сайт успевает обработать только определенное количество разделов, кратное количеству разделов за один проход. При повторной операции он выгрузит еще кратное определенному количеству за один проход, а предыдущие уже пропустит. Получается, что 100% выгрузка по факту будет совершена только после нескольких запусков выгрузки, равное количеству кратности и операция будет завершена корректно, о чем система и оповестит пользователя.
Ответ
Если успех: progress
Деактивация/удаление групп завершено
Если ошибка: failure
Ошибка импорта метаданных
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 6
Этот процесс подразумевает выполнение следующих задач в Битрикс:
Если используется старая версии 1С, то пользователь легко отличает полную и частичную выгрузки. Если она частичная, то в «Классификаторе» будет атрибут СодержитТолькоИзменения="true". Если этого атрибута нет, то сайт может, как пропускать, так и удалять, или деактивировать устаревшие разделы. В новых версиях 1С подобной проблемы нет.
На этом этапе происходит пересчет служебных полей (LEFT_MARGIN, RIGHT_MARGIN) для всех имеющихся разделов.
Ответ
Если идет процесс импорта: progress
Обработано <число> из <число> элементов
Если импорт завершен: progress
Загрузка элементов завершена
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 7
DONE Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле
На этом этапе происходит непосредственно создание и обновление товаров из XML файла. Также система проводит сверку по полю XML_ID, сравнивая между собой аналогичные поля в БД 1С и файла XML. В случае если изменений не обнаружено, то система обновляет поле TIMESTAMP_ID и переходит к следующему товару. Это актуально в том случае, когда пользователь указала такой параметр, как «Использовать контрольные суммы элементов для оптимизации обновления каталога».
Когда происходит импортирование товаров, то система заполняет поле TMP_ID, его значение сохраняется в узле <НомерВерсии>. В случае отсутствия узла, сайт автоматически определяет контрольную сумму для всего объема данных из XML файла.
Ошибка |
Решение |
Временная таблица не существует |
Появление этой ошибки возможно, если одновременно ПО послало несколько запросов в Битрикс или подключается несколько 1С. |
Ответ
Если идет обработка: progress
Обработано <число> из <число> элементов
Если обработка завершена: progress
Деактивация/Удаление элементов завершены
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 8
DONE Ассоциативный массив, счетчик обработанных товаров и всех товаров в файле
Сайт инициирует чистку товаров, в случае если в узле «Классификатор» XML файла пользователь не сделал отметку СодержитТолькоИзменения="true" (актуально для старого формата выгрузки). Такая же настройка действует и на выбор системы, что именно нужно делать с тем или иным товаром.
Ответ
Если успех: success
Импорт успешно завершен
Если ошибка: failure
<текст ошибки>
Сессия ($_SESSION[BX_CML2_IMPORT][NS])
STEP 9
На этом этапе отсутствует обработка информации, а итогом является событие OnSuccessCatalogImport1C.
Запрос
GET-параметры: type=<тип обмена>
mode=deactivate
sessid=<ID сессии>
timestamp=<время на сервере>
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если успех: success
Деактивация элементов завершена
Если ошибка: failure
Ошибка деактивации элементов
Этот процесс подразумевает деактивацию товаров и разделов каталога, которые не были задействованы в текущей сессии. Чтобы это сделать, система сравнивает время последней корректировки с TIMESTAMP, переданным 1С в начала сессии, во время авторизации.
Этот процесс происходит только в том случае, когда произведена полная выгрузка.
Запрос
GET-параметры: type=<тип обмена>
mode=complete
sessid=<ID сессии>
Cookie: <имя Cookie>=<значение Cookie>
Ответ
Если успех: success
Завершение процедуры импорта
Если ошибка: failure
<текст ошибки>
Внутренний системный процесс, не подразумевающий обработку данных. На нем создается недокументированное событие в модуле catalog событие – OnCompleteCatalogImport1C.
Тип обмена type-reference. Применяется системой для того, чтобы создать и обновить на сайте HL-блоки. Схож с типом, используемым для обмена товарами, но имеет меньшее количество этапов. Благодаря обмену справочниками пользователь имеет возможность быстро увеличить количество доступных функций обмена в стандартном виде.
4.4 Передача файла (повторяющийся)
Процесс аналогичен этапу обмена товарами, (отличается только mode, здесь mode=reference).
Запрос
GET-параметры: type=reference
mode=import
sessid=<ID сессии>
Cookie: <имя Cookie>=<значение Cookie>
Аналогичен этапу обмену товарами.
Ответ
Если успех: progress
Найден или создан справочник. Код справочника: <ID>
Если ошибка: failure
<текст ошибки>
При этом процессе система сайта автоматически создает или использует уже имеющийся HL-блок с UF полями. Сначала испускается недокументированное событие модуля catalog (OnBeforeCatalogImportHL), затем в обработчик отправляется массив параметров компонентов и путь, указанный к XML-файлу. На этом шаге процедуры нужно быть готовыми к тому, что обработчик вызывает ошибки и возвращается произвольные сообщения. Чтобы свести к минимуму проблемы желательно учитывать следующие важные нюансы:
Ошибка |
Решение |
Ошибка при создании поля в справочнике <Текст ошибки> |
Проверить текст и исправить в 1С или на сайте |
Ошибка при создании справочника <Текст ошибки> |
Проверить текст и исправить в 1С или на сайте |
Ошибка разбора XML. Код ошибки: <Код ошибки> |
Провести расшифровку кода и исправить в 1С или на сайте |
4.7 Коды ошибок
Код |
Расшифровка |
10 |
Неизвестная ошибка парсинга XML файла |
20 |
Невалидный XML файл |
110 |
В XML файле отсутствует или пустой узел <Ид> справочника |
120 |
В XML файле отсутствует или пустой узел <Наименование> справочника |
210 |
Во время импорта UF-полей не был найден higloadblock |
220 |
В XML файле отсутствует или пустой узел <Ид> в <Реквизит> |
230 |
В XML файле отсутствует или пустой узел <Наименование> в <Реквизит> |
240 |
Неизвестный <ТипЗначений> в узле <Реквизит> (допустимы только: Строка, Булево, Дата, Число) |
250 |
Неизвестная ошибка при создании UF-поля highload блока |
310 |
Во время элементов справочника не был найден higloadblock |
320 |
В XML файле отсутствует или пустой узел <Ид> в <ЭлементСправочника> |
330 |
В XML файле отсутствует или пустой узел <ЗначениеРеквизита> в <ЗначенияРеквизитов> в <ЭлементСправочника> |
Ответ
Если импорт завершен: success
Импорт успешно завершен
Если импорт в процессе: progress
Импортировано элементов: <число>
Если ошибка: failure
<текст ошибки>
При этом процессе сайт импортирует элементы из HL-блока. В случае, когда выгрузка полная, то элементы в HL-блоке удаляются, при условии, что значение поля UF-VERSION не начинается с ID текущей пользовательской сессии. По завершению всех процессов на этапе, Битрикс создает событие в модуле catalog (OnSuccessCatalogImportHL), в качества аргументов используется путь к XML файлу и массив параметров для компонента. Возможные ошибки, аналогичны описанным на предыдущем этапе.
При реализации стандартного обмена между 1С и Битрикс все запросы отправляются на страницу /bitrix/admin/1c_exchange.php, но при этом вся логика сохраняется в файле /bitrix/modules/sale/admin/1c_exchange.php, находящимся в модуле «Торговый каталог». Вносить изменения на указанной ранее странице нельзя, но допускается копирование и изменение адреса в ПО 1С.
Уже после копирования, учитывая переданные GET-параметры, разрешается подключение простых компонентов, не имеющих шаблонов.
Разработчикам доступны 3 основных способа, при помощи которых можно дорабатывать обмен 1С и Битрикс:
После подобной доработки потребуется корректировка параметра «Адрес сайта и путь до скрипта обмена» в 1С. Важно помнить, что логин и пароль, одинаковые как при стандартном, так и при доработанном обмене.
Выгрузка справочников помогает в создании пользователей при помощи ПО, импорту в Битрикс цен, различных скидок или бонусов, данных необходимых для создания личных кабинетов партнеров компании.
Проведение отладки для обмена довольно сложный процесс, который можно решить при помощи логирование процессов Битрикса.
Зачастую сложнейшей задачей при разработке сайта является интеграция с 1С. Чтобы процесс прошел насколько возможно легко и просто, от разработчика 1С требуется знание и самое главное понимание процессов Битрикса. Заказать услугу по настройке обмена можно, обратившись в офис компании «АйТи-Консалтинг». Профессиональные специалисты 1С проконсультируют и реализуют процесс подключения систем в короткие сроки с гарантией качества.
Среди многих фирм, выполняющих продажу и установку 1С, наша компания имеет ряд неоспоримых преимуществ:
Многолетний опыт обеспечивает возможность решать задачи любой сложности – от типового внедрения 1С до разработки и настройки индивидуальных программных продуктов. Знания и умения специалистов компании подтверждены сертификатами.
Мы дорожим своей репутацией, безупречность которой подтверждают наши клиенты – более 4500 компаний и 400 государственных учреждений России.
Проведение обучающих курсов для пользователей, техническая поддержка и консультирование после установки и внедрения программ выполняется качественно и в оговоренные сроки.
Любая задача по автоматизации бизнеса - системы быстрого внедрения программного обеспечения, специально разработанные специалистами компании.
Привлекательные цены – официальные программы