Перенос информационной базы в облачный сервис 1С:Фреш — это процесс, требующий высокой чистоты данных. Одной из часто встречающихся проблем является прерывание выгрузки с ошибкой: «У некоторых объектов Справочник.КлассификаторБанков: дублируются поля: Код КоррСчет». Эта ситуация осложняется тем, что стандартные средства поиска дублей часто не видят этот справочник, так как он является системным — поможет продвинутая обработка поиска и удаления дублей по любым реквизитам. В данной статье мы разберем причины возникновения этой ошибки и изучим несколько эффективных способов ее решения.
Проанализируем ситуацию: при выгрузке данных для облака программа формирует специальный файл (через XDTO-пакеты). Для справочника КлассификаторБанков (в интерфейсе он обычно называется Классификатор БИК) установлены жесткие правила уникальности. Комбинация БИК (поле Код) и КоррСчет должна быть строго уникальной. Если в вашей базе накопились записи с одинаковым БИК и одинаковым (или пустым) корр. счетом, механизм выгрузки выдаст ошибку.
Рассмотрим, почему стандартная обработка «Поиск и удаление дублей» не помогает. Дело в том, что КлассификаторБанков часто скрыт из общего списка объектов метаданных в настройках обработки. Кроме того, пользователи часто путают справочник Банки и справочник КлассификаторБанков. Важно понимать, что это разные объекты: в первом хранятся банки, с которыми вы работаете, а во втором — общий государственный реестр БИК.
Прежде чем исправлять данные, нам нужно «увидеть» проблемный справочник. Если вы не можете найти его в меню, воспользуемся механизмом перехода по ссылке. Выясним, как это сделать:
e1cib/list/Справочник.КлассификаторБанков.Теперь мы можем визуально оценить наличие дублей. Посмотрите на колонки БИК и Корр. счет. Если вы видите абсолютно идентичные строки, значит, причина ошибки найдена.
Если записей в классификаторе тысячи, искать дубли вручную неэффективно. Разберем, как с помощью консоли запросов быстро выявить проблемные записи. Нам нужно сгруппировать данные по полям Код и КоррСчет и вывести только те, где количество записей больше одной.
Рассмотрим пример запроса, который поможет нам локализовать проблему:
ВЫБРАТЬ
Классификатор.Код КАК БИК,
Классификатор.КоррСчет КАК КоррСчет,
КОЛИЧЕСТВО(Классификатор.Ссылка) КАК КоличествоЗаписей
ИЗ
Справочник.КлассификаторБанков КАК Классификатор
СГРУППИРОВАТЬ ПО
Классификатор.Код,
Классификатор.КоррСчет
ИМЕЮЩИЕ
КОЛИЧЕСТВО(Классификатор.Ссылка) > 1
Результат этого запроса покажет вам конкретные значения БИК и корр. счетов, которые дублируются. Особое внимание уделите записям, где поле КоррСчет пустое — система 1С:Фреш может воспринимать несколько пустых значений как нарушение уникальности ключевых полей.
Выясним важную деталь: при переходе в 1С:Фреш вам нет необходимости переносить весь локальный классификатор банков. В облачном сервисе этот справочник уже заполнен актуальными данными и обновляется автоматически. Поэтому самым простым и надежным решением будет полная или частичная очистка справочника в вашей локальной базе перед выгрузкой.
Проанализируем шаги по реализации этого метода:
Классификатор банков.Пометка удаления, установите значение Да и нажмите «Изменить реквизиты».Почему важно именно физическое удаление? Механизм выгрузки во Фреш часто анализирует данные даже с пометкой на удаление, если они физически присутствуют в таблицах базы данных. Поэтому просто «пометить» недостаточно — нужно стереть записи из базы. Если программа сообщит, что на какие-то элементы классификатора есть ссылки (например, из справочника Банки), оставьте их, а удалите только «мусорные» дубли, на которые ссылок нет — есть обработка для очистки базы от неиспользуемых элементов и дублей. Этого обычно достаточно для прохождения контроля уникальности.
Иногда визуально записи кажутся одинаковыми, но запрос на дубли их не показывает. Проанализируем ситуацию: в поле Код (БИК) могут закрасться невидимые символы, такие как неразрывные пробелы или случайные пробелы в конце строки. При формировании XML-файла для Фреша эти символы могут игнорироваться или, наоборот, вызывать конфликт типов данных.
В такой ситуации поможет программная обработка, которая «обрезает» лишние пробелы. Если вы обладаете навыками программирования, можно выполнить в консоли кода следующий фрагмент:
Выборка = Справочники.КлассификаторБанков.Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.ПолучитьОбъект();
Если Объект.Код <> СокрЛП(Объект.Код) Тогда
Объект.Код = СокрЛП(Объект.Код);
Объект.Записать();
КонецЕсли;
КонецЦикла;
Этот код нормализует поле Код, убирая лишние пробелы, что может привести к тому, что дубли станут явными и их можно будет удалить штатными средствами.
Если вышеописанные методы не помогают, возможно, проблема кроется в нарушении логической целостности индексов самой базы данных. Рассмотрим, как это исправить через Конфигуратор:
После завершения процедуры попробуйте повторить выгрузку в 1С:Фреш. Реиндексация часто исправляет ошибки «невидимых» дублей, которые возникают из-за сбоев в работе СУБД или файловой системы.
Подводя итоги нашей совместной работы, отметим, что наиболее эффективным решением при ошибке дублей в КлассификаторБанков является физическое удаление лишних записей. Помните:
Следуя этим шагам, вы успешно устраните конфликт данных и завершите миграцию вашей базы в сервис 1С:Фреш.