При попытке обновить конфигурацию 1С:Зарплата и Управление Персоналом с редакции 2.5 на редакцию 3.0 или 3.1 стандартным накатыванием файла конфигурации через режим «Конфигуратор» администраторы и разработчики часто сталкиваются с критическими ошибками реструктуризации базы данных. Наиболее распространенное сообщение об ошибке указывает на нарушение уникальности записей в регистре сведений, например, ВоинскийУчет.
Разберем детально, почему прямое обновление невозможно с технической точки зрения, почему платформа выдает ошибку контроля уникальности и как выглядит правильный регламент перехода между редакциями.
Рассмотрим, что происходит внутри СУБД и платформы «1С:Предприятие», когда выполняется попытка прямого наката конфигурации .cf редакции 3.x на базу редакции 2.5:
UUID. Поскольку UUID измерений старого регистра в ЗУП 2.5 и нового регистра в ЗУП 3.x не совпадают, платформа интерпретирует это как удаление старых измерений и добавление абсолютно новых. В результате реструктуризации новые измерения во всех существующих строках заполняются значениями по умолчанию (пустыми ссылками). Это приводит к тому, что все строки регистра получают одинаковый ключ, вызывая блокирующую ошибку СУБД Duplicate key.Период + Измерения. В редакции 3.x изменилась модель хранения данных — регистры стали непериодическими либо сменили состав измерений. При удалении периодичности поле Период исключается из первичного ключа. Если по одному физическому лицу в базе существовало несколько записей за разные даты, все они претендуют на одну и ту же комбинацию измерений, что делает реструктуризацию невозможной.Проанализируем работу механизма реструктуризации таблиц. Во время применения изменений конфигурации платформа создает во временных таблицах СУБД новую структуру, копирует в нее данные и накладывает уникальные индексы. Платформа не обладает логикой прикладного разрешения коллизий — она не может автоматически выбрать последнюю актуальную запись или очистить дубли. Любое нарушение уникальности ключа таблицы немедленно прерывает транзакцию обновления информационной базы с откатом всех изменений.
Иногда конфигуратор в списке доступных обновлений может отобразить переход на релиз 3.x поверх 2.5. Выясним причину такого поведения. Поиск доступных обновлений опирается на файлы манифестов v8upd.manifest в каталогах шаблонов на диске и строковое сопоставление имени конфигурации. Наличие в общих шаблонах файлов смежных конфигураций или пакетов переходов может приводить к ошибочному отображению несовместимой версии в мастере поиска.
Важно понимать: дистрибутивов прямого обновления (.cfu) с редакции 2.5 на редакции 3.0 и 3.1 фирмы «1С» не существует. Любая попытка объединить конфигурации или накатить файл .cf приведет к разрушению структуры данных.
Переход между принципиально разными редакциями осуществляется исключительно через перенос данных в новую, чистую информационную базу ЗУП 3.x. Разберем правильный порядок действий по шагам:
ПереносДанных, заполняющих регистры накопления и расчета напрямую. Этот вариант требует значительных трудозатрат на последующую сверку итогов.