Переход с редакции 2.5 на 3.1 конфигурации «Зарплата и управление персоналом» — это масштабный процесс, который часто сопровождается техническими сложностями. Одной из специфических проблем является прерывание процесса обновления или первого запуска базы с ошибкой уникальности кодов в справочнике УченыеЗвания. В данной статье мы разберем, почему возникает эта ситуация, как правильно подготовить данные и какой метод перехода является единственно верным с точки зрения методологии 1С.
Рассмотрим текст ошибки, представленный в логах системы. Проблема возникает в момент выполнения обработчика НачальноеЗаполнение для справочника УченыеЗвания. При первом запуске обновленной конфигурации система пытается автоматически наполнить базу классификаторами, соответствующими актуальному законодательству и стандартам. Процесс выглядит следующим образом:
КадровыйУчетРасширенный.ЗаполнитьКлассификаторы().Справочники.УченыеЗвания.НачальноеЗаполнение().Ситуация осложняется тем, что автор вопроса попытался выполнить переход путем «прямого обновления» конфигурации (через сравнение и объединение или накатывание .cf файла), что является грубейшим нарушением технологии. При таком подходе структура таблиц в базе данных меняется, но старые данные (записи справочников с их внутренними идентификаторами и кодами из версии 2.5) остаются в «перемешанном» состоянии, конфликтуя с алгоритмами начального заполнения новой редакции.
Важно понимать, что ЗУП 2.5 и ЗУП 3.1 — это принципиально разные программные продукты на уровне архитектуры. В версии 2.5 использовались обычные формы, а в 3.1 — полностью управляемые формы и совершенно иная модель хранения данных (особенно в части учета НДФЛ, страховых взносов и оценочных обязательств).
Рассмотрим, почему нельзя просто «обновить» 2.5 до 3.1:
UUID (уникальные идентификаторы), что вызывает дублирование при попытке системы создать эталонные записи.Если вы столкнулись с ошибкой на этапе миграции, проанализируем состояние справочника в исходной информационной базе. Проблема с кодом «01» часто связана с тем, что в старой базе справочник УченыеЗвания заполнялся пользователями вручную, и порядок кодирования не совпадает с тем, что ожидает увидеть новая конфигурация.
Выполним следующие шаги в базе ЗУП 2.5 перед началом переноса:
УченыеЗвания.После очистки и упорядочивания справочника в версии 2.5, процедуру переноса данных следует запустить заново в чистую базу 3.1.
Разберем по шагам правильный алгоритм действий, который позволит избежать ошибок вроде «Уже существует ученое звание...» и обеспечит целостность данных.
Шаг 1: Подготовка новой базы. Создадим пустую информационную базу текущего релиза ЗУП 3.1. Не загружайте в нее никаких конфигураций, просто создайте чистую базу из шаблона или пустую базу, в которую загружен актуальный .cf файл.
Шаг 2: Запуск помощника. При первом запуске системы откроется окно начальной настройки. Выберем пункт «Перенос данных из предыдущих программ». В списке программ выберем «1С:Зарплата и управление персоналом 8, редакция 2.5».
Шаг 3: Выбор варианта переноса. Существует два основных режима:
Шаг 4: Устранение конфликтов. Если помощник выдает ошибку на этапе загрузки справочников, воспользуемся специализированными обработками для удаления дублей или исправления кодов. Рассмотрим пример программного изменения кода в исходной базе (ЗУП 2.5), если ручное изменение невозможно из-за большого объема данных:
Выборка = Справочники.УченыеЗвания.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Код = "01" Тогда
Объект = Выборка.ПолучитьОбъект();
Объект.Код = "000000001"; // Устанавливаем новый формат кода
Объект.Записать();
КонецЕсли;
КонецЦикла;
Часто пользователи пытаются «обновлять» базу напрямую, опасаясь, что при типовом переносе потеряются важные исторические данные. Разберем эту ситуацию. Типовой перенос действительно не переносит документы как объекты (Приказы о приеме, Начисления зарплаты за 2015 год и т.д.). Вместо этого он создает технические документы «Перенос данных», в которых фиксируются обороты по регистрам.
Проанализируем преимущества правильного переноса:
УченыеЗвания.Если вы видите ошибку Ошибка при выполнении обработчика - 'ПередЗаписью' по причине дублирования кода «01» в справочнике ученых званий — это сигнал о том, что выбран неправильный путь перехода.
Выясним итоговый алгоритм действий:
УченыеЗвания и устраните дублирование кодов.Помощником перехода для выгрузки данных.Помните, что попытка «обмануть» систему и пропустить запись справочника через отладчик приведет лишь к тому, что следующая ошибка возникнет на справочнике УченыеСтепени, Банки или ВидыДоходовНДФЛ. Только соблюдение методологии гарантирует корректную работу программы в будущем.