При интеграции интернет-магазина на базе 1С-Битрикс с 1С:Управление нашей фирмой (УНФ) часто возникает архитектурная сложность: типовой узел обмена в 1С позволяет жестко закрепить только одну организацию для всех поступающих заказов. Однако в реальном бизнесе часто сосуществуют несколько юридических лиц, например, ООО для работы с НДС и юридическими лицами и ИП для работы с физическими лицами на упрощенной системе налогообложения. Рассмотрим подробно, как автоматизировать процесс распределения заказов по нужным организациям, чтобы избежать ручной корректировки каждого документа.
Проанализируем самый простой и надежный метод, который не требует изменения программного кода и сохраняет конфигурацию на полной поддержке. Мы можем использовать штатный функционал обеих систем, создав «параллельные» каналы передачи данных.
Шаг 1: Настройка в 1С:УНФ
Индивидуальный предприниматель.Общество с ограниченной ответственностью.Шаг 2: Настройка на стороне 1С-Битрикс
Тип плательщика = Физическое лицо.Тип плательщика = Юридическое лицо.Таким образом, при выполнении синхронизации заказы физлиц будут «подхватываться» первым узлом и создаваться в 1С от имени ИП, а заказы юрлиц — вторым узлом от имени ООО. Это самый чистый способ с точки зрения методологии 1С.
Многие пользователи используют встроенный в 1С:УНФ механизм, но существует также расширенный модуль, разрабатываемый компанией Битрикс. Разберем, какие возможности он предоставляет для нашей задачи.
В современных версиях этого модуля (начиная с 7.x) реализован гибкий механизм сопоставления данных. В настройках модуля на стороне 1С есть специальная таблица «Сопоставление организаций». Проанализируем, как она работает:
Заказ покупателя создается на нужную организацию, игнорируя значение по умолчанию.Если вышеуказанные способы по какой-то причине не подходят, рассмотрим вариант кастомизации процесса загрузки. Выясним, в каком месте кода происходит заполнение организации. Основная логика разбора файла обмена находится в модулях, отвечающих за работу с CommerceML. Мы не будем менять типовую конфигурацию, а воспользуемся механизмом расширений.
Нам необходимо перехватить процедуру после загрузки данных из XML, но перед записью объекта в базу данных. Посмотрим на логику, которую предложили участники форума: проверять тип контрагента (ЮрЛицо или ФизЛицо) и в зависимости от этого подставлять организацию.
Пример программного кода, который можно внедрить в процедуру-обработчик (например, в модуле менеджера или через подписку на событие ПередЗаписью для документа ЗаказПокупателя):
Процедура ПередЗаписьюЗаказаИзОбмена(Источник, Отказ, РежимЗаписи, РежимПроведения)
// Проверяем, что документ новый и загружается именно через обмен
Если Источник.ОбменДанными.Загрузка Тогда
КонтрагентОбъект = Источник.Контрагент;
// Определяем юридический статус контрагента
Если КонтрагентОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
// Если юрлицо — устанавливаем ООО
Источник.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Ромашка");
Источник.НалогообложениеПродаж = Перечисления.ТипНалогообложенияНалогомНаДобавленнуюСтоимость.ОблагаетсяНДС;
Иначе
// Если физлицо или ИП — устанавливаем ИП
Источник.Организация = Справочники.Организации.НайтиПоНаименованию("ИП Иванов");
Источник.НалогообложениеПродаж = Перечисления.ТипНалогообложенияНалогомНаДобавленнуюСтоимость.НеОблагаетсяНДС;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Важно помнить, что при смене организации необходимо также корректировать поле НалогообложениеПродаж, так как от этого зависит, будет ли в заказе выделяться НДС и как будут рассчитываться итоги.
Разберем дополнительные сложности, которые могут возникнуть при разделении заказов на разные организации:
<ЗначенияРеквизитов> Битрикс передает множество данных. Иногда проще настроить на сайте передачу специального параметра (например, ИНН организации-продавца) и в 1С искать организацию именно по этому ИНН.Подведем итог: наиболее рекомендуемым является Способ №1, так как он не требует вмешательства в программный код и легко масштабируется (например, если появится третья организация). Если же требуется полная автоматизация без создания лишних узлов, следует смотреть в сторону Способа №2 с использованием официального расширения от Битрикса.