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