Как настроить перенос справочников только по ссылке в КД 2.1 и решить проблемы со справочниками Контрагенты и Партнеры в 1С:ERP

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

При разработке правил обмена в конфигурации «Конвертация данных 2.1» (КД 2.1) специалисты часто сталкиваются со следующей проблемой: при переносе конкретного документа программа неожиданно выгружает весь связанный справочник (например, всех контрагентов вместе с группами и историческими записями), хотя требовалось перенести только того контрагента, который непосредственно указан в документе.

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

В этой статье мы подробно разберем, как правильно настроить выгрузку объектов строго по ссылке, разберемся в архитектурных нюансах ERP и научимся корректно очищать базу от ошибочно перенесенных данных.

Раздел 1. Настройка выгрузки элементов справочника только по ссылке в КД 2.1

Для начала проанализируем ситуацию: почему при переносе одного документа выгружается весь справочник? В КД 2.1 за инициацию выгрузки данных отвечают два ключевых механизма: Правила выгрузки данных (ПВД) и Правила конвертации объектов (ПКО).

Основная ошибка разработчиков заключается в том, что они создают ПВД для справочников, которые должны переноситься только как сопутствующие данные к документам. Если для справочника Контрагенты создано и активно ПВД, то при запуске обмена система попытается прочитать всю таблицу этого справочника из источника и выгрузить её целиком.

Выполним правильную настройку выгрузки «только по ссылке» по шагам:

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

Рассмотрим пример кода, который можно написать в обработчике ПередВыгрузкой свойства (ПКС) Контрагент у документа:


// Если необходимо передать только ссылку для сопоставления без создания/обновления объекта
ТолькоПолучитьУзелСсылки = Истина;

Если же мы хотим полностью запретить выгрузку реквизитов объекта при определенных условиях, в обработчике ПередВыгрузкой ПКО справочника можно написать:


// Пример: запрет выгрузки групп справочника, если они не нужны в приемнике
Если Источник.ЭтоГруппа Тогда
    Отказ = Истина;
КонецЕсли;

Использование флага Отказ = Истина в ПКО группы предотвратит создание ненужных иерархических элементов в плоских справочниках приемника.

Раздел 2. Архитектурные особенности 1С:ERP: Партнеры и Контрагенты

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

Именно поэтому при попытке перенести группы из старой базы (где справочник контрагентов был иерархическим) напрямую в справочник Контрагенты в ERP возникает логическая ошибка: в приемнике нет реквизита Родитель (или свойства ЭтоГруппа в классическом понимании), из-за чего иерархия ломается.

Рассмотрим еще одну частую проблему: почему в ERP в справочнике Контрагенты недоступна кнопка «Создать» или «Изменить»? Причина кроется в состоянии Функциональной опции (ФО) «Независимо вести партнеров и контрагентов».

Проанализируем два режима работы системы:

  1. Функциональная опция ВЫКЛЮЧЕНА (упрощенный режим):

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

  2. Функциональная опция ВКЛЮЧЕНА (независимое ведение):

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

Чтобы включить эту функциональную опцию в 1С:ERP, выполните следующие действия:

Перейдите в раздел НСИ и администрирование -> Настройка НСИ и разделов -> CRM и маркетинг -> разверните подраздел Настройки CRM -> установите флаг Независимо вести партнеров и контрагентов.

Раздел 3. Правильный перенос связанных справочников «Партнеры» и «Контрагенты»

Для корректного переноса данных из систем старого поколения (например, 1С:Управление производственным предприятием 1.3) в ERP необходимо настроить два правила конвертации (ПКО):

Рассмотрим пример настройки ПКС Партнер в правиле ПКО_Контрагенты:


// В правиле конвертации свойства Партнер у Контрагента
// Указываем, что поиск и создание партнера должны происходить по правилу ПКО_Партнеры
ИмяПКО = "ПКО_Партнеры";

Такой подход гарантирует, что при переносе одного контрагента система автоматически создаст для него корректного партнера в ERP, связав их между собой без нарушения логики конфигурации.

Раздел 4. Удаление некорректно перенесенных данных в 1С:ERP

Если правила были настроены неверно, и в базу-приемник уже загрузились «битые» данные (например, контрагенты без партнеров, группы в плоском справочнике), необходимо произвести очистку.

Проанализируем два способа удаления данных:

Способ 1. Использование вкладки «Удаление данных» в универсальной обработке

В обработке Универсальный обмен данными в формате XML присутствует специализированная вкладка «Удаление данных». Здесь можно выбрать конкретный тип метаданных (например, СправочникСсылка.Контрагенты) и произвести очистку. Однако помните, что этот метод выполняет непосредственное удаление записей из базы данных. Если эти контрагенты уже были задействованы в документах, вы получите битые ссылки вида <Объект не найден>.

Способ 2. Безопасное удаление через пометку удаления

Рекомендуется использовать стандартные и безопасные механизмы платформы 1С для сохранения ссылочной целостности базы данных:

  1. Откройте обработку Групповое изменение реквизитов (раздел НСИ и администрирование -> Обслуживание -> Корректировка данных).
  2. Выберите объект Контрагенты или Партнеры. При необходимости настройте отбор (например, по автору создания или по дате создания, чтобы зафиксировать только ошибочно импортированные элементы).
  3. Найдите реквизит Пометка удаления, установите значение в Да (Истина) и выполните изменение.
  4. После этого запустите стандартную обработку Удаление помеченных объектов. Она автоматически проверит, задействованы ли эти контрагенты в документах или регистрах. Если ссылок на них нет, объекты будут удалены безвозвратно и безопасно. Если ссылки найдутся, программа покажет вам эти документы, предотвращая появление битых связей в базе данных.
← На главную