Как решить проблему задвоения справочника «Структура предприятия» при обмене между 1С:Комплексная автоматизация и 1С:Документооборот?

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

Синхронизация данных между конфигурациями 1С:Комплексная автоматизация (КА) и 1С:Документооборот (ДО) — это стандартная задача при построении единого информационного пространства предприятия. Однако на практике часто возникает неприятная техническая проблема: после очередного сеанса обмена (особенно в одну сторону: КА -> ДО) в базе-приемнике начинают появляться дубли элементов справочника Структура предприятия.

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

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

Поймем причину: как работает сопоставление объектов в 1С

Для того чтобы эффективно бороться с дублями, давайте разберем логику работы стандартного механизма обмена. Когда объект (в нашем случае — элемент справочника Структура предприятия) выгружается из базы-источника (КА) в базу-приемник (ДО), система пытается найти аналогичный объект в приемнике. Поиск происходит по следующему алгоритму:

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

Чаще всего задвоение происходит из-за того, что подразделения были заведены в КА и ДО вручную до настройки обмена. Их уникальные идентификаторы (UUID) различаются, записи в регистре соответствий отсутствуют, а правила поиска по полям не сработали должным образом.

Способ 1. Настройка правил обмена и полей поиска в коде

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

Рассмотрим пример настройки правил конвертации объектов (ПКО) в общем модуле, где описываются правила получения данных:


#Область Справочник_Подразделения_Получение

Процедура ДобавитьПКО_Справочник_Подразделения_Получение(ПравилаКонвертации)
    
    // Указываем вариант идентификации: сначала ищем по UUID, если нет - по полям поиска
    ПравилоКонвертации.ВариантИдентификации = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска";
    
    // Определяем приоритетные поля поиска. 
    // Сначала пытаемся сопоставить по Наименованию в рамках одного Родителя (ветки структуры)
    ПравилоКонвертации.ПоляПоиска.Добавить("Наименование,Родитель");
    
    // Если точного совпадения с родителем нет, пробуем сопоставить просто по наименованию
    ПравилоКонвертации.ПоляПоиска.Добавить("Наименование");

КонецПроцедуры

#КонецОбласти

Благодаря такой настройке, если в системе ДО уже есть элемент «Бухгалтерия» (даже с другим UUID), система сопоставит его по наименованию и не станет плодить дублирующие записи.

Способ 2. Интерактивное сопоставление через регистр соответствий

В современных конфигурациях 1С на базе БСП лучшим решением перед запуском первого обмена является интерактивное сопоставление данных. Выясним, как правильно выполнить эту процедуру:

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

При этом система автоматически создаст записи в регистре сведений РегистрСведений.СоответствияОбъектовИнформационныхБаз. При всех последующих обменах система будет сразу находить сопоставленные объекты по записям в этом регистре, минуя поиск по наименованиям или кодам.

Способ 3. Каскадное задвоение из-за иерархии (Родитель)

Справочник Структура предприятия является строго иерархическим. Разберем важный нюанс: если вы настроили поиск по связке «Наименование + Родитель», но родительское подразделение еще не сопоставлено, система неизбежно создаст дубли для всей подчиненной ветки.

Пример: У вас есть головное подразделение «Дирекция», а внутри него — «Бухгалтерия». Если «Дирекция» в базах имеет разные UUID и не была сопоставлена, то при поиске «Бухгалтерии» система будет искать элемент с родителем «Дирекция (новый UUID)». Поиск по связке «Наименование + Родитель» провалится, и система создаст новую «Бухгалтерию» внутри новой «Дирекции».

Правило решения: Всегда начинайте сопоставление структуры предприятия строго сверху вниз — от самых верхних (головных) подразделений к нижестоящим отделам.

Способ 4. Очистка дублей и автоматическое исправление регистра

Если дубли уже созданы и на них ссылаются документы в 1С:Документооборот, ни в коем случае нельзя просто удалять «лишние» элементы. Это приведет к битым ссылкам в базе данных.

Для исправления ситуации воспользуемся проверенным и безопасным алгоритмом:

  1. В базе 1С:Документооборот перейдите в раздел Администрирование -> Обслуживание -> Корректировка данных и откройте обработку «Поиск и удаление дублей».
  2. В поле «Искать в» выберите справочник Структура предприятия.
  3. Задайте правила поиска: например, совпадение по полю «Наименование».
  4. Нажмите кнопку «Найти дубли».
  5. Система выведет список найденных дублей. Выберите элемент, который будет назначен «Оригиналом» (наиболее старый элемент, на который ссылается большинство документов). Остальные элементы будут помечены как «Дубли».
  6. Нажмите кнопку «Удалить дубли».

Почему это решает проблему обмена? При объединении дублей стандартными средствами БСП, система не только переносит все ссылки в документах на «Оригинал», но и автоматически корректирует записи в регистре Соответствия объектов информационных баз. Уникальный идентификатор удаленного дубля связывается с UUID оставшегося оригинального элемента. При следующем обмене данные запишутся корректно.

Способ 5. Разделение типов справочников (Важное предупреждение)

Проанализируем архитектуру конфигураций. В 1С:Комплексная автоматизация существует два разных справочника:

В 1С:Документооборот редакции 2.1 используется только один справочник — Структура предприятия. При настройке обмена убедитесь, какой именно справочник из КА транслируется в ДО. Если в правилах настроена выгрузка обоих справочников в один приемник, это гарантированно приведет к задвоению и хаосу в структуре. Выгружайте только управленческую структуру.

Резюме и рекомендации

Для предотвращения задвоения элементов справочника Структура предприятия при обмене КА -> ДО придерживайтесь следующего регламента:

← На главную