В процессе администрирования и сопровождения систем на платформе 1С:Предприятие специалисты часто сталкиваются с необходимостью возврата измененной или просто «снятой с замка» конфигурации к исходному типовому виду. Этот процесс называется возвратом конфигурации на поддержку (или, на сленге разработчиков, «установкой на замок»).
Казалось бы, процедура стандартная, однако на практике она нередко сопровождается техническими сложностями и критическими ошибками СУБД. В рамках этой статьи мы подробно разберем, как правильно и безопасно вернуть конфигурацию в полностью типовое состояние, а также детально проанализируем причины возникновения и способы устранения популярной ошибки реструктуризации: «Записи регистра сведений стали неуникальными».
Когда в настройках поддержки включена возможность изменения, база данных переходит в режим частичного или полного редактирования. Даже если физически в код и объекты метаданных не вносилось никаких изменений, сам факт «снятого замка» накладывает ряд ограничений и неудобств:
Если система абсолютно типовая, лучшим решением будет вернуть ее в исходное состояние поставщика. Разберем рабочие методологии решения этой задачи.
---
Рассмотрим по шагам основные варианты решения задачи в зависимости от текущего состояния вашей информационной базы.
Этот способ является самым простым и быстрым, если в базе данных гарантированно нет пользовательских доработок кода или метаданных, которые вам необходимо сохранить. Нам потребуется файл конфигурации поставщика 1cv8.cf именно той версии (релиза), которая сейчас установлена у вас.
Выполним следующие шаги:
.dt).1cv8.cf.1cv8.cf вашей версии и подтвердите загрузку.После этого значок корневого элемента конфигурации снова станет закрытым (появится желтый кубик с замочком), а автоматическое обновление станет доступно в один клик.
Иногда прямая загрузка файла .cf может вызывать сбои или ошибки реструктуризации СУБД. Существует более «мягкий» и контролируемый способ, который заставляет платформу заново пересчитать все связи метаданных.
Инструкция по шагам:
1cv8.cf.Что делать, если возможность изменения была включена осознанно и в базе действительно есть небольшие доработки (например, добавлены пара реквизитов или изменен модуль проведения)? Если вы хотите вернуть базу «на замок», но сохранить функционал, воспользуйтесь механизмом Расширений конфигурации.
Разберем данный подход:
---
Очень часто при попытке загрузить чистый cf-файл (или при рядовом обновлении конфигурации) процесс прерывается критической ошибкой: «Записи регистра сведений стали неуникальными». Давайте проанализируем, почему это происходит и как решить проблему системно.
Данные в регистрах сведений 1С хранятся в жестком разрезе ключевых полей — Измерений. Платформа на уровне СУБД накладывает строгий индекс уникальности: в базе не может существовать двух строк, у которых совпадает абсолютно весь набор измерений.
Ошибка неуникальности при реструктуризации возникает в двух основных случаях:
ДействиеПриОбмене или Организация) либо изменили тип данных одного из ключевых полей.
Пример: В вашей текущей базе в регистре СостоянияОбменовДанными есть две записи:
[Узел_А, Действие_Выгрузка][Узел_А, Действие_Загрузка]В новой версии конфигурации поле Действие удалено из списка измерений. При попытке реструктуризации базы данных платформа пытается перенести старые записи в новую таблицу, где ключевым полем является только Узел. Платформа пытается записать две строки со значением [Узел_А]. Возникает конфликт уникальности, СУБД блокирует транзакцию, и обновление аварийно завершается.
cf напрямую, вы лишаете систему возможности запустить эти обработчики, из-за чего реструктуризация ломается «наживую».---
Выяснив причину проблемы, рассмотрим пошагово методы её локализации и исправления.
Прежде чем приступать к манипуляциям с данными, необходимо исключить логические ошибки в файловой структуре или таблицах базы данных.
chdbfl.exe (она находится в папке bin установленной платформы 1С) и проверьте файл базы данных на наличие физических повреждений.В тексте ошибки платформа всегда четко указывает имя проблемного регистра сведений (например, НастройкиТранспортаОбмена или СостоянияОбменовДанными) и значения ключевых полей, которые вызывают конфликт.
Если данные в этом регистре не являются критически важными (например, это кэш настроек обмена, логи или временные состояния), самым простым решением будет удалить конфликтующие записи:
cf.Для быстрой программной очистки всего регистра сведений (если его данные можно заполнить заново позже) вы можете запустить в режиме «Предприятие» короткий код:
НаборЗаписей = РегистрыСведений.НастройкиТранспортаОбмена.СоздатьНаборЗаписей();
// Если регистр подчинен регистратору, необходимо установить отбор по регистратору
// НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаДокумент);
НаборЗаписей.Записать(); // Запись пустого набора очищает данные в БД
Если регистр содержит важную информацию (например, историю расчетов, уникальные настройки), которую категорически нельзя терять, воспользуйтесь методом временного выгрузки данных.
Разберем алгоритм по шагам:
1cv8.cf. Поскольку регистр пуст, реструктуризация пройдет без ошибок, и новая структура таблиц успешно применится.В крупных клиент-серверных базах данных (под управлением MS SQL, PostgreSQL) иногда возникает ситуация, когда стандартные средства 1С не видят дублирующих записей из-за кэширования или повреждения внутренних индексов, но СУБД при попытке применить новый уникальный индекс (Unique Index) продолжает выдавать ошибку реструктуризации.
В таком случае системные администраторы СУБД могут решить проблему напрямую через SQL-запросы:
ПолучитьСтруктуруХраненияБазыДанных()).Важно: Данный метод является экстремальным и должен выполняться исключительно опытным администратором баз данных на предварительно созданной копии!
---
Мы детально рассмотрели процесс возврата конфигурации 1С к типовому виду «под замок». Наиболее эффективным и бесконфликтным является метод Снятия с поддержки с последующим сравнением/объединением, а также своевременный перенос всех доработок в Расширения.
Если же в процессе работы вы столкнулись с ошибкой неуникальности записей регистра, не паникуйте. Проанализируйте состав измерений регистра, очистите дубли или воспользуйтесь транзитной выгрузкой данных в XML. Эти шаги позволят вам успешно завершить процедуру обновления и гарантировать стабильную работу системы.