Перенос данных между конфигурациями, построенными на разных или схожих архитектурах (например, из 1С:Комплексная автоматизация в 1С:Зарплата и управление персоналом), часто сопровождается техническими сложностями. Одной из самых распространенных проблем является ситуация, когда после загрузки документов Прием на работу или Кадровый перевод в справочнике Сотрудники не отображаются актуальные данные, такие как должность или подразделение. Рассмотрим подробно, как решить эту задачу, обеспечив правильную последовательность проведения документов и заполнение всех необходимых регистров.
Прежде всего, разберем ситуацию, когда документы перенесены, но информация в карточке сотрудника остается пустой. Проанализируем архитектуру систем ЗУП 3.1 и КА 2.0. В этих программах форма списка сотрудников и сама карточка объекта подтягивают данные (должность, подразделение, график работы) не напрямую из реквизитов документа, а из специализированных периодических регистров сведений, таких как Текущие кадровые данные сотрудников или Основные данные контракта. Эти регистры заполняются только в момент проведения документа. Если документы просто записаны или проведены в неверном порядке, записи в регистрах будут некорректными или будут отсутствовать вовсе.
Для автоматизации процесса при загрузке данных через Конвертацию данных 2.0 (КД), мы можем программно управлять порядком проведения объектов. Рассмотрим, как это реализовать. В правилах обмена объектами (ПКО) для документов можно использовать обработчик события После загрузки. Однако, если документов много, проведение каждого «на лету» замедлит процесс и может вызвать ошибки из-за отсутствия связанных объектов.
Оптимальным решением будет использование обработчика После загрузки данных на уровне всего плана обмена. В этом обработчике мы можем прописать алгоритм, который соберет все загруженные документы в таблицу, отсортирует их по дате и времени и проведет в строгом порядке.
Пример логики на языке 1С:
// Примерный алгоритм в обработчике "После загрузки данных"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриемНаРаботу.Ссылка КАК Ссылка,
| ПриемНаРаботу.Дата КАК Дата
|ИЗ
| Документ.ПриемНаРаботу КАК ПриемНаРаботу
|ГДЕ
| ПриемНаРаботу.ПометкаУдаления = ЛОЖЬ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| КадровыйПеревод.Ссылка,
| КадровыйПеревод.Дата
|ИЗ
| Документ.КадровыйПеревод КАК КадровыйПеревод
|ГДЕ
| КадровыйПеревод.ПометкаУдаления = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| Дата";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОбъектДок = Выборка.Ссылка.ПолучитьОбъект();
Попытка
ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Ошибка проведения документа: " + Выборка.Ссылка);
КонецПопытки;
КонецЦикла;
Разберем нюанс с временем документов. В кадровом учете крайне важно, чтобы документы внутри одного дня выстраивались в логическую цепочку. Например, Прием на работу должен иметь время 00:00:01, а Кадровый перевод в тот же день — 00:00:02. Если при выгрузке из КА время «схлопывается» до начала дня, при загрузке в ЗУП система может попытаться провести перевод раньше приема.
Для решения этой проблемы в правилах выгрузки (ПВД) или ПКО принудительно устанавливайте время для разных типов документов. Это позволит документам выстроиться в правильный «момент времени» автоматически при проведении.
Проанализируем важную зависимость: в современных версиях ЗУП 3.1 кадровые документы неразрывно связаны со штатным расписанием (ШР). Если в настройках базы-приемника включена опция «Ведется история изменений штатного расписания», то документ Прием на работу просто не проведется, если в системе нет утвержденной штатной единицы.
Следовательно, последовательность действий должна быть следующей:
Утверждение штатного расписания или Изменение штатного расписания.Если база КА содержит историю за многие годы, переносить каждый документ Прием на работу или Кадровый перевод за 10 лет нецелесообразно. Это создаст огромный объем данных и высокую вероятность ошибок в регистрах. Рассмотрим альтернативный, более профессиональный путь.
В 1С:ЗУП существует специализированный документ Данные на начало эксплуатации. Вместо того чтобы восстанавливать всю цепочку событий, мы фиксируем состояние сотрудника на дату начала работы в новой базе. Этот документ позволяет:
Это «чистый» способ переноса, который гарантирует корректность текущих данных в регистрах сведений без необходимости проведения сотен исторических документов.
Выясним причину, по которой перенос только документов может быть недостаточным. Существует целый ряд данных, которые не имеют документа-регистратора (так называемые «независимые» регистры). К ним относятся:
Для полноценной работы системы эти регистры необходимо переносить отдельно, создавая для них соответствующие правила выгрузки в Конвертации данных. Если этого не сделать, функционал расчета зарплаты и отчетности в ЗУП будет неполноценным.
При переносе данных между КА и ЗУП критически важно настроить сопоставление объектов по Уникальному Идентификатору (GUID). Особое внимание уделим связи Физические лица — Сотрудники. Помните, что в 1С это разные объекты:
Физическое лицо — это человек с его персональными данными (паспорт, ИНН, СНИЛС).Сотрудник — это запись о трудовом договоре этого человека в конкретной организации.Если при переносе нарушить связь между ними по GUID, система создаст дубли, что приведет к катастрофическим ошибкам в расчете НДФЛ и страховых взносов, так как налоги считаются в разрезе физлица, а кадровый учет ведется по сотрудникам.
Резюмируя пройденный материал: для успешного переноса кадровых данных из КА в ЗУП необходимо не просто копировать документы, а управлять порядком их проведения, предварительно переносить штатное расписание и дополнять перенос данными из независимых регистров сведений. Использование КД 2.0 позволяет автоматизировать эти процессы, но требует тщательного написания обработчиков событий загрузки.