При обновлении конфигураций «1С:Предприятие», особенно при переходе на новые версии «Бухгалтерии предприятия 3.0» или внедрении Библиотеки стандартных подсистем (БСП), специалисты часто сталкиваются с критической ошибкой: «Ошибка при выполнении функции ОбновитьПовторноИспользуемыеЗначения. Имеются записи с одинаковыми измерениями в регистре сведений ДвоичныеДанныеФайлов». Проблема осложняется тем, что при проверке базы консолью запросов или тестированием и исправлением (ТИИ) никаких дублей не обнаруживается. Рассмотрим детально, почему это происходит и как правильно решить задачу, не потеряв данные пользователей.
Проанализируем механику работы платформы 1С. Ошибка возникает не из-за того, что в вашей базе уже есть дубли, а из-за того, что они создаются в процессе реструктуризации таблиц базы данных. В регистре ДвоичныеДанныеФайлов основным измерением является Файл. Тип этого измерения обычно установлен как ОпределяемыйТип.ПрисоединенныйФайл.
Рассмотрим ситуацию: в вашей базе были документы или справочники (например, «Договоры контрагентов»), для которых хранились присоединенные файлы. В какой-то момент при обновлении конфигурации состав Определяемого типа изменился — из него был исключен тип ссылки на справочник присоединенных файлов этих договоров. Когда платформа начинает обновлять конфигурацию базы данных, она выполняет следующие шаги:
Файл к новому описанию типов.Неопределено (пустое значение).Файл.Именно на этом этапе SQL-сервер или механизм файловой базы выдает ошибку нарушения уникальности индекса, так как в регистре сведений не может быть двух записей с идентичным набором измерений.
Перед тем как вносить изменения, нам необходимо понять, какие именно типы данных вызывают конфликт. Для этого воспользуемся консолью запросов. Проанализируем состав типов в измерении Файл, выполнив следующий запрос:
ВЫБРАТЬ
ТИПЗНАЧЕНИЯ(ТекстРегистра.Файл) КАК ТипДанных,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
РегистрСведений.ДвоичныеДанныеФайлов КАК ТекстРегистра
СГРУППИРОВАТЬ ПО
ТИПЗНАЧЕНИЯ(ТекстРегистра.Файл)
Посмотрим на результат. Если в списке типов вы видите строки с названием Неизвестный тип или ссылки вида Объект не найден, это и есть кандидаты на создание дублей — для этого подойдёт диагностика регистров на битые ссылки и повреждения. Также стоит сравнить этот список с составом объекта ОпределяемыйТип.ПрисоединенныйФайл в дереве метаданных конфигуратора. Любой тип, который есть в результате запроса, но отсутствует в определяемом типе, приведет к ошибке при обновлении.
Это самый правильный и безопасный метод, который позволяет сохранить все данные пользователей. Разберем его по шагам:
ОпределяемыйТип.ПрисоединенныйФайл....ПрисоединенныеФайлы, которые используются в вашей системе.После этого реструктуризация должна пройти успешно, так как платформа сможет корректно идентифицировать все ссылки и не превратит их в пустые значения.
Если по какой-то причине вы не хотите менять состав типов (например, вы сознательно отказываетесь от хранения старых файлов), можно воспользоваться «обходным» путем. Однако помните: этот метод может привести к потере данных.
Рассмотрим алгоритм действий:
ВыгрузкаЗагрузкаДанныхXML.epf — поможет универсальная обработка выгрузки и загрузки XML.ДвоичныеДанныеФайлов в файл.Важное замечание: При загрузке те записи, типы которых отсутствуют в новой конфигурации, либо не загрузятся вовсе, либо загрузятся некорректно. Проанализируем последствия: пользователи увидят записи в списках файлов, но при попытке их открыть система выдаст ошибку «Файл не найден».
Иногда при попытке выгрузить данные регистра ДвоичныеДанныеФайлов возникает ошибка: «Значение данного типа невозможно преобразовать для передачи как файл». Это связано с тем, что регистр хранит бинарные данные (сами файлы), которые могут занимать гигабайты памяти.
Чтобы избежать этой ошибки, выполним следующие рекомендации:
rphost достаточно оперативной памяти для сериализации больших двоичных объектов в формат XML.Проанализируем ситуацию перехода между редакциями. В версии 2.0 файлы могли храниться в нетиповых механизмах. При переходе на 3.0 внедряется БСП, и данные переезжают в новый регистр. Если в процессе переноса или последующего дообновления конфигурации поставщика вы теряете связь с объектами-владельцами, ошибка дублей неизбежна.
Проверьте, не изменяли ли вы ОпределяемыйТип.ВладелецПрисоединенныхФайлов. Часто ошибка в ДвоичныеДанныеФайлов является лишь следствием того, что «отвалился» тип у владельца файла. Если в системе остались записи файлов, чьи владельцы больше не поддерживают хранение файлов, реструктуризация будет спотыкаться об эти «осиротевшие» записи. Для этой задачи есть инструменты очистки базы и исправления битых движений.
Подводя итог, можно сказать, что ошибка «Имеются записи с одинаковыми измерениями» — это защитный механизм платформы, предотвращающий потерю уникальности данных при некорректном изменении метаданных. Чтобы избежать подобных проблем в будущем:
Используя данные методы, мы обеспечим стабильную работу системы и сохраним целостность важной информации пользователей.