Почему при переносе данных из ЗУП 2.5 в ЗУП 3.1 устанавливается неверный интервал выгрузки и как это исправить?

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

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

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

Причины сброса периода при выгрузке

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

Если в форме обмена явно не заданы параметры МесяцНачалаЭксплуатации или ДатаНачалаПереносаРасчетныхДанных, правила конвертации считают их пустыми и принудительно переопределяют их значения на зафиксированные в коде константы. В результате этого срез данных обрезается старым периодом.

Способ 1. Редактирование общего макета правил конвертации

Рассмотрим основной и наиболее надежный технический вариант решения проблемы — корректировку макета правил выгрузки в конфигураторе или в файле правил XML.

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

  1. Откроем конфигуратор ЗУП 3.1.
  2. В дереве конфигурации перейдем по пути: Общие — Общие макеты — ЗарплатаКадрыПереносДанныхИзЗУП25.
  3. Сохраним этот макет на диск как файл XML.
  4. Откроем полученный файл XML в текстовом редакторе и найдем блок инициализации параметров.

Исходный фрагмент кода в макете выглядит следующим образом:


Если Параметры.ПереноситьНачисленияПредыдущейПрограммы Тогда
    Если Не ЗначениеЗаполнено(Параметры.ДатаНачалаПереносаРасчетныхДанных) Тогда
        Параметры.ДатаНачалаПереносаРасчетныхДанных = Дата(2010, 1, 1);
    КонецЕсли;
Иначе
    Если Не ЗначениеЗаполнено(Параметры.МесяцНачалаЭксплуатации) Тогда
        Параметры.МесяцНачалаЭксплуатации = Дата(2015, 1, 1);
    КонецЕсли;
КонецЕсли;

Заменим указанные даты на требуемый интервал эксплуатации и глубину кадровой истории. Например, если необходимо перенести кадровую историю с 2000 года, а эксплуатацию системы начать с октября 2017 года, откорректируем код следующим образом:


Если Параметры.ПереноситьНачисленияПредыдущейПрограммы Тогда
    Если Не ЗначениеЗаполнено(Параметры.ДатаНачалаПереносаРасчетныхДанных) Тогда
        Параметры.ДатаНачалаПереносаРасчетныхДанных = Дата(2000, 1, 1);
    КонецЕсли;
Иначе
    Если Не ЗначениеЗаполнено(Параметры.МесяцНачалаЭксплуатации) Тогда
        Параметры.МесяцНачалаЭксплуатации = Дата(2017, 10, 1);
    КонецЕсли;
КонецЕсли;

После внесения изменений сохраним XML-файл правил и подгрузим его в обработку Универсальный обмен данными в формате XML в исходной базе ЗУП 2.5. Теперь при выгрузке правила будут использовать новые установленные интервалы.

Способ 2. Явное задание параметров на вкладке обмена

Выясним, как избежать изменения кода макета, если выгрузка выполняется через обработку Универсальный обмен данными в формате XML. Чтобы ветки кода по умолчанию не сбрасывали интервал, необходимо явно передать обработке параметры с точным соблюдением типов данных:

  1. В обработке выгрузки перейдем на вкладку Параметры.
  2. Убедимся, что параметр МесяцНачалаЭксплуатации имеет тип Дата и заполнен первым числом месяца начала учета в ЗУП 3.1.
  3. Установим параметр ДатаНачалаПереносаРасчетныхДанных с типом Дата (дата, с которой переносится расчетная история для среднего заработка и НДФЛ).
  4. Зададим параметр ПереноситьНачисленияПредыдущейПрограммы с типом Булево.

Если параметры заданы строго с нужными типами данных, алгоритм инициализации правил не будет перезаписывать их значениями по умолчанию.

Способ 3. Прямой перенос через COM-соединение или специализированный помощник

Посмотрим на альтернативные варианты переноса, которые минимизируют риски сброса периода и ошибки с превышением памяти при работе с крупными базами данных:

  1. Использование Помощника перехода в ЗУП 3.1: Запустим перенос из целевой базы ЗУП 3.1 через стартовый помощник с прямым COM-подключением к базе 2.5. В этом режиме параметры периода передаются напрямую из интерфейса загрузки.
  2. Использование автономной обработки выгрузки: Воспользуемся внешней обработкой ПомощникВыгрузки.epf из поставки ЗУП 3.1. В отличие от стандартного универсального обмена, в нее уже встроен интерфейс корректного ввода всех параметров выгрузки.

Применяя описанные методы, вы сможете корректно выгрузить кадровые и расчетные данные из ЗУП 2.5 за весь нужный период без сброса дат на исторические значения по умолчанию.

← На главную