Перенос данных между идентичными конфигурациями — задача, которая кажется простой только на первый взгляд. В случае с подсистемой зарплаты и кадров в 1С:Комплексная автоматизация 2.5 (или 1С:ЗУП 3.1), простая выгрузка через XML часто приводит к дублированию строк в документах, некорректному расчету среднего заработка и ошибкам в модулях менеджера. Рассмотрим подробно, как избежать этих проблем и выполнить перенос максимально чисто.
Проанализируем доступные инструменты. Стандартная обработка "Загрузка выгрузка данных XML" хороша тем, что переносит объекты "как есть" вместе с их внутренними идентификаторами (GUID). Это важно для сохранения связей между справочниками Сотрудники и ФизическиеЛица.
Однако, если релизы баз хотя бы немного отличаются, вы можете столкнуться с ошибкой: Метод объекта не обнаружен в модуле менеджера. Это происходит из-за того, что при загрузке XML система пытается выполнить стандартные обработчики событий (например, при записи документа), а логика в новом релизе уже изменилась. Чтобы минимизировать такие риски, разберем альтернативы:
ОбменДанными.Загрузка = Истина, чтобы отключить проверки и лишние движения при записи.Выясним причину распространенной ситуации: данные перенесены, но при заполнении документа НачислениеЗарплатыИВзносов в новой базе для одного сотрудника создается несколько одинаковых строк, часть из которых — пустые. Проанализируем механизмы подсистемы расчета зарплаты.
Причина кроется в регистрах сведений. Документ начисления при автоматическом заполнении обращается к данным плановых начислений. Если при переносе через XML в новой базе возникли дубли в регистре ПлановыеНачисления (например, одна запись пришла из старой базы, а вторая была создана в новой как предопределенная или через "Начальную настройку"), система выполнит "левое соединение" в запросе. Результат — количество строк в документе будет кратно количеству дублей в регистре.
Посмотрим на список регистров, которые нужно проверить в первую очередь:
ПлановыеНачисления — основа для формирования строк в начислениях.КадроваяИсторияСотрудников — определяет периоды работы и подразделения.ОсновныеДанныеКонтрактаДоговораСотрудника — влияет на расчетные коэффициенты.Разберем по шагам, какие объекты необходимо выбрать в обработке выгрузки, чтобы зарплата в новой базе считалась корректно. Ошибка многих пользователей — выгрузка только документов. Этого недостаточно, так как зарплата — это регистрозависимая подсистема.
1. Справочники (Фундамент):
Обязательно переносим Организации, ПодразделенияОрганизаций, Должности и связку ФизическиеЛица + Сотрудники. Помните, что в 1С:КА 2.5 один человек (Физлицо) может иметь несколько элементов в справочнике Сотрудники (например, при внутреннем совместительстве). Связь идет по GUID, поэтому выгружать их нужно одновременно.
2. Планы видов расчета (ПВР):
Это самый опасный момент. В новой базе уже есть предопределенные виды расчетов (Оклад, Премия). Если вы загрузите их из старой базы, могут появиться дубли с одинаковыми именами, но разными GUID. Это сломает все алгоритмы. Рекомендуем сначала сопоставить ПВР (Начисления и Удержания) или использовать обработку "Поиск и замена дублей" сразу после загрузки.
3. Регистры сведений (Данные для расчета):
Чтобы в новой базе корректно считались отпуска и больничные, необходимо перенести регистры, хранящие сведения о заработке за прошлые периоды:
ДанныеОВремениДляРасчетаСреднегоЗаработкаОбщийДанныеОЗаработкеДляРасчетаСреднегоЗаработкаОбщийГрафикиРаботыПоВидамВремениЕсли вы столкнулись с ошибкой при загрузке из-за разницы релизов, проанализируем ситуацию. В новых версиях КА 2.5 расчетные механизмы часто выносятся в модули менеджера с новыми параметрами. Если выгрузка XML пытается вызвать старый метод, процесс прерывается.
Попробуем следующий программный обход: в обработке выгрузки XML перед началом загрузки стоит убедиться, что установлен режим загрузки данных. Это отключает вызов кода в процедурах ПередЗаписью и ПриЗаписи. Если стандартная обработка не справляется, можно воспользоваться фрагментом кода для принудительной установки режима загрузки:
// Пример логики для загрузки объекта без выполнения проверок
ОбъектЗагрузки = СсылкаНаОбъект.ПолучитьОбъект();
ОбъектЗагрузки.ОбменДанными.Загрузка = Истина;
ОбъектЗагрузки.Записать();
После завершения процесса загрузки не спешите отдавать базу пользователям. Проведем технологическую проверку:
Анализ зарплаты по сотрудникам (в целом за период) в исходной и новой базах. Итоговые суммы начислений, удержаний и выплат должны совпадать до копейки.ДанныеДляРасчетаЗарплаты или показатели (такие как стоимость часа, тарифная ставка).Поиск и замена дублей для справочников Физические лица и Виды начислений. Если GUID различаются, но данные идентичны — объедините их, выбрав в качестве правильного объект, который уже был в новой базе (предопределенный).Важный нюанс: Если вы планируете вести расчет зарплаты "с чистого листа", но с сохранением истории, обязательно перенесите документы Данные на начало эксплуатации. Без них корректный расчет среднего заработка будет невозможен в течение ближайших 12-24 месяцев.
Таким образом, успех переноса данных в 1С:Комплексная автоматизация 2.5 зависит не столько от выбора инструмента (XML или КД), сколько от тщательности выбора состава регистров сведений и аккуратной работы с предопределенными элементами планов видов расчета.