При выполнении перехода с конфигурации 1С:Зарплата и Управление Персоналом ред. 2.5 на ред. 3.1 специалисты часто сталкиваются с ситуацией, когда обработка выгрузки самопроизвольно сбрасывает выбранный интервал дат. Например, вы запрашиваете срез данных за текущий период, а система после завершения процесса подставляет дату окончательной выгрузки за прошлые годы (например, 31.12.2013 или 31.12.2014) и переносит далеко не всю необходимую кадровую историю и расчетные данные.
Разберем, с чем связано такое поведение типовых правил обмена и какими способами можно успешно настроить выгрузку нужного периода.
Проанализируем внутреннее устройство правил конвертации. Когда перенос запускается через обработку Универсальный обмен данными в формате XML напрямую из ЗУП 2.5, в процедурах обработки событий правил выгрузки срабатывает алгоритм инициализации параметров по умолчанию.
Если в форме обмена явно не заданы параметры МесяцНачалаЭксплуатации или ДатаНачалаПереносаРасчетныхДанных, правила конвертации считают их пустыми и принудительно переопределяют их значения на зафиксированные в коде константы. В результате этого срез данных обрезается старым периодом.
Рассмотрим основной и наиболее надежный технический вариант решения проблемы — корректировку макета правил выгрузки в конфигураторе или в файле правил XML.
В конфигурации ЗУП 3.1 правила перехода хранятся в специальном общем макете. Выполним следующие действия по шагам:
ЗарплатаКадрыПереносДанныхИзЗУП25.Исходный фрагмент кода в макете выглядит следующим образом:
Если Параметры.ПереноситьНачисленияПредыдущейПрограммы Тогда
Если Не ЗначениеЗаполнено(Параметры.ДатаНачалаПереносаРасчетныхДанных) Тогда
Параметры.ДатаНачалаПереносаРасчетныхДанных = Дата(2010, 1, 1);
КонецЕсли;
Иначе
Если Не ЗначениеЗаполнено(Параметры.МесяцНачалаЭксплуатации) Тогда
Параметры.МесяцНачалаЭксплуатации = Дата(2015, 1, 1);
КонецЕсли;
КонецЕсли;
Заменим указанные даты на требуемый интервал эксплуатации и глубину кадровой истории. Например, если необходимо перенести кадровую историю с 2000 года, а эксплуатацию системы начать с октября 2017 года, откорректируем код следующим образом:
Если Параметры.ПереноситьНачисленияПредыдущейПрограммы Тогда
Если Не ЗначениеЗаполнено(Параметры.ДатаНачалаПереносаРасчетныхДанных) Тогда
Параметры.ДатаНачалаПереносаРасчетныхДанных = Дата(2000, 1, 1);
КонецЕсли;
Иначе
Если Не ЗначениеЗаполнено(Параметры.МесяцНачалаЭксплуатации) Тогда
Параметры.МесяцНачалаЭксплуатации = Дата(2017, 10, 1);
КонецЕсли;
КонецЕсли;
После внесения изменений сохраним XML-файл правил и подгрузим его в обработку Универсальный обмен данными в формате XML в исходной базе ЗУП 2.5. Теперь при выгрузке правила будут использовать новые установленные интервалы.
Выясним, как избежать изменения кода макета, если выгрузка выполняется через обработку Универсальный обмен данными в формате XML. Чтобы ветки кода по умолчанию не сбрасывали интервал, необходимо явно передать обработке параметры с точным соблюдением типов данных:
МесяцНачалаЭксплуатации имеет тип Дата и заполнен первым числом месяца начала учета в ЗУП 3.1.ДатаНачалаПереносаРасчетныхДанных с типом Дата (дата, с которой переносится расчетная история для среднего заработка и НДФЛ).ПереноситьНачисленияПредыдущейПрограммы с типом Булево.Если параметры заданы строго с нужными типами данных, алгоритм инициализации правил не будет перезаписывать их значениями по умолчанию.
Посмотрим на альтернативные варианты переноса, которые минимизируют риски сброса периода и ошибки с превышением памяти при работе с крупными базами данных:
ПомощникВыгрузки.epf из поставки ЗУП 3.1. В отличие от стандартного универсального обмена, в нее уже встроен интерфейс корректного ввода всех параметров выгрузки.Применяя описанные методы, вы сможете корректно выгрузить кадровые и расчетные данные из ЗУП 2.5 за весь нужный период без сброса дат на исторические значения по умолчанию.