Как устранить дублирование подразделений в 1С:Бухгалтерия 3.0 при наличии записей в закрытых периодах?

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

Ситуация, когда после настройки синхронизации между 1С:Бухгалтерия 3.0 и 1С:Зарплата и Управление Персоналом 3.1 в справочнике Подразделения появляются дубли, является классической. Чаще всего это происходит из-за того, что при первом обмене не было выполнено ручное сопоставление объектов, и программа создала новые элементы на основании данных из другой базы. Сложность возникает тогда, когда дубли обнаруживаются спустя несколько месяцев, когда регламентные операции по закрытию месяца уже выполнены, а данные отражены в учете.

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

Почему стандартная обработка «Поиск и удаление дублей» выдает ошибку?

Проанализируем техническую сторону вопроса. При попытке объединить два подразделения (назовем их «Подразделение А» — правильное и «Подразделение Б» — дубль) стандартная обработка пытается заменить ссылки во всех документах и регистрах. Однако в 1С:Бухгалтерия 3.0 существует РегистрСведений.РасчетСписанияКосвенныхРасходов (и ряд аналогичных), где Подразделение является измерением.

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

Вариант 1. Программное слияние наборов записей (рекомендуется для программистов)

Рассмотрим наиболее корректный с технической точки зрения метод. Вместо простой замены ссылок нам необходимо выполнить слияние записей в проблемных регистрах. Разберем алгоритм, который можно реализовать в виде небольшой обработки:

  1. Выбираем подразделение-дубль и правильное подразделение.
  2. Проходим по всем регистрам сведений, где подразделение является измерением.
  3. Считываем набор записей по подразделению-дублю.
  4. Для каждой записи ищем существующую запись с такими же измерениями, но с правильным подразделением.
  5. Если такая запись найдена, суммируем ресурсы (суммы, количество) и записываем в «правильную» запись, а запись по дублю удаляем.
  6. Если запись не найдена, просто меняем значение измерения на правильное подразделение.

Посмотрим на пример логики кода для обработки набора записей:


// Пример логики объединения записей в регистре сведений
Процедура ОбъединитьЗаписиРегистра(РегистрИмя, ПравильноеПодразделение, ПодразделениеДубль)
    НаборДубль = РегистрыСведений[РегистрИмя].СоздатьНаборЗаписей();
    НаборДубль.Отбор.Подразделение.Установить(ПодразделениеДубль);
    НаборДубль.Прочитать();

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

Вариант 2. Ручная корректировка регламентных операций

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

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

Вариант 3. Организационное решение (без удаления данных)

Если вы опасаетесь вносить изменения в прошлые периоды (особенно в прошлый год), можно применить методику «мягкого» вывода подразделения из эксплуатации. Рассмотрим, как это сделать правильно:

Шаг 1. Переименование. Переименуйте старое (неправильное) подразделение, добавив префикс (НЕ ИСПОЛЬЗОВАТЬ) или (АРХИВ). Это исключит его случайный выбор сотрудниками в новых документах.

Шаг 2. Перенос текущих остатков. Если на дублирующем подразделении числятся остатки на счетах затрат, ТМЦ или основные средства, необходимо оформить документы переноса на текущую дату:

Шаг 3. Настройка синхронизации. Это критический момент. Выясним причину дублирования: в настройках синхронизации данных необходимо открыть «Состав отправляемых данных» и настроить «Сопоставление данных». Убедитесь, что объект из ЗУП сопоставлен с конкретным объектом в БП по внутреннему идентификатору (GUID), а не просто по наименованию. Если этого не сделать, при следующем обмене подразделение прибежит снова.

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

Выбор метода зависит от ваших компетенций и объема данных. Если вы программист — лучше всего написать обработку для слияния НаборовЗаписей, так как это гарантирует чистоту базы без «хвостов». Если вы бухгалтер и записей немного — используйте ручную корректировку движений. Если же дублей очень много и они тянутся из глубокого прошлого — организационное решение с переименованием будет самым безопасным для налогового и бухгалтерского учета.

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

← На главную