Проектирование интеграции
Какие типы интеграции бывают:
По типу
- Одностороняя — выгрузка только товаров
- Двухстороняя — обмен товарами и заказами
По синхронизации
- Периодическая
- real-time
- Периодическая через FTP (не удачный вариант)
Бывают режимы выгрузки
- Полный
- Частичный
В 1С-Битрикс есть возможность делать выгрузки разных инфоблоков, но в real-time может работать только один.
Версии 1С
7 версия — лучше не браться. Боль и гемор. Есть модули в маркетплейсе, работают из рук вон плохо.
Что делать:
- Убеждаем заказчика перейти на 8ку
- Или заставляем писать их обмен с сайтом по текущему протоколу современного обмена с сайтом.
Модуль выгрузки
За обмен с сайтом на стороне 1С отвечает модуль выгрузки, который бывает разных версий.
Всегда при начале интеграции нужно максимально рекомендовать заказчику модуль выгрузки последних версий.
В начале работы его внедрить и склонить к этому заказчика значительно проще чем в процессе.
Сэокономит время и нервы.
Последние модули выгрузки позволяют делать много крутых и нужных вещей:
- Выгружать справочники в виде HLiblock, причем с файлами и картинками.
- Выгружать скидки
- Работать с частичными оплатами
и мн. другое.
В 1C всегда бардак
Практически всегда структура в 1С не соответствует той струтуре которая соответствует на сайте. Практически всегда переделка стуктуры каталога в 1С для сайта — блажь, на которую не пойдет заказчик, т.к. у него БП запилены на ткущую структуру и все привыкли с ней работать.
В зависимости от степени бардака в 1с, есть следующие варианты:
а) В 1с делается нативно дополнительный справочник, к которому привязываются товары.
К примеру в 1С хранится:Бытовая техника- Телевизор sumsung 1- Телевизор sumsung 2- Холодильник BOSH 1- Холодильник BOSH 2
Можно ручками в 1с перепривязать номенклатуру в такой вид:Телевизоры- Телевизор sumsung 1- Телевизор sumsung 2Холодильники- Холодильник BOSH 1- Холодильник BOSH 2
б) Делать костыли на стороне сайта.
Ад. Этого лучше максимально избежать. Но есть шанс что выхода не будет и прийдется. Многие студии не задумываясь о вариантах, начинают с варианта Б, что выливается болью.
в) Преобразования структуры на уровне 1С.
Здесь им прийдется выложить денег 1С программисту, который на уровне модуля выгрузки 1С сделает все необходимое.
Тестируем выгрузку
ЭТАП 1: Первичная проверка структуры
Выгрузку начинаем тестировать как можно раньше — даже если сайт еще только отдали в дизайн. Т.к. если найдутся проблемы — правиться они могут очень долго.
По хорошему к проверке вам ПМ должен предоставить:
- Структуру
- Перечень свойств
Выгрузку желательно сразу просить сделать напрямую с 1С на тестовый сайт. Это избавит вас сразу от многих проблем и сэкономит время.
- Создаем отдельного пользователя (чтобы мы видели историю), что данные изменял именно 1С и именно этого клиента.
- Создаем отдельную группу инфоблоков (т.к. тестовый сайт мог использоваться ранее для других клиентов, чтобы путаницы не возникло лучше создать отдельную), указываем эту группу в настройках интеграции.
Если нет возможности коннекта напрямую сразу, вынужденно берем XMLку и проверяем загружая через модуль проверки выгрузки (последнюю версию можно скачать на гихабе или в доках битрикса). Теоретически этот модуль может отрабатывать несколько иначе чем если была бы выгрузка напрямую.
На выходе этого этапа вы должны показать ПМу структуру, сообщить о проблемах, явно мусоре в структуре и несоответствия в свойствах. Смотрим на объемы справочников свойств. Может к примеру адски лагать попытки зайти на элемент в админке: это значит что 1сник выгрузил какой нибудь справочник криво, запросто мог бахнуть туда 1-2 миллиона каких либо левых свойств.
ЭТАП 2: Переделка 1с-ником структуры
Если структура переделывается, то чтобы избежать множества проверок с вашей стороны в процессе попыток 1сника совладать с выгрузкой, желательно познакомить 1сника с админкой и объяснить ему что нужно на выходе. Так вы себе сэкономите множество нервов.
- Если 1Сник будет просить как должен выглядеть тот или иной XML для свойства: берем создаем свойство в инфоблоке, экспортируем инфоблок в XML. Показываем 1снику XML.
- Если 1Снику нужно показать XML заказа, мы можем показать ему XML нажав на кнопку.
- Остальные участки XML которые не выгружаются в пункте а и б, посылаем 1сника разбирать документации по 1С и CommerceML протоколу или лазить по исходникам 1С модуля.
- В некоторых случаях можно для 1с-ника запросить какие нибудь данные у саппорта битрикса.
Вы всегда должны оставить максимально хорошие отношения между собой и 1сником, это окупиться с лихвой если вам придется поддерживать сайт и нужна будет его помощь в решении какого либо вашего косяка. В общем по человечески относимся к коллегам и их проблемам. Но и не даем садится на голову.
В процессе проверок, лучше все фиксировать письменно, разбивать четко по пунктам. Если 1Сник бывает долго не отвечает или вообще забивает, то:
- Сразу после того как выкатили замечания звоним ему, и спрашиваем когда будет сделано
- Пишем в задачу, если не выполняет сроки — дергаем ПМ, пусть выходит на руководство и дают по шапке.
Не стоит писать мемуары по поводу ошибок, закрепляйте письменно суть, а обсудите голосом — это быстрее.
На заключительном этапе, вы должны четко проверить:
- Структуру
- Корректность полей
Вы должны четко понимать как вы будете делать выборки на сайте и работать фильтр по этим свойствам. Не поленитесь глянуть макет фильтра, если не сделаете этого сразу, потом можете попасть на кучу часов геморроя из-за своей лени.
Нативные доработки
Мы можем без критичных проблем делать следующее:
- Подписываться на событие изменения элемента и модифицировать какие либо данные
- Подписываться на событие выгрузки и после выгрузки запускать внутренние процессы
Проблемы с подключением
Бывает что 1с не может подключиться к сайту.
Алгоритм: Запрашиваем последовательно:
- Логи ошибок 1С
- смотрим что за ошибка
- Пинг с машины 1с до сайта
- проверяем на наш ли сервер стучится, может закешировались DNS или порты закрыты
- Скриншот с настройками интеграции и логин/пароль
- проверяем в нем корректность адреса
- IP адрес машины
- смотрим в логах access приходил ли кто с их адреса и туда ли стучится
- Проверяем init.php и зарегистрированные события модулей — может какое то событие или ошибка в init.php отдает ошибку.
- Просим клиента предоставить http логи (технические). Нас интересует код ответа, заголовки, тело ответа. Сделать это можно
- Поставив на стороне сниффер: wireshark или другой.
- Залезть их 1снику в исходный код и поставить там логирование.
Полная выгрузка в 6 версии
При использовании модуля обмена 6ой версии, настройки «что делать с отсутствующими товарами» == ничего, не учитываются и при полной выгрузке каталога, всегда будут деактивироваться товары и разделы которых не было в файле обмена. Нужно быть внимательными при использовании дополнения тестирования выгрузки. Вы можете выгрузить 1 файл, и тем самым деактивировать все остальные. Лучше тестировать на тестовой базе или в часы минимальной нагрузки.
Префиксы/формат номера заказа
При добавлении префиксов к заказу стоит быть осторожными в том плане что обратные документы из 1с могут не проходить. Не проходят обновления из 1С
Может быть ситуация что 1с не выгружает или выгружает неизменный тег «номер версии». Тогда изменения не будут применяться, могут не обновляться свойства и параметры.
Документы и ссылки:
- Скрипт для диагностики интеграции с 1с.
- Сайт посвященный 1с интеграции: 1c.1c-bitrix.ru На нем полно информации о последних новинках интеграции, форум по интеграции, требования к 1С и сайту для интеграции.
- Внутренний документ ВебПрактика по интеграции, который можно передавать 1сникам в виде требований.
- Типовые ошибки интеграции их решение.