Переход с конфигурации «Зарплата и управление персоналом» (ЗУП) редакции 2.5 на современную редакцию 3.1 — это масштабная задача, с которой рано или поздно сталкивается любой специалист 1С. В процессе миграции нередко возникают технические сложности. Типичный пример — попытка обновить старую базу напрямую, что приводит к системным сбоям вроде Записи регистра сведений стали не уникальными (особенно часто это происходит в регистрах воинского учета) и блокировке интерфейса программы.
В этой статье мы подробно разберем, почему возникает эта проблема, почему нельзя использовать стандартное обновление конфигурации и как правильно выполнить перенос данных, чтобы сохранить логическую целостность базы.
Давайте проанализируем ситуацию. Конфигурация ЗУП редакции 2.5 и редакция 3.1 — это две принципиально разные системы. Они имеют абсолютно разную архитектуру хранения данных, отличные структуры метаданных и разную логику проведения расчетов. В ЗУП 2.5 использовались преимущественно обычные формы, а учет был тесно завязан на справочник СотрудникиОрганизаций. В ЗУП 3.1 архитектура базируется на управляемых формах, а ключевым разрезом учета стал справочник ФизическиеЛица.
Когда пользователь пытается «накатить» файл обновления (или cf-файл) новой конфигурации ЗУП 3.1 на базу ЗУП 2.5 через Конфигуратор, СУБД пытается сопоставить старые таблицы с новыми. Поскольку ключевые поля и индексы во многих регистрах изменились, платформа выдает критические ошибки неуникальности записей. Данные разрушаются, и база становится неработоспособной.
Важное правило: переход с ЗУП 2.5 на ЗУП 3.1 выполняется исключительно путем переноса данных (выгрузки/загрузки) в новую, абсолютно пустую информационную базу редакции 3.1.
Для того чтобы процесс миграции прошел успешно и без потери информации, мы рекомендуем придерживаться следующей последовательности действий:
<Объект не найден>).При переносе разработчики 1С предлагают два различных сценария. Давайте рассмотрим подробнее особенности каждого из них:
При этом варианте в новую базу переносится только та информация, которая необходима для продолжения ведения учета:
Преимущества: База ЗУП 3.1 получается «чистой», без старых ошибок учета и неактуального мусора. Размер базы минимален, расчеты выполняются быстро.
Недостатки: Вы не сможете построить кадровые отсчеты и анализировать начисления за прошлые годы в новой базе. Старую базу ЗУП 2.5 придется сохранить как архив для чтения.
Этот вариант предполагает перенос всей кадровой и расчетной документации за выбранный исторический период (например, за последние 2–3 года).
Преимущества: Вся история начислений и кадровых перестановок доступна в одной базе.
Недостатки: Данный метод официально признан устаревшим и не рекомендуется фирмой 1С. Из-за различий в логике расчетов перенос документов практически всегда завершается ошибками. Все некорректные действия расчетчиков из старой базы перейдут в новую, что исказит текущие расчеты.
Вернемся к ошибке автора темы: почему именно регистр сведений воинского учета выдает ошибку дублирования ключей записей? Рассмотрим ситуацию изнутри.
В ЗУП 2.5 сведения о воинском учете могли записываться с привязкой к конкретным элементам справочника СотрудникиОрганизаций. В ЗУП 3.1 этот учет ведется строго в разрезе справочника ФизическиеЛица через регистр сведений ВоинскийУчет.
Если в исходной базе ЗУП 2.5 для одного физического лица было заведено несколько карточек сотрудников (например, при увольнении и повторном приеме или при внутреннем совместительстве) и в этих карточках были введены разные, противоречащие друг другу данные о воинском билете или военкомате, то алгоритм переноса попытается записать их для одного физического лица в ЗУП 3.1. База данных MS SQL Server или файловая СУБД заблокирует транзакцию, так как уникальность по ключевому полю Физлицо будет нарушена.
Как устранить ошибку перед переносом:
Чтобы минимизировать риски при переходе на новую редакцию, мы советуем придерживаться следующих правил: