Ситуация, когда после переноса данных из одной информационной базы в другую в плане счетов появляются дублирующиеся счета, является классической проблемой для конфигурации «Бухгалтерия государственного учреждения, редакция 1.0». Особенно часто это происходит при попытке «наполнить» чистую базу справочниками основных средств (ОС) и номенклатуры, используя универсальную обработку ВыгрузкаЗагрузкаДанныхXML. Проблема усугубляется тем, что счета являются предопределенными элементами, и система блокирует их удаление стандартными средствами. В этой статье мы подробно разберем причины этой ошибки и пошагово рассмотрим методы её исправления.
Для начала проанализируем ситуацию и выясним причину возникновения дублей. Несмотря на то, что конфигурации исходной и новой базы абсолютно идентичны, каждый объект в системе 1С имеет свой уникальный внутренний идентификатор — UUID (GUID). В «чистой» базе 1С:БГУ план счетов ЕПСБУ создается автоматически при первом запуске. Идентификаторы этих счетов могут не совпадать с идентификаторами в старой базе.
Рассмотрим механизм работы обработки ВыгрузкаЗагрузкаДанныхXML: она пытается сопоставить объекты именно по UUID. Если обработка не находит в новой базе счет с точно таким же идентификатором, какой был в старой, она создает новый элемент, даже если код (например, «101.34») и наименование полностью совпадают. В итоге в справочнике появляются два счета 101.34: один — «родной» для этой базы, другой — «пришлый» из выгрузки. Оба они могут иметь признак предопределенности, так как при загрузке XML-данных переносится и свойство ИмяПредопределенныхДанных.
Наличие дублей в плане счетов — это не просто эстетическая проблема. Это ведет к серьезным последствиям:
Учетные данные объекта ОС, в то время как типовые отчеты и документы будут ожидать использования «родных» счетов.ИменемПредопределенныхДанных может вызвать критический сбой.Поскольку система считает загруженные дубли предопределенными, она не дает их пометить на удаление. Нам необходимо «разжаловать» дубль до обычного элемента справочника. Для этого мы можем воспользоваться встроенным языком 1С. Рассмотрим пример кода, который поможет снять признак предопределенности с конкретного счета (выполняется через внешнюю обработку или консоль кода):
// Сначала найдем ссылку на "неправильный" счет (тот, что был загружен)
// В консоли запросов или через поиск ссылок определите UUID дубля
СсылкаНаДубль = ПланыСчетов.ЕПСБУ.НайтиПоКоду("101.34"); // Будьте осторожны, метод найдет только один из них
// Чтобы гарантированно получить объект для изменения:
ОбъектСчета = СсылкаНаДубль.ПолучитьОбъект();
// Очищаем имя предопределенных данных
ОбъектСчета.ИмяПредопределенныхДанных = "";
// Записываем изменения
ОбъектСчета.Записать();
После выполнения этого кода элемент перестанет быть системным. На иконке счета в плане счетов исчезнет «желтый кружок», и его можно будет пометить на удаление (Del). Однако просто удалить его нельзя — на него уже ссылаются справочники ОС и регистры. Переходим к следующему этапу.
Разберем, как корректно перебросить все ссылки с «неправильного» счета на «правильный». Для этого нам понадобится стандартная обработка «Поиск и замена значений» (часто входит в состав диска ИТС или консоли инструментов администратора).
Проанализируем алгоритм действий:
Основные средства или регистре Учетные данные объекта ОС).Важный нюанс: Если в результате загрузки задвоились и группы счетов (например, группа 101), процедуру замены нужно провести и для групп, и для всех вложенных счетов.
Посмотрим на ситуацию со стороны базы данных. После массовых правок в плане счетов рекомендуется выполнить Тестирование и исправление в конфигураторе. Рассмотрим настройки, которые могут быть полезны:
Сливать дубли. Однако будьте осторожны: автоматическое слияние не всегда корректно отрабатывает настройки субконто, поэтому ручная замена через обработку (Шаг 2) предпочтительнее.Выясним, что было сделано не так при первоначальной выгрузке. Использование ВыгрузкаЗагрузкаДанныхXML для переноса справочников между базами с разной историей (пусть и одной конфигурации) — это всегда риск. Рассмотрим более надежные альтернативы:
Вместо простого XML-обмена лучше использовать обработку Универсальный обмен данными в формате XML. В правилах обмена, созданных в «1С:Конвертация данных», для плана счетов нужно установить правило поиска «По коду», а не по внутреннему идентификатору. В этом случае система увидит, что счет с кодом 101.34 уже существует, и просто установит ссылку на него, не создавая дублей.
При использовании ВыгрузкаЗагрузкаДанныхXML можно было поступить иначе: снять флажок с плана счетов и справочника План счетов. В этом случае при загрузке основных средств система попытается найти счета по ссылкам. Если счета в базах имеют одинаковые UUID, они подцепятся. Если нет — объекты ОС загрузятся с пустыми счетами, которые потом проще заполнить групповой обработкой, чем бороться с дублями в системном справочнике.
ИмяПредопределенныхДанных у дублей.Удаление помеченных объектов.Следуя этой инструкции, мы сможем полностью восстановить целостность плана счетов ЕПСБУ и избежать ошибок в учете основных средств.