Синхронизация данных между конфигурациями 1С:Комплексная автоматизация (КА) и 1С:Документооборот (ДО) — это стандартная задача при построении единого информационного пространства предприятия. Однако на практике часто возникает неприятная техническая проблема: после очередного сеанса обмена (особенно в одну сторону: КА -> ДО) в базе-приемнике начинают появляться дубли элементов справочника Структура предприятия.
Например, в вашей базе 1С:Документооборот уже существует подразделение «Бухгалтерия», на которое завязаны внутренние документы, задачи и процессы. После выполнения обмена система не сопоставляет существующий элемент и создает еще одну «Бухгалтерию». В результате ломается аналитика, а пользователям становится трудно выбирать правильный элемент.
В этой статье мы подробно разберем, почему происходит задвоение, как устроен механизм идентификации объектов при обмене и какими способами можно навсегда решить эту проблему.
Для того чтобы эффективно бороться с дублями, давайте разберем логику работы стандартного механизма обмена. Когда объект (в нашем случае — элемент справочника Структура предприятия) выгружается из базы-источника (КА) в базу-приемник (ДО), система пытается найти аналогичный объект в приемнике. Поиск происходит по следующему алгоритму:
Чаще всего задвоение происходит из-за того, что подразделения были заведены в КА и ДО вручную до настройки обмена. Их уникальные идентификаторы (UUID) различаются, записи в регистре соответствий отсутствуют, а правила поиска по полям не сработали должным образом.
Если мы используем правила конвертации данных, то логика сопоставления описывается в модулях менеджера обмена. Проанализируем, как можно принудительно переопределить правила поиска, чтобы система искала объект по наименованию и иерархии, если не удалось найти его по UUID.
Рассмотрим пример настройки правил конвертации объектов (ПКО) в общем модуле, где описываются правила получения данных:
#Область Справочник_Подразделения_Получение
Процедура ДобавитьПКО_Справочник_Подразделения_Получение(ПравилаКонвертации)
// Указываем вариант идентификации: сначала ищем по UUID, если нет - по полям поиска
ПравилоКонвертации.ВариантИдентификации = "СначалаПоУникальномуИдентификаторуПотомПоПолямПоиска";
// Определяем приоритетные поля поиска.
// Сначала пытаемся сопоставить по Наименованию в рамках одного Родителя (ветки структуры)
ПравилоКонвертации.ПоляПоиска.Добавить("Наименование,Родитель");
// Если точного совпадения с родителем нет, пробуем сопоставить просто по наименованию
ПравилоКонвертации.ПоляПоиска.Добавить("Наименование");
КонецПроцедуры
#КонецОбласти
Благодаря такой настройке, если в системе ДО уже есть элемент «Бухгалтерия» (даже с другим UUID), система сопоставит его по наименованию и не станет плодить дублирующие записи.
В современных конфигурациях 1С на базе БСП лучшим решением перед запуском первого обмена является интерактивное сопоставление данных. Выясним, как правильно выполнить эту процедуру:
Структура предприятия. Вы увидите список объектов из КА слева и список объектов из ДО справа.При этом система автоматически создаст записи в регистре сведений РегистрСведений.СоответствияОбъектовИнформационныхБаз. При всех последующих обменах система будет сразу находить сопоставленные объекты по записям в этом регистре, минуя поиск по наименованиям или кодам.
Справочник Структура предприятия является строго иерархическим. Разберем важный нюанс: если вы настроили поиск по связке «Наименование + Родитель», но родительское подразделение еще не сопоставлено, система неизбежно создаст дубли для всей подчиненной ветки.
Пример: У вас есть головное подразделение «Дирекция», а внутри него — «Бухгалтерия». Если «Дирекция» в базах имеет разные UUID и не была сопоставлена, то при поиске «Бухгалтерии» система будет искать элемент с родителем «Дирекция (новый UUID)». Поиск по связке «Наименование + Родитель» провалится, и система создаст новую «Бухгалтерию» внутри новой «Дирекции».
Правило решения: Всегда начинайте сопоставление структуры предприятия строго сверху вниз — от самых верхних (головных) подразделений к нижестоящим отделам.
Если дубли уже созданы и на них ссылаются документы в 1С:Документооборот, ни в коем случае нельзя просто удалять «лишние» элементы. Это приведет к битым ссылкам в базе данных.
Для исправления ситуации воспользуемся проверенным и безопасным алгоритмом:
Структура предприятия.Почему это решает проблему обмена? При объединении дублей стандартными средствами БСП, система не только переносит все ссылки в документах на «Оригинал», но и автоматически корректирует записи в регистре Соответствия объектов информационных баз. Уникальный идентификатор удаленного дубля связывается с UUID оставшегося оригинального элемента. При следующем обмене данные запишутся корректно.
Проанализируем архитектуру конфигураций. В 1С:Комплексная автоматизация существует два разных справочника:
Структура предприятия (управленческая структура, используемая для планирования, бюджетирования и управленческого учета);Подразделения организаций (регламентированная структура для кадрового учета и расчета зарплаты).В 1С:Документооборот редакции 2.1 используется только один справочник — Структура предприятия. При настройке обмена убедитесь, какой именно справочник из КА транслируется в ДО. Если в правилах настроена выгрузка обоих справочников в один приемник, это гарантированно приведет к задвоению и хаосу в структуре. Выгружайте только управленческую структуру.
Для предотвращения задвоения элементов справочника Структура предприятия при обмене КА -> ДО придерживайтесь следующего регламента: