Как настроить выгрузку заказов с сайта на разные организации в 1С:УНФ?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет Торговля и дистрибуция
← На главную

При интеграции интернет-магазина на базе 1С-Битрикс с 1С:Управление нашей фирмой (УНФ) часто возникает архитектурная сложность: типовой узел обмена в 1С позволяет жестко закрепить только одну организацию для всех поступающих заказов. Однако в реальном бизнесе часто сосуществуют несколько юридических лиц, например, ООО для работы с НДС и юридическими лицами и ИП для работы с физическими лицами на упрощенной системе налогообложения. Рассмотрим подробно, как автоматизировать процесс распределения заказов по нужным организациям, чтобы избежать ручной корректировки каждого документа.

Способ 1: Создание нескольких узлов обмена (без программирования)

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

Шаг 1: Настройка в 1С:УНФ

  1. Перейдем в раздел Компания — Интеграция с сайтом — Настройка интеграции с сайтом.
  2. Создадим первый узел обмена, назовем его «Обмен с сайтом (ИП)». В настройках на вкладке «Заказы» выберем организацию Индивидуальный предприниматель.
  3. Создадим второй узел обмена — «Обмен с сайтом (ООО)». Здесь укажем организацию Общество с ограниченной ответственностью.
  4. Для каждого узла система сгенерирует уникальные параметры авторизации или позволит использовать один адрес, но разные настройки фильтрации.

Шаг 2: Настройка на стороне 1С-Битрикс

  1. В административной панели сайта перейдем в раздел Магазин — Настройки — Интеграция с 1С.
  2. Вместо одного профиля экспорта заказов создадим два.
  3. В первом профиле (связанном с узлом ИП в 1С) настроим фильтр: Тип плательщика = Физическое лицо.
  4. Во втором профиле (связанном с узлом ООО) настроим фильтр: Тип плательщика = Юридическое лицо.

Таким образом, при выполнении синхронизации заказы физлиц будут «подхватываться» первым узлом и создаваться в 1С от имени ИП, а заказы юрлиц — вторым узлом от имени ООО. Это самый чистый способ с точки зрения методологии 1С.

Способ 2: Использование внешнего модуля «1С-Битрикс: Интеграция с 1С»

Многие пользователи используют встроенный в 1С:УНФ механизм, но существует также расширенный модуль, разрабатываемый компанией Битрикс. Разберем, какие возможности он предоставляет для нашей задачи.

В современных версиях этого модуля (начиная с 7.x) реализован гибкий механизм сопоставления данных. В настройках модуля на стороне 1С есть специальная таблица «Сопоставление организаций». Проанализируем, как она работает:

Способ 3: Программная доработка разбора XML (через расширение)

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

Нам необходимо перехватить процедуру после загрузки данных из XML, но перед записью объекта в базу данных. Посмотрим на логику, которую предложили участники форума: проверять тип контрагента (ЮрЛицо или ФизЛицо) и в зависимости от этого подставлять организацию.

Пример программного кода, который можно внедрить в процедуру-обработчик (например, в модуле менеджера или через подписку на событие ПередЗаписью для документа ЗаказПокупателя):


Процедура ПередЗаписьюЗаказаИзОбмена(Источник, Отказ, РежимЗаписи, РежимПроведения)
    // Проверяем, что документ новый и загружается именно через обмен
    Если Источник.ОбменДанными.Загрузка Тогда
        КонтрагентОбъект = Источник.Контрагент;
        
        // Определяем юридический статус контрагента
        Если КонтрагентОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда
            // Если юрлицо — устанавливаем ООО
            Источник.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Ромашка");
            Источник.НалогообложениеПродаж = Перечисления.ТипНалогообложенияНалогомНаДобавленнуюСтоимость.ОблагаетсяНДС;
        Иначе
            // Если физлицо или ИП — устанавливаем ИП
            Источник.Организация = Справочники.Организации.НайтиПоНаименованию("ИП Иванов");
            Источник.НалогообложениеПродаж = Перечисления.ТипНалогообложенияНалогомНаДобавленнуюСтоимость.НеОблагаетсяНДС;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

Важные нюансы: Цены, Склады и НДС

Разберем дополнительные сложности, которые могут возникнуть при разделении заказов на разные организации:

  1. Типы цен: Для ООО с НДС и ИП без НДС в 1С:УНФ часто создаются разные виды цен. Например, «Оптовая с НДС» и «Розничная без НДС». Убедитесь, что при смене организации в заказе также подставляется корректный вид цен, иначе суммы в 1С могут не совпасть с суммами на сайте.
  2. Складской учет: Если у организаций один общий склад (как в рассматриваемом случае), то проблем с остатками не возникнет. Однако, если вы решите разделять остатки, потребуется дополнительная настройка выгрузки остатков в разрезе складов, привязанных к конкретным организациям.
  3. Реквизиты в CommerceML: Проанализируем структуру XML-файла. В блоке <ЗначенияРеквизитов> Битрикс передает множество данных. Иногда проще настроить на сайте передачу специального параметра (например, ИНН организации-продавца) и в 1С искать организацию именно по этому ИНН.

Подведем итог: наиболее рекомендуемым является Способ №1, так как он не требует вмешательства в программный код и легко масштабируется (например, если появится третья организация). Если же требуется полная автоматизация без создания лишних узлов, следует смотреть в сторону Способа №2 с использованием официального расширения от Битрикса.

← На главную