Как исправить ошибку дублирования полей Код и КоррСчет в классификаторе банков при переносе базы в 1С:Фреш

Программист 1С v8.3 (Управляемые формы)
← На главную

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

Почему возникает эта ошибка и почему ее трудно найти?

Проанализируем ситуацию: при выгрузке данных для облака программа формирует специальный файл (через XDTO-пакеты). Для справочника КлассификаторБанков (в интерфейсе он обычно называется Классификатор БИК) установлены жесткие правила уникальности. Комбинация БИК (поле Код) и КоррСчет должна быть строго уникальной. Если в вашей базе накопились записи с одинаковым БИК и одинаковым (или пустым) корр. счетом, механизм выгрузки выдаст ошибку.

Рассмотрим, почему стандартная обработка «Поиск и удаление дублей» не помогает. Дело в том, что КлассификаторБанков часто скрыт из общего списка объектов метаданных в настройках обработки. Кроме того, пользователи часто путают справочник Банки и справочник КлассификаторБанков. Важно понимать, что это разные объекты: в первом хранятся банки, с которыми вы работаете, а во втором — общий государственный реестр БИК.

Способ 1. Поиск и открытие справочника через навигационную ссылку

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

  1. Запустите программу в режиме 1С:Предприятие.
  2. Нажмите комбинацию клавиш Shift+F11 (или перейдите в «Сервис и настройки» — «Перейти по ссылке»).
  3. В появившемся окне вставьте следующую строку: e1cib/list/Справочник.КлассификаторБанков.
  4. Нажмите «Перейти». Перед вами откроется список Классификатор БИК.

Теперь мы можем визуально оценить наличие дублей. Посмотрите на колонки БИК и Корр. счет. Если вы видите абсолютно идентичные строки, значит, причина ошибки найдена.

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

Если записей в классификаторе тысячи, искать дубли вручную неэффективно. Разберем, как с помощью консоли запросов быстро выявить проблемные записи. Нам нужно сгруппировать данные по полям Код и КоррСчет и вывести только те, где количество записей больше одной.

Рассмотрим пример запроса, который поможет нам локализовать проблему:


ВЫБРАТЬ
    Классификатор.Код КАК БИК,
    Классификатор.КоррСчет КАК КоррСчет,
    КОЛИЧЕСТВО(Классификатор.Ссылка) КАК КоличествоЗаписей
ИЗ
    Справочник.КлассификаторБанков КАК Классификатор
СГРУППИРОВАТЬ ПО
    Классификатор.Код,
    Классификатор.КоррСчет
ИМЕЮЩИЕ
    КОЛИЧЕСТВО(Классификатор.Ссылка) > 1

Результат этого запроса покажет вам конкретные значения БИК и корр. счетов, которые дублируются. Особое внимание уделите записям, где поле КоррСчет пустое — система 1С:Фреш может воспринимать несколько пустых значений как нарушение уникальности ключевых полей.

Способ 3. Радикальная очистка классификатора (рекомендуемый метод)

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

Проанализируем шаги по реализации этого метода:

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

Почему важно именно физическое удаление? Механизм выгрузки во Фреш часто анализирует данные даже с пометкой на удаление, если они физически присутствуют в таблицах базы данных. Поэтому просто «пометить» недостаточно — нужно стереть записи из базы. Если программа сообщит, что на какие-то элементы классификатора есть ссылки (например, из справочника Банки), оставьте их, а удалите только «мусорные» дубли, на которые ссылок нет — есть обработка для очистки базы от неиспользуемых элементов и дублей. Этого обычно достаточно для прохождения контроля уникальности.

Способ 4. Проверка на невидимые символы и пробелы

Иногда визуально записи кажутся одинаковыми, но запрос на дубли их не показывает. Проанализируем ситуацию: в поле Код (БИК) могут закрасться невидимые символы, такие как неразрывные пробелы или случайные пробелы в конце строки. При формировании XML-файла для Фреша эти символы могут игнорироваться или, наоборот, вызывать конфликт типов данных.

В такой ситуации поможет программная обработка, которая «обрезает» лишние пробелы. Если вы обладаете навыками программирования, можно выполнить в консоли кода следующий фрагмент:


Выборка = Справочники.КлассификаторБанков.Выбрать();
Пока Выборка.Следующий() Цикл
    Объект = Выборка.ПолучитьОбъект();
    Если Объект.Код <> СокрЛП(Объект.Код) Тогда
        Объект.Код = СокрЛП(Объект.Код);
        Объект.Записать();
    КонецЕсли;
КонецЦикла;

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

Способ 5. Тестирование и исправление базы данных

Если вышеописанные методы не помогают, возможно, проблема кроется в нарушении логической целостности индексов самой базы данных. Рассмотрим, как это исправить через Конфигуратор:

  1. Обязательно создайте архивную копию базы!
  2. Зайдите в Конфигуратор, откройте меню «Администрирование» — «Тестирование и исправление».
  3. Установите флажки: «Реиндексация таблиц информационной базы» и «Проверка логической целостности».
  4. В поле «При наличии ссылок на несуществующие объекты» выберите «Очищать объекты» для восстановления битых ссылок.
  5. Нажмите «Выполнить».

После завершения процедуры попробуйте повторить выгрузку в 1С:Фреш. Реиндексация часто исправляет ошибки «невидимых» дублей, которые возникают из-за сбоев в работе СУБД или файловой системы.

Итоги и рекомендации

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

Следуя этим шагам, вы успешно устраните конфликт данных и завершите миграцию вашей базы в сервис 1С:Фреш.

← На главную