Как перенести данные по расчету зарплаты и кадрам из УПП 1.3 в ЗУП 3.1 штатными средствами?

Программист 1С v8.3 (Обычные формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

Рано или поздно перед любой организацией, использующей историческую конфигурацию «1С:Управление производственным предприятием» (УПП) редакции 1.3, встает вопрос перехода на современное решение для ведения кадрового учета и расчета заработной платы — «1С:Зарплата и управление персоналом» (ЗУП) редакции 3.1. Ситуация усложняется, если в УПП велся исключительно зарплатный блок, а сама база давно не обновлялась и снята с поддержки.

Напрямую перенести данные из УПП 1.3 в ЗУП 3.1 штатными средствами «из коробки» невозможно, так как фирма «1С» не выпускала прямых правил перехода для этой связки. Однако подсистема расчета зарплаты и кадрового учета в УПП 1.3 практически на 99% идентична старой конфигурации ЗУП 2.5. Это открывает перед нами возможность использовать штатные инструменты перехода с ЗУП 2.5 на ЗУП 3.1. В этой статье мы подробно разберем по шагам, как обмануть систему и выполнить миграцию данных с минимальными трудозатратами.

Определяем стратегию перехода: «Полный» перенос или «Остатками»?

Перед началом технических манипуляций нам необходимо определиться, какой объем данных мы будем переносить. В штатном помощнике перехода ЗУП 3.1 доступны два варианта:

  1. Рекомендованный перенос (остатками). При этом варианте переносится минимально необходимый объем информации для продолжения ведения учета. Кадровая история сворачивается на дату начала эксплуатации в документ Начальная штатная расстановка. Сведения для расчета среднего заработка переносятся за последние 3 года для пособий ФСС и за 15 месяцев для отпусков. Это самый безопасный и стабильный вариант, который минимизирует количество ошибок при переносе.
  2. Полный перенос данных (с историей). В этом случае система пытается перенести всю кадровую историю, документы начислений и выплат за указанный период (например, за последние 5 лет). Мы крайне не рекомендуем использовать этот вариант для баз с большим объемом данных или сложным учетом. Из-за принципиального различия в архитектуре регистров и методологии учета между ЗУП 2.5 (УПП 1.3) и ЗУП 3.1 такой перенос почти гарантированно приведет к критическим ошибкам и расхождениям в сальдо взаиморасчетов, НДФЛ и страховых взносах.

Для нашей задачи оптимальным выбором будет рекомендованный перенос остатками на начало года или квартала.

---

Способ 1. Обман помощника перехода через «подмену» релиза в копии УПП

Этот способ является самым быстрым и не требует глубокого программирования. Идея заключается в том, чтобы временно превратить нашу базу УПП 1.3 в ЗУП 2.5 в глазах конфигурации-приемника.

Важно: Все действия мы выполняем исключительно на копии базы данных УПП 1.3!

Рассмотрим пошаговый алгоритм настройки нашей копии:

Шаг 1. Изменение номера версии конфигурации

Запустим копию базы УПП 1.3 в режиме Конфигуратор. Откроем свойства конфигурации (правый клик по корневому элементу дерева метаданных — «Свойства»). Нам необходимо изменить значение свойства Версия.

Вместо текущего номера релиза УПП (например, 1.3.150.1) введем актуальный номер релиза ЗУП 2.5 (например, 2.5.130.2 или выше). Это необходимо для того, чтобы штатный помощник перехода в ЗУП 3.1 прошел проверку на минимально допустимый релиз источника.

Шаг 2. Адаптация структуры метаданных

В ЗУП 2.5 и УПП 1.3 есть небольшие различия в именах ключевых регистров и реквизитов. Если их не скорректировать, выгрузка завершится ошибкой. Проанализируем основные нестыковки и устраним их:

  1. Регистр учетной политики. В УПП 1.3 настройки налогового учета хранятся в регистре сведений УчетнаяПолитикаОрганизаций. В ЗУП 2.5 этот регистр называется УчетнаяПолитикаНалоговыйУчет. Нам необходимо переименовать этот регистр в нашей копии УПП в конфигураторе, либо перелить данные из одного в другой, предварительно создав пустой регистр с нужным именем.
  2. Реквизит подразделений для судов под флагом РФ. В новых релизах ЗУП 3.1 правила обмена ожидают найти в справочнике ПодразделенияОрганизаций реквизит СоответствуетСудамПодФлагомРФ (тип Булево). В УПП этого реквизита нет. Добавим его вручную в справочник ПодразделенияОрганизаций в конфигураторе копии УПП.

После внесения изменений выполним обновление конфигурации базы данных (клавиша F7).

Шаг 3. Запуск переноса в ЗУП 3.1

Теперь откроем нашу чистую базу ЗУП 3.1 в режиме «Предприятие».

  1. При первом запуске откроется окно начальной настройки. Если база уже открывалась, перейдем в меню «Администрирование» — «Перенос данных из предыдущих программ» (или найдем через «Функции для технического специалиста» обработку ПомощникПереходаСДругихКонфигураций).
  2. В открывшемся окне выберем вариант переноса: «1С:Зарплата и управление персоналом 8, редакция 2.5».
  3. Укажем способ подключения: «Подключиться к базе напрямую (через COM-соединение)» или «Выгрузить данные в файл». При прямом подключении укажем путь к нашей измененной копии УПП, имя пользователя и пароль.
  4. Запустим процесс переноса и дождемся его завершения.

---

Способ 2. Модификация внешнего помощника выгрузки

Если мы не хотим вносить изменения в структуру метаданных УПП (даже в копии), мы можем пойти другим путем — выгрузить штатную обработку перехода из ЗУП 3.1 и немного доработать ее код под структуру УПП 1.3.

Разберем этот процесс детально:

Шаг 1. Получение обработки выгрузки

В базе ЗУП 3.1 откроем обработку ПомощникПереходаСДругихКонфигураций. Выберем вариант выгрузки через файл и нажмем кнопку «Получить помощник выгрузки». Программа предложит сохранить файл ПомощникВыгрузки_V8.epf на диск. Сохраним его.

Шаг 2. Модификация кода обработки в конфигураторе

Откроем сохраненный файл ПомощникВыгрузки_V8.epf в Конфигураторе. Нам нужно внести несколько изменений в модули обработки.

Выясним причину проверки версии конфигурации. В модуле формы найдем процедуру проверки релиза (обычно это процедура перед выгрузкой данных) и закомментируем блок, который сравнивает имя конфигурации источника. Мы должны позволить обработке запускаться в конфигурации «УправлениеПроизводственнымПредприятием».

Пример кода, который необходимо скорректировать или закомментировать:


// Если Метаданные.Имя <> "ЗарплатаИУправлениеПерсоналом" Тогда
//     Предупреждение("Данная обработка предназначена только для выгрузки из ЗУП 2.5!");
//     Возврат;
// КонецЕсли;

Далее исправим запрос к регистру учетной политики. Найдем в модуле обработки функцию или процедуру Организации_Выгрузка (или аналогичную, где формируется запрос к учетной политике). Заменим обращение к таблице регистра:


// Было в коде обработки для ЗУП 2.5:
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.УчетнаяПолитикаНалоговыйУчет КАК УчетнаяПолитика";

// Меняем на имя регистра из УПП 1.3:
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитика";

Шаг 3. Исправление известного бага с фактическими отпусками

В штатных правилах выгрузки прошлых версий присутствует досадный баг: при выгрузке фактических отпусков сотрудников данные могут не сопоставиться, из-за чего в ЗУП 3.1 переносятся пустые документы отпусков, ломая остатки дней отпуска. Предотвратим эту проблему.

В коде обработки выгрузки найдем строчку, формирующую структуру выгрузки фактических отпусков:

НовыйДокумент.Вставить("ФактическиеОтпускаОрганизаций", ФактическиеОтпуска);

Заменим ее на корректное имя реквизита, которое ожидает ЗУП 3.1:

НовыйДокумент.Вставить("ФактическиеОтпуска", ФактическиеОтпуска);

Сохраним обработку. Теперь мы можем запустить ее в режиме «1С:Предприятие» непосредственно в нашей рабочей или копийной базе УПП 1.3. Обработка сформирует XML-файл с данными, который мы затем загрузим в ЗУП 3.1 через тот же помощник перехода (выбрав пункт «Загрузить данные из файла»).

---

Решение проблемы слияния баз и дублей подразделений

Часто возникает ситуация (как и описывал автор темы на форуме), когда помимо переноса из УПП 1.3 необходимо объединить сотрудников и подразделения с уже существующей базой ЗУП (или перенести еще одну группу подразделений из другой базы ЗУП 2.5). При этом важно не допустить хаоса в справочниках и задвоения информации.

Проанализируем оптимальный подход к решению этой задачи:

  1. Перенос в чистую базу по отдельности. Не пытайтесь сразу сливать все потоки данных в одну рабочую базу ЗУП 3.1. Лучше всего создать временную чистую базу ЗУП 3.1, перенести туда данные из УПП 1.3 одним из описанных выше способов. Затем во вторую временную базу ЗУП 3.1 перенести данные из ЗУП 2.5.
  2. Назначение префиксов. Перед объединением баз настройте уникальные префиксы номеров документов и кодов справочников для каждой организации и информационной базы. Это предотвратит коллизии при слиянии элементов.
  3. Объединение баз. Перенесите данные из временных баз в финальную рабочую базу ЗУП 3.1 (например, с помощью универсальной выгрузки/загрузки XML или планов обмена).
  4. Поиск и удаление дублей. После объединения у вас неизбежно появятся дублирующиеся физические лица, организации или подразделения. Воспользуемся штатной обработкой «Поиск и deletion дублей» (меню «Администрирование» — «Обслуживание» — «Корректировка данных»).

Обратите особое внимание на справочник Физические лица. Объединяйте дубликаты именно в нем. Справочник Сотрудники при этом трогать не нужно — у одного физического лица может быть несколько элементов сотрудников (например, в случае внутреннего или внешнего совместительства).

Для подразделений настройте правила слияния в обработке поиска дублей так, чтобы подразделения с одинаковыми наименованиями и родителями схлопнулись в один элемент, перенеся на него все ссылки из кадровых документов.

---

Резюме

Переход с УПП 1.3 на ЗУП 3.1 без покупки сторонних правил обмена вполне реален и выполняется силами одного штатного программиста. Мы рассмотрели два основных пути: изменение конфигурации копии базы-источника и модификацию внешней обработки выгрузки. Выбирайте тот метод, который кажется вам наиболее удобным и безопасным для вашей инфраструктуры. Помните о важности сверки остатков отпусков, взаиморасчетов и среднего заработка сразу после завершения процедуры загрузки данных!

← На главную