Как правильно связать справочники «Структура предприятия» и «Организации» в 1С:Комплексная автоматизация 2

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

При интеграции 1С:Комплексная автоматизация 2 (или 1С:ERP 2) с внешними источниками — будь то интернет-магазин, мобильное приложение или внешняя CRM-система — разработчики часто сталкиваются со следующей проблемой. С сайта загружаются данные о выпуске продукции или продажах с привязкой к конкретному городу (точке продаж). В 1С этот город заведен как элемент справочника СтруктураПредприятия (управленческое подразделение).

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

Архитектурная концепция 1С:КА 2 и 1С:ERP 2

В старых конфигурациях (таких как 1С:Управление производственным предприятием 1.3) справочник подразделений был жестко подчинен организации. В современных ERP-системах от 1С логика кардинально изменилась:

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

Попытка сделать справочник Организации владельцем справочника СтруктураПредприятия — это грубейшая методологическая ошибка. Она не только сделает невозможным стандартное обновление конфигурации, но и разрушит механизмы интеркампани, расчета себестоимости и финансового учета.

Опасность использования «Регистрации в налоговом органе»

Иногда на форумах предлагают использовать штатный регистр сведений РегистрацииВНалоговомОргане (или настройки регистрации подразделений в карточке организации). На первый взгляд, это кажется отличным и быстрым решением: сопоставить подразделение организации и налоговый орган, получив готовую связь.

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

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

Вариант 1. Использование механизма дополнительных реквизитов (No-code)

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

Рассмотрим по шагам, как это настроить:

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

При загрузке данных с сайта программный код поиска организации будет выглядеть следующим образом:


Функция ПолучитьОрганизациюПоПодразделению(ПодразделениеСсылка) Экспорт
    
    // Получаем значение дополнительного реквизита
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	ДополнительныеРеквизиты.Значение КАК Организация
        |ИЗ
        |	Справочник.СтруктураПредприятия.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
        |ГДЕ
        |	ДополнительныеРеквизиты.Ссылка = &Подразделение
        |	И ДополнительныеРеквизиты.Свойство.Имя = ""ОрганизацияПоУмолчанию""";
        
    Запрос.УстановитьПараметр("Подразделение", ПодразделениеСсылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Организация;
    КонецЕсли;
    
    Возврат Справочники.Организации.ПустаяСсылка();
    
КонецФункции

Вариант 2. Создание собственного регистра сведений сопоставления (Best Practice)

Этот вариант является наиболее гибким и масштабируемым. Если в будущем бизнес-логика изменится (например, один и тот же город начнет выпускать продукцию под разными организациями в зависимости от вида номенклатуры), вам не придется переписывать программный код интеграции. Достаточно будет лишь расширить структуру регистра.

Выполните следующие действия в конфигураторе:

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

Для получения данных при записи документа используйте следующий шаблон кода:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Сопоставление.Организация КАК Организация
    |ИЗ
    |	РегистрСведений.СопоставлениеПодразделенийИОрганизаций КАК Сопоставление
    |ГДЕ
    |	Сопоставление.Подразделение = &Подразделение";

Запрос.УстановитьПараметр("Подразделение", ЗагруженноеПодразделение);
Результат = Запрос.Выполнить();

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

Вариант 3. Связь через Склады

Зачастую выпуск готовой продукции или оптовые продажи жестко привязаны к конкретному физическому складу в городе. У справочника Склады в 1С:КА 2 нет жесткого владельца в лице организации, однако бизнес-процессы обычно строятся так, что склад закреплен за определенным юридическим лицом.

Если у вас для каждого города создан свой материальный склад, вы можете привязать организацию именно к складу (также через механизм дополнительных реквизитов). При загрузке документов выпуска система определит склад по городу, а организацию заполнит на основании настроек этого склада. Это позволит избежать избыточного дублирования связей в системе.

← На главную