При интеграции 1С:Комплексная автоматизация 2 (или 1С:ERP 2) с внешними источниками — будь то интернет-магазин, мобильное приложение или внешняя CRM-система — разработчики часто сталкиваются со следующей проблемой. С сайта загружаются данные о выпуске продукции или продажах с привязкой к конкретному городу (точке продаж). В 1С этот город заведен как элемент справочника СтруктураПредприятия (управленческое подразделение).
Однако при попытке создать документ (например, ВыпускПродукции или ПриобретениеТоваровУслуг) система требует заполнить два обязательных реквизита: Организацию (юридическое лицо) и Подразделение (управленческую структуру). Прямой логической связи между этими справочниками в системе нет. В этой статье мы подробно разберем, почему разработчики 1С приняли такое архитектурное решение, какие опасности таят в себе «быстрые» решения и как правильно реализовать эту связь на практике.
В старых конфигурациях (таких как 1С:Управление производственным предприятием 1.3) справочник подразделений был жестко подчинен организации. В современных ERP-системах от 1С логика кардинально изменилась:
СтруктураПредприятия является сквозным и единым для управленческого учета. Он отражает реальную структуру бизнеса (цеха, склады, отделы продаж, региональные филиалы) без привязки к юридическим лицам.Попытка сделать справочник Организации владельцем справочника СтруктураПредприятия — это грубейшая методологическая ошибка. Она не только сделает невозможным стандартное обновление конфигурации, но и разрушит механизмы интеркампани, расчета себестоимости и финансового учета.
Иногда на форумах предлагают использовать штатный регистр сведений РегистрацииВНалоговомОргане (или настройки регистрации подразделений в карточке организации). На первый взгляд, это кажется отличным и быстрым решением: сопоставить подразделение организации и налоговый орган, получив готовую связь.
Проанализируем ситуацию глубже. Данный механизм предназначен исключительно для обособленных подразделений (ОП), не выделенных на отдельный баланс. Если вы привяжете обычный город к налоговому органу организации ради простой подстановки в документы выпуска, система воспримет этот город как официальное обособленное подразделение ФНС. Это приведет к следующим последствиям:
Поэтому использовать данный механизм для целей интеграции категорически не рекомендуется, если только ваш город действительно не является зарегистрированным в ФНС обособленным подразделением.
Если вам нужно связать подразделение и организацию без изменения метаданных конфигурации, идеальным решением будет использование штатного механизма дополнительных реквизитов.
Рассмотрим по шагам, как это настроить:
Структура предприятия.СправочникСсылка.Организации.При загрузке данных с сайта программный код поиска организации будет выглядеть следующим образом:
Функция ПолучитьОрганизациюПоПодразделению(ПодразделениеСсылка) Экспорт
// Получаем значение дополнительного реквизита
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеРеквизиты.Значение КАК Организация
|ИЗ
| Справочник.СтруктураПредприятия.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
|ГДЕ
| ДополнительныеРеквизиты.Ссылка = &Подразделение
| И ДополнительныеРеквизиты.Свойство.Имя = ""ОрганизацияПоУмолчанию""";
Запрос.УстановитьПараметр("Подразделение", ПодразделениеСсылка);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Организация;
КонецЕсли;
Возврат Справочники.Организации.ПустаяСсылка();
КонецФункции
Этот вариант является наиболее гибким и масштабируемым. Если в будущем бизнес-логика изменится (например, один и тот же город начнет выпускать продукцию под разными организациями в зависимости от вида номенклатуры), вам не придется переписывать программный код интеграции. Достаточно будет лишь расширить структуру регистра.
Выполните следующие действия в конфигураторе:
СопоставлениеПодразделенийИОрганизаций.Подразделение с типом СправочникСсылка.СтруктураПредприятия. Установите для него свойство Ведущее.Организация с типом СправочникСсылка.Организации.ВидДеятельности или ГруппаНоменклатуры).Для получения данных при записи документа используйте следующий шаблон кода:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сопоставление.Организация КАК Организация
|ИЗ
| РегистрСведений.СопоставлениеПодразделенийИОрганизаций КАК Сопоставление
|ГДЕ
| Сопоставление.Подразделение = &Подразделение";
Запрос.УстановитьПараметр("Подразделение", ЗагруженноеПодразделение);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
НовыйДокумент.Организация = Выборка.Организация;
Иначе
// Логика обработки ситуации, когда сопоставление не заполнено
ВызватьИсключение "Не найдено сопоставление организации для подразделения: " + ЗагруженноеПодразделение;
КонецЕсли;
Зачастую выпуск готовой продукции или оптовые продажи жестко привязаны к конкретному физическому складу в городе. У справочника Склады в 1С:КА 2 нет жесткого владельца в лице организации, однако бизнес-процессы обычно строятся так, что склад закреплен за определенным юридическим лицом.
Если у вас для каждого города создан свой материальный склад, вы можете привязать организацию именно к складу (также через механизм дополнительных реквизитов). При загрузке документов выпуска система определит склад по городу, а организацию заполнит на основании настроек этого склада. Это позволит избежать избыточного дублирования связей в системе.