Ситуация, когда после настройки синхронизации между 1С:Бухгалтерия 3.0 и 1С:Зарплата и Управление Персоналом 3.1 в справочнике Подразделения появляются дубли, является классической. Чаще всего это происходит из-за того, что при первом обмене не было выполнено ручное сопоставление объектов, и программа создала новые элементы на основании данных из другой базы. Сложность возникает тогда, когда дубли обнаруживаются спустя несколько месяцев, когда регламентные операции по закрытию месяца уже выполнены, а данные отражены в учете.
В этой статье мы подробно разберем, почему стандартные инструменты не справляются с этой задачей и какими методами можно устранить дублирование без необходимости перепроводить закрытие прошлых периодов.
Проанализируем техническую сторону вопроса. При попытке объединить два подразделения (назовем их «Подразделение А» — правильное и «Подразделение Б» — дубль) стандартная обработка пытается заменить ссылки во всех документах и регистрах. Однако в 1С:Бухгалтерия 3.0 существует РегистрСведений.РасчетСписанияКосвенныхРасходов (и ряд аналогичных), где Подразделение является измерением.
Согласно архитектуре платформы 1С, в регистре сведений не может существовать двух записей с одинаковыми значениями измерений (ключом записи). Если в одном и том же месяце по одной и той же статье затрат есть записи и для «Подразделения А», и для «Подразделения Б», простая замена ссылки приведет к попытке создания дублирующего ключа. Платформа заблокирует это действие ошибкой: «Запись с такими ключевыми полями существует».
Рассмотрим наиболее корректный с технической точки зрения метод. Вместо простой замены ссылок нам необходимо выполнить слияние записей в проблемных регистрах. Разберем алгоритм, который можно реализовать в виде небольшой обработки:
Посмотрим на пример логики кода для обработки набора записей:
// Пример логики объединения записей в регистре сведений
Процедура ОбъединитьЗаписиРегистра(РегистрИмя, ПравильноеПодразделение, ПодразделениеДубль)
НаборДубль = РегистрыСведений[РегистрИмя].СоздатьНаборЗаписей();
НаборДубль.Отбор.Подразделение.Установить(ПодразделениеДубль);
НаборДубль.Прочитать();
Если НаборДубль.Количество() > 0 Тогда
Для Каждого ЗаписьДубль Из НаборДубль Цикл
// Создаем структуру для поиска аналогичной записи
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Период", ЗаписьДубль.Период);
ПараметрыОтбора.Вставить("Организация", ЗаписьДубль.Организация);
ПараметрыОтбора.Вставить("Подразделение", ПравильноеПодразделение);
// Добавить остальные измерения регистра (СтатьяЗатрат и т.д.)
// Здесь должна быть логика поиска/объединения или изменения измерения
// с учетом уникальности ключа записи.
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Если количество ссылок невелико (например, пара десятков записей в регистрах), можно воспользоваться штатным механизмом «Ручная корректировка» в документах РегламентнаяОперация. Проанализируем этот путь:
Расчет списания косвенных расходов.Если вы опасаетесь вносить изменения в прошлые периоды (особенно в прошлый год), можно применить методику «мягкого» вывода подразделения из эксплуатации. Рассмотрим, как это сделать правильно:
Шаг 1. Переименование. Переименуйте старое (неправильное) подразделение, добавив префикс (НЕ ИСПОЛЬЗОВАТЬ) или (АРХИВ). Это исключит его случайный выбор сотрудниками в новых документах.
Шаг 2. Перенос текущих остатков. Если на дублирующем подразделении числятся остатки на счетах затрат, ТМЦ или основные средства, необходимо оформить документы переноса на текущую дату:
Перемещение ОС — для переноса основных средств.Перемещение товаров — для складских остатков.Операция, введенная вручную — для переноса сальдо по счетам затрат (например, 20 или 25 счет), если они не закрылись.Шаг 3. Настройка синхронизации. Это критический момент. Выясним причину дублирования: в настройках синхронизации данных необходимо открыть «Состав отправляемых данных» и настроить «Сопоставление данных». Убедитесь, что объект из ЗУП сопоставлен с конкретным объектом в БП по внутреннему идентификатору (GUID), а не просто по наименованию. Если этого не сделать, при следующем обмене подразделение прибежит снова.
Выбор метода зависит от ваших компетенций и объема данных. Если вы программист — лучше всего написать обработку для слияния НаборовЗаписей, так как это гарантирует чистоту базы без «хвостов». Если вы бухгалтер и записей немного — используйте ручную корректировку движений. Если же дублей очень много и они тянутся из глубокого прошлого — организационное решение с переименованием будет самым безопасным для налогового и бухгалтерского учета.
Помните, что любые манипуляции с регистрами в закрытых периодах могут повлиять на сальдо счетов. Перед началом работ обязательно сделайте архивную копию базы данных и сверьте Оборотно-сальдовую ведомость по подразделениям до и после внесения изменений.