Перевод зарплатного и кадрового учета из устаревшей конфигурации 1С:Управление производственным предприятием, редакция 1.3 (УПП) в современную программу 1С:Зарплата и управление персоналом, редакция 3.1 (ЗУП) — это частая и трудоемкая задача. Прямого типового правила обмена «из коробки» для этих конфигураций фирма «1С» не предоставляет. Однако, поскольку подсистема расчета зарплаты и кадрового учета в УПП 1.3 структурно практически полностью совпадает с конфигурацией 1С:ЗУП 2.5, мы можем использовать этот фактор для успешного переноса.
В этой статье мы подробно разберем, как адаптировать типовой помощник перехода «ЗУП 2.5 – ЗУП 3.1» для выгрузки данных из УПП 1.3, проанализируем основные ошибки компиляции и структуры данных, а также рассмотрим альтернативные и более безопасные сценарии миграции.
Прежде чем приступить к технической реализации, определим ключевое методологическое ограничение. Описанный ниже метод предназначен исключительно для разового переноса данных при переходе на новую систему учета. Попытка использовать этот алгоритм для регулярного (например, ежемесячного) обмена данными бессмысленна. Правила переноса загружают информацию в специализированные документы ПереносДанных в ЗУП 3.1, которые напрямую делают движения по регистрам расчета и накопления, минуя стандартные документы начислений. Для регулярной интеграции (например, для выгрузки проводок) необходимо использовать штатный механизм «Отражение зарплаты в финансовом учете».
---
Для начала нам понадобится сама обработка выгрузки, которая поставляется вместе с релизами ЗУП 3.1. Выполним следующие действия:
ПомощникПереходаСПрежнихПрограммЗарплатаКадры (в некоторых интерфейсах она доступна через меню «Перенос данных из прежних программ»).ПомощникВыгрузки.epf).---
Если попытаться запустить сохраненную обработку в УПП 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). В этом случае обработка запустится без модификации кода, однако этот метод менее гибок при регулярном тестировании.
---
Поскольку УПП 1.3 и ЗУП 2.5 — это все же разные конфигурации, при выгрузке вы неизбежно столкнетесь с ошибками отсутствия некоторых общих модулей или реквизитов. Разберем наиболее частые ошибки компиляции на сервере и методы их устранения в коде обработки:
ОбщегоНазначенияЗКВ процессе работы обработка может аварийно завершиться с ошибкой вида: «Переменная не определена (ОбщегоНазначенияЗК)». В УПП 1.3 этого общего модуля просто нет.
Для решения этой проблемы найдем в модуле обработки все вызовы методов этого модуля и заменим их на аналогичные из общего модуля УПП. Например, вызов:
ОбщегоНазначенияЗК.РазложитьСтрокуВМассивПодстрок(ТекстСообщения, Символы.ПС)
Заменяем на стандартную функцию УПП:
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ТекстСообщения, Символы.ПС)
Аналогично поступим с функцией распределения сумм. Если в коде встречается вызов:
ОбщегоНазначенияЗК.РаспределитьПропорционально(СтрокаТЗ.Сумма, Коэффициенты)
Необходимо переписать этот вызов, используя функции распределения из общего модуля УПП 1.3 или реализовав простейший алгоритм распределения остатка прямо в теле обработки.
При выгрузке справочника подразделений может возникнуть ошибка: «Поле не найдено ПодразделенияОрганизаций.СоответствуетСудамПодФлагомРФ».
Дело в том, что в УПП 1.3 этот реквизит имеет префикс удаления. Найдем автозаменой в модуле обработки текст СоответствуетСудамПодФлагомРФ и заменим его на УдалитьСоответствуетСудамПодФлагомРФ.
В текстах запросов выгрузки может присутствовать обращение к регистру УчетнаяПолитикаНалоговыйУчет, структура которого в УПП отличается.
Необходимо в запросах обработки заменить имя этого регистра на УчетнаяПолитикаОрганизаций и проверить сопоставление выбираемых полей (в первую очередь, касающихся систем налогообложения и ставок страховых взносов).
---
После успешной выгрузки данных из УПП в XML-файл, при попытке загрузить его в ЗУП 3.1, вы можете столкнуться со следующей ошибкой:
Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': Ошибка при вызове метода контекста (Вставить): Задано неправильное имя атрибута структуры.
Проанализируем причину этой ошибки. При переносе планов видов расчета (Начисления и Удержания) ЗУП 3.1 генерирует для каждого элемента уникальный строковый Идентификатор, который в дальнейшем используется в формулах расчета зарплаты. К этому идентификатору предъявляются жесткие требования платформы: он должен соответствовать правилам именования переменных в языке 1С (не может начинаться с цифры, содержать пробелы, знаки препинания или спецсимволы).
Если в вашей базе УПП 1.3 есть начисления с именами вроде «110 Оплата ученикам», «0,25 ставки» или «Праздничные (ночные)», алгоритм переноса попытается создать из них идентификаторы, содержащие недопустимые символы. При попытке записать такой элемент общий модуль РасчетЗарплатыРасширенный вызывает метод структуры Вставить(), передавая некорректный идентификатор в качестве ключа, что и приводит к фатальному сбою.
Как решить эту проблему?
---
Если ручная модификация программного кода Помощника выгрузки кажется вам слишком сложной или база УПП имеет сильные кастомизации, мы рекомендуем воспользоваться проверенным двухэтапным методом. Этот путь минимизирует риски возникновения программных ошибок совместимости.
Рассмотрим этот процесс по шагам:
УниверсальныйОбменДаннымиXML и типовых правил обмена, которые можно найти в каталоге шаблонов обновлений.Выбор конкретного метода зависит от квалификации разработчика и объема переносимой информации, однако оба рассмотренных варианта при правильном подходе позволяют полностью перенести историю кадрового учета и расчетов для успешного старта работы в 1С:ЗУП 3.1.