P.S. В процессе написания понял, что придется писать цикл статей, т.к. в одну все просто не уместить...
Прежде всего хочу акцентировать внимание на том, что это НЕ инструкция! Подробнейшая инструкция по настройке имеется на официальном сайте HelpDesk’а Bitrix24 в открытом для всех и каждого доступе https://helpdesk.bitrix24.ru/section/104395/ (в статье я буду периодически оставлять ссылки на описание конкретных настроек).
Повторюсь, цель данной статьи - пройтись по нюансам и тонкостям настройки, а также подводным камням, которые обязательно вы встретите на своем пути, при настройке модуля обмена. Большая их часть не очевидна, не описывается в официальной документации и выявлена по мере работы (чаще всего путем ковыряния в коде и тестирования, совместно со спецами по Битрикс24). Решения некоторых ситуаций найдены на просторах интернета либо путем набитых шишек и бессонных ночей.
Основные положения:
- Рассматривать будем общую ситуацию полной интеграции, то есть с обменом (происходящим в обе стороны) всеми основными сущностями - товарами, контрагентами и заказами (счетами, в случае с Бухгалтерией предприятия - далее БП);
- Рассматриваем всё без привязки к конкретной конфигурации (за исключением моментов, когда ситуация касается специфики конфигурации), подразумевая, что она не была изменена (типовая). 1С Фреш не рассматриваю, но если хочется понатягивать сову на глобус, информацию о поддержке можно найти тут;
- Битрикс24 может быть как коробочный, так и облачный (учтите - в облачном теперь доступен обмен только на максимальном тарифе);
- Идти будем по нарастающей сложности, запутанности и сцепленности разделов в порядке Общие настройки -> Товары -> Контрагенты -> Заказы (Счета).
Статьи поделю по разделам для улучшения восприятия. Вроде бы ничего не забыл… Итак, поехали!
Общие настройки
Раздел, как понятно из названия, посвящен основным и общим положениям типового модуля интеграции. Поможет составить общее представление о том, что модуль умеет, чего не умеет и какие на глобальном этапе есть нюансы и тонкости.
Оглавление:
1. Установка модуля
Здесь мне особенно сказать нечего. Ребята из Битрикс сделали все грамотно и постарались максимально упростить процесс установки, чтобы даже простой пользователь с полными правами и без высшего образования по специальности “программист” мог его установить. Инструкцию для всех актуальных конфигураций ищите тут, главное - убедитесь, что ваша версия конфигурации максимально свежая. А иначе придется привлекать программиста, чтобы решить проблемы с совместимостью или установкой модуля более ранней версии (найти можно тут).
Сам модуль представляет из себя расширение конфигурации, что позволяет не вносить изменений в вашу конфигурацию и сэкономить тонны времени и средств на обновление. НО! Вот для 1С Управление Торговлей 10.3 все немного не так просто. Тут точно понадобится понимание что и как вы делаете, доступ к конфигуратору и немного прямых рук, так как модуль вшивается непосредственно в конфигурацию. Комплект для установки шаблона можно отыскать вот тут. Инструкция по установке в саму конфигурацию идет в комплекте.
В том же месте можно найти выгрузки расширений для других конфигураций любых версий, если вы решили установить их вручную.
2. Схемы обмена
Главные вопросы раздела: “Что с чем меняется?”, “А если у нас две базы 1С?” и “А если у нас два Битрикса?”.
2.1. Первый вопрос больше философский. Если же подойти с технической точки зрения к ответу на первый вопрос, то меняется в нашем случае всегда 1С с Битрикс24. Инициатором обмена всегда служит 1С! То есть непосредственно управлением выгрузкой/загрузкой данных манипулирует 1С. Битрикс в лучшем случае знает, что за 1С к нему подключена и какие объекты она планирует забирать и присылать. Непосредственно “забирает” из Битрикс24 с помощью запросов изменения сама 1С, ну и конечно же отправляет обратно свои изменения.
Нужно упомянуть, что есть режим обмена в реальном времени посредством поддержки постоянной связи с Битрикс24 и мгновенного получения изменений, но по сути своей он сводится к тому, что Битрикс сразу после изменений передает сообщение 1С, что изменения были, и 1С их тут же “забирает”. Технически манипулирует выгрузкой все равно 1С.
2.2. Что касаемо второго вопроса - тут все неоднозначно. Технически такая возможность есть - никто не мешает применить ключ обмена в двух разных базах и запустить обмен из обеих. НО! Последствия непредсказуемы, а если быть точным, предсказуемы и зависят от настроек модуля. Если рассматривать принятый за данность в начале статьи вариант обмена всем в обе стороны, то ситуация следующая:
- Контрагенты из всех баз 1С попадут в Битрикс и, как следствие, во все базы, где их нет (через Битрикс выгрузятся в базы при обмене);
- Товары также попадут из всех баз во все базы;
- Новые объекты из Битрикс24 будут попадать в базу 1С, которая первой “заберёт” изменения;
- Изменения в реквизитах объекта на стороне одной из баз 1С приведут к изменению объекта в Битриксе и изменят соответствующий объект во всех остальных базах;
И это только верхушка айсберга - тут вам и отсутствие понимания, откуда пришли изменения, постоянная неразбериха адресных данных (а уж, поверьте, с ними все ну оооочень весело даже при обмене с одной базой), отсутствие данных там, где хотелось бы, и присутствие там, где нет. Если резюмировать, НЕТ! Возможности обмена Битрикс24 и нескольких баз 1С нет! Битрикс просто не приспособлен для этого.
А вот тут я бы хотел высказать свое видение и объяснить "Почему так?". Если вкратце, то схема обмена нескольких систем должна быть понятной, логичной и иметь центральный узел (я сейчас говорю о нашей ситуации). Битрикс под центральный узел не подходит от слова совсем! Его первоочередная цель - это быть CRM системой или Корп. порталом.
То есть у вас в любом случае должна быть одна централизованная база 1С (обычно ее называют управленческой базой), в которую стекаются ВСЕ данные, и есть побочные системы, из которых эти данные поступают и куда, при необходимости, отправляются. Это для случаев, кода у вас в схеме не более 5 различных систем. Чем больше, тем более сложной и многоуровневой будет выглядеть схема, но всегда есть кто-то в центре, отвечающий за манипуляцию потоками данных.
Если интересно расширить кругозор о том, как правильно строить взаимодействие между большим количеством систем, чтобы оно оставалось максимально прозрачным и имело минимальную сцепленность, рекомендую к ознакомлению статью Андрея Овсянкина //infostart.ru/1c/articles/792952/. В ней есть как мат. часть, так и подробно описанные инструменты для реализации.
2.3. Про последний вопрос: да, это возможно без особых плясок с бубном. Стоит только учитывать момент, что возможны пересекающиеся изменения, как в случае со вторым вопросом (в первую очередь, это касается Контрагентов). Если Контрагент был изменен в одном из Битриксов, то поменяется и в другом через 1С. В целом вариант не многим лучше, чем описанный выше, но менее разрушителен.
3. Соответствия объектов
Один из частых вопросов, ответа на который нет нигде в официальных источниках: “А какие объекты в Битрикс24 соответствуют каким объектам в 1С?”. С виду кажется, что все просто: “Ну сделка - это заказ, компания - это контрагент, а товар - это номенклатура!”. Для общего понимания этого достаточно, но мы-то здесь не за этим, так ведь? Ведь есть же еще контактная информация, реквизиты компаний, банковские счета, единицы измерения и дополнительные реквизиты, в конце концов. Да и с основными объектами по типу компаний не все так просто.
Вот примерная таблица соответствия объектов:
Как вы видите, список немного больше, чем может показаться при первом взгляде на интеграцию. А теперь немного пояснений:
- Настройка выгрузки основных объектов, помеченных зеленым, осуществляется отдельно друг от друга (хотя местами они и связаны) и подробно описана тут. На нюансах для каждого объекта я остановлюсь в других статьях;
- Синим помечены объекты, выгрузка которых привязана непосредственно к основным объектам и частично настраивается в соответствующих разделах, поэтому на них я тоже остановлюсь позднее;
- В таблицу я также включил некоторые объекты, которые не участвуют в типовом обмене, но про которые часто возникает вопрос: “А возможна ли выгрузка?”. Так вот, НЕТ! Задачи и лиды не выгружаются ни в какую сторону, ни в каком виде при использовании типового модуля (у Битриксовской части интеграции по умолчанию просто нет прав на эти разделы), НО выгрузка возможна! Отдельным путем через REST API Битрикс24 (тут документация), с привлечением программистов (тот самый случай, когда “Можно же как-то доработать?”).
4. Режимы синхронизации
Существует три режима обмена с Битрикс24, о которых можно почитать тут в самом низу страницы.
4.1. Первый из них “Ручной” - это просто режим, когда вы жмете кнопочку, и происходит обмен. О нем сказать нечего. Нажали и смотрите, как загружается, наблюдая за красивым журналом загрузки (к слову, про него в следующем разделе).
4.2. Второй - “В режиме реального времени”. Подразумевает поступление изменений в динамическом варианте. То есть при любых изменениях в Битрикс24 или в 1С, происходит мгновенная подгрузка изменений по тому объекту, с которым они произошли. Нюансов в целом два:
- Первый, касающийся самого процесса. С недавних пор у Битрикса существует два способа оповестить 1С об изменениях объектов. Каждый вариант требует хорошей технической базы: стабильный и быстрый интернет, достаточно мощный сервер с 1С и технически грамотный системный администратор, который настроит всю “железную” составляющую. Варианты такие:
- Через так называемые “LongPoll-запросы”. Если не вдаваться в технические детали, то 1С поддерживает постоянное соединение с Битрикс24 и мгновенно получает от Битрикса все события изменений;
- Второй вариант, появившийся недавно, через HTTP-сервис. То есть вы публикуете вашу базу на WEB-сервер, указываете в настройках внешний путь до базы, и Битрикс обращается по указанному пути каждый раз, когда происходят изменения на портале.
- Второй нюанс касается принципа работы и связан в первую очередь с файловыми базами 1С и тонкостями их работы. В данном режиме работы (в реальном времени) весь обмен происходит в фоне (в фоновых заданиях), а соответственно, для того чтобы все работало и в файловых базах 1С, разработчикам модуля пришлось пойти на ухищрения. Так как в файловой базе фоновое задание по сути запускается не в “фоне” и при выполнение блокирует пользовательский сеанс, то, чтобы запустить обмен с Битрикс24 через режим реального времени, придется пожертвовать одним сеансом. Читай как "У вас будет все время занята одна лицензия, одно “повисшее” окно 1С и один, работающий нон-стоп, компьютер").
Вообще редко когда необходима настолько оперативная передача информации из CRM системы, поэтому я рекомендую пользоваться следующим по списку режимом.
4.3. Третий режим работы - это “По расписанию”. Самый, на мой взгляд, оптимальный вариант. Технически подразумевает просто регламентное задание, которое периодически активируется и запускает обмен. Может быть настроено аналогично любому другому регламентному заданию в 1С и имеет такую же логику работы. Касательно работы в файловых базах 1С - ограничения ровно такие же, как и с любым другим регламентным заданием. Чтобы оно отработало, нужно чтобы был активен хотя бы один пользовательский сеанс.
Если в настройках обмена вы не видите возможности переключиться на режим обмена по расписанию, загляните "Общие настройки" модуля интеграции. В некоторых конфигурациях галочка для включения доступности обмена находится там.
Из интересных нюансов могу отметить техническую сторону того, как разработчики реализовали механизм добавления регламентного задания в расширении конфигурации (интересно будет программистам).
5. Журнал синхронизаций
У модуля интеграции Битрикс24 очень удобный и красивый журнал, но хранится он непосредственно в регистрах базы 1С. Как следствие, если происходит обмен большими объемами данных, то ОБЯЗАТЕЛЬНО необходимо установить настройку обрезки этого журнала. И обязательно должна быть снята галочка "Режим отладки". Она нужна только для программистов, если нужно посмотреть, что там за запросы уходят в Битрикс. А так как все это фиксируется в журнал, то количество сообщений от одного обмена увеличивается в несколько раз. В официальной инструкции этому не уделено достаточно внимания (тут в разделе “Общие настройки”), но на моей практике были случаи, когда база клиента разрасталась до крайне неприличных размеров (размер журнала в 3 раза превышал размер основных данных, накопленных за 3 года).
Особенно это критично для файловых баз, так как если вы превысите лимит по размеру таблицы данных (примерно 2 Гб), то спасать вашу базу придется с шаманами и бубнами. Еще один случай из практики, когда красивый журнал модуля Битрикс24 положил базу Бухгалтерии, и на спасение ушло полдня в авральном режиме (был последний день сдачи отчетности) и невесть сколько флаконов нашатыря для Главбуха.
В общем. При настройке убирайте галочку “Режим отладки” (в обязательном порядке) и выбирайте период обрезки журнала правильно.
6. Резюме
Из основных вопросов, которые могут возникнуть у рядового клиента, руководителя проекта, внедренца или программиста, при начале работы с интеграцией 1С и Битрикс24 или при сопровождении - пожалуй, все. В этом разделе я постарался собрать самые основные боли, которые видны на первых порах и на которые стоит обратить внимание при оценке проектов с участием такой интеграции. Надеюсь, это было полезно.
Подробно в дебри нюансов и тонкостей, касающихся каждого объекта, участвующего в обмене, я постараюсь погрузить вас в грядущих статьях. Предполагаю, что там уже будет больше технических терминов и будут они интересны именно программистам, руководителям проектов и внедренцам.
Здоровая критика, исправления и дополнения приветствуются. Если остались вопросы, добро пожаловать в комментарии, постараюсь ответить.
ВНИМАНИЕ! Спасибо за внимание! =3