Как выполнить перенос данных из 1С:УПП 1.3 в 1С:ЗУП 3.1?

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

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

В этой статье мы подробно разберем, как адаптировать типовой помощник перехода «ЗУП 2.5 – ЗУП 3.1» для выгрузки данных из УПП 1.3, проанализируем основные ошибки компиляции и структуры данных, а также рассмотрим альтернативные и более безопасные сценарии миграции.

Важное предупреждение: разовый перенос vs регулярный обмен

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

---

Шаг 1. Получение типового помощника выгрузки из ЗУП 3.1

Для начала нам понадобится сама обработка выгрузки, которая поставляется вместе с релизами ЗУП 3.1. Выполним следующие действия:

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

---

Шаг 2. Адаптация кода помощника под конфигурацию УПП 1.3

Если попытаться запустить сохраненную обработку в УПП 1.3 без изменений, система выдаст ошибку несоответствия конфигураций или версий. Нам необходимо скорректировать код обработки в конфигураторе.

Откроем сохраненный файл ПомощникВыгрузки.epf в Конфигураторе и перейдем в модуль объекта. Нам нужно внести изменения в функцию, которая проверяет версию конфигурации-источника.

Найдем функцию ВерсииПравил(). По умолчанию там прописаны только версии ЗУП 2.5. Нам необходимо добавить туда текущую версию нашей базы УПП 1.3. Рассмотрим пример изменения кода:


Функция ВерсииПравил() Экспорт
    
    ВерсииПравил = Новый Структура;
    
    // Комментируем или удаляем проверку строго на ЗУП 2.5
    // ВерсииПравил.Вставить(мЗУП, "2.5.130.2"); 
    
    // Добавляем версию нашей конфигурации УПП 1.3
    ВерсииПравил.Вставить(мЗУП, "1.3.116.1"); // Укажите здесь точный номер релиза вашей УПП 1.3
    
    Возврат ВерсииПравил;
    
КонецФункции

Альтернативный лайфхак: Если вы не хотите вносить изменения в код обработки, можно сделать резервную копию базы УПП 1.3, зайти в Конфигуратор этой копии и в свойствах конфигурации временно изменить версию с 1.3.xxx.x на совместимую версию ЗУП (например, 2.5.130.2). В этом случае обработка запустится без модификации кода, однако этот метод менее гибок при регулярном тестировании.

---

Шаг 3. Исправление ошибок совместимости метаданных в УПП 1.3

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

1. Ошибка обращения к модулю ОбщегоНазначенияЗК

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

Для решения этой проблемы найдем в модуле обработки все вызовы методов этого модуля и заменим их на аналогичные из общего модуля УПП. Например, вызов:

ОбщегоНазначенияЗК.РазложитьСтрокуВМассивПодстрок(ТекстСообщения, Символы.ПС)

Заменяем на стандартную функцию УПП:

ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТекстСообщения, Символы.ПС)

Аналогично поступим с функцией распределения сумм. Если в коде встречается вызов:

ОбщегоНазначенияЗК.РаспределитьПропорционально(СтрокаТЗ.Сумма, Коэффициенты)

Необходимо переписать этот вызов, используя функции распределения из общего модуля УПП 1.3 или реализовав простейший алгоритм распределения остатка прямо в теле обработки.

2. Ошибка с реквизитом судов под флагом РФ

При выгрузке справочника подразделений может возникнуть ошибка: «Поле не найдено ПодразделенияОрганизаций.СоответствуетСудамПодФлагомРФ».

Дело в том, что в УПП 1.3 этот реквизит имеет префикс удаления. Найдем автозаменой в модуле обработки текст СоответствуетСудамПодФлагомРФ и заменим его на УдалитьСоответствуетСудамПодФлагомРФ.

3. Ошибка обращения к регистру УчетнаяПолитикаНалоговыйУчет

В текстах запросов выгрузки может присутствовать обращение к регистру УчетнаяПолитикаНалоговыйУчет, структура которого в УПП отличается.

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

---

Шаг 4. Устранение критической ошибки загрузки «Задано неправильное имя атрибута структуры»

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

Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': Ошибка при вызове метода контекста (Вставить): Задано неправильное имя атрибута структуры.

Проанализируем причину этой ошибки. При переносе планов видов расчета (Начисления и Удержания) ЗУП 3.1 генерирует для каждого элемента уникальный строковый Идентификатор, который в дальнейшем используется в формулах расчета зарплаты. К этому идентификатору предъявляются жесткие требования платформы: он должен соответствовать правилам именования переменных в языке 1С (не может начинаться с цифры, содержать пробелы, знаки препинания или спецсимволы).

Если в вашей базе УПП 1.3 есть начисления с именами вроде «110 Оплата ученикам», «0,25 ставки» или «Праздничные (ночные)», алгоритм переноса попытается создать из них идентификаторы, содержащие недопустимые символы. При попытке записать такой элемент общий модуль РасчетЗарплатыРасширенный вызывает метод структуры Вставить(), передавая некорректный идентификатор в качестве ключа, что и приводит к фатальному сбою.

Как решить эту проблему?

  1. Очистка данных в базе-источнике (УПП): Самый надежный способ. Перед выгрузкой переименуйте все виды расчетов, названия которых начинаются с цифр или содержат спецсимволы. Вместо «110 Оплата ученикам» напишите «Оплата ученикам (код 110)». Уберите лишние точки, скобки и дефисы из названий начислений и удержаний.
  2. Прямое редактирование XML-файла выгрузки: Если изменять наименования в рабочей базе УПП нельзя, откройте выгруженный XML-файл в текстовом редакторе (например, Notepad++), найдите узел с проблемным начислением и вручную скорректируйте его наименование и связанный с ним тег идентификатора на латиницу или корректный текст без спецсимволов.

---

Альтернативный двухэтапный сценарий переноса (УПП -> ЗУП 2.5 -> ЗУП 3.1)

Если ручная модификация программного кода Помощника выгрузки кажется вам слишком сложной или база УПП имеет сильные кастомизации, мы рекомендуем воспользоваться проверенным двухэтапным методом. Этот путь минимизирует риски возникновения программных ошибок совместимости.

Рассмотрим этот процесс по шагам:

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

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

← На главную