Переход со старых версий программного обеспечения на новые — всегда ответственный и технологически сложный процесс. При миграции с конфигурации «1С:Зарплата и Управление Персоналом», редакция 2.5 на современную редакцию 3.1 пользователи часто сталкиваются со следующей проблемой: в стандартных кадровых отчетах у сотрудников, принятых до даты переноса, не выводятся номера приказов о приеме на работу и реквизиты трудовых договоров. В полях отчетов красуются пустые значения. Если подготовка к смене программы еще продолжается, для оценки вариантов миграции будет полезен раздел с готовыми решениями для перехода в 1С:ЗУП.
Давайте подробно разберем, почему возникает эта ситуация, выясним внутреннюю логику хранения перенесенных данных в платформе 1С и рассмотрим несколько практических способов решения проблемы — от простых пользовательских настроек до универсального программного кода.
Для того чтобы понять причину происходящего, нам необходимо проанализировать архитектуру переноса данных. При переходе с ЗУП 2.5 на ЗУП 3.1 в подавляющем большинстве случаев используется так называемый «рекомендованный» (или упрощенный) вариант переноса. При таком сценарии система не создает в новой информационной базе исторические документы (такие как физические документы ПриемНаРаботу или КадровыйПеревод) за прошлые периоды.
Вместо этого данные фиксируются на определенную дату среза (обычно это 1 января года начала учета в новой базе) специальным сводным документом НачальнаяШтатнаяРасстановка, а также напрямую записываются в технические регистры сведений. Поскольку физических кадровых документов в базе просто не существует, стандартные отчеты (например, «Список сотрудников» или «Кадровые изменения»), которые запрограммированы считывать реквизиты напрямую из документов приема, не находят их и оставляют поля пустыми.
Хотя документов приема в системе нет, кадровые сведения никуда не пропали — они необходимы программе для корректного составления регламентированной отчетности и формирования личных карточек сотрудников. Все эти данные лежат в специализированных регистрах сведений, записи в которые вносятся через технические документы ПереносДанных (их можно найти через меню Администрирование — Переносы данных):
РеестрКадровыхПриказов. В списке переносов эти записи находятся в документе с префиксом РКД.ОсновныеДанныеКонтрактаДоговораСотрудника. В списке переносов за них отвечает документ с префиксом ТДК.Давайте рассмотрим, как мы можем извлечь эти данные для повседневной работы кадровой службы.
Если кадровику требуется быстро получить список сотрудников с номерами и датами их трудовых договоров, программирование не потребуется. Систему компоновки данных в стандартных отчетах ЗУП 3.1 можно легко настроить силами пользователя. Разберем по шагам, как вывести договоры в отчете «Штатные сотрудники»:
После выполнения этих шагов отчет выведет реквизиты договоров как для новых сотрудников, принятых уже непосредственно в ЗУП 3.1, так и для тех, чья история была перенесена из ЗУП 2.5.
С номерами приказов о приеме ситуация обстоит несколько сложнее. Если мы попробуем вывести поле приказа через настройки стандартного списка сотрудников, то для старых сотрудников данные все равно окажутся пустыми, так как отчет ищет физическую ссылку на документ.
Для быстрого анализа перенесенной информации без доработки конфигурации мы можем использовать «Универсальный отчет» (раздел Администрирование — Универсальный отчет). Настроим его по шагам:
В результате мы получим чистую таблицу с номерами и датами кадровых приказов всех перенесенных сотрудников. Главный минус такого подхода — в этот отчет не попадут новые сотрудники, принятые на работу уже в ЗУП 3.1, поскольку фирма «1С» в современных релизах оптимизировала работу и отказалась от дублирования новых кадровых документов в этот регистр сведений.
Если перед нами стоит задача разработать внешнюю печатную форму или специализированный кадровый отчет, который должен выводить единый сквозной список сотрудников с корректными номерами приказов и трудовых договоров (независимо от того, перенесен сотрудник или принят в новой базе), нам придется использовать встроенный язык 1С.
Рассмотрим детально алгоритм, который позволяет решить эту задачу. Нам нужно реализовать проверку: если в базе есть физический документ приема на работу, мы берем реквизиты из него. Если такого документа нет, мы обращаемся к регистру сведений РеестрКадровыхПриказов.
Проанализируем программный код, реализующий эту логику:
// В качестве параметра "Справик" выступает Ссылка на Элемент справочника "Сотрудники"
ТекОрганизация = Справик.ГоловнаяОрганизация.Ссылка;
// Проверяем наличие физического документа "Прием на работу" в базе данных
ЗапросПоДокументу = Новый Запрос;
ЗапросПоДокументу.УстановитьПараметр("Сотрудник", Справик);
ЗапросПоДокументу.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПриемНаРаботу.Ссылка КАК Ссылка,
| ПриемНаРаботу.Номер КАК НомерПриказа,
| ПриемНаРаботу.Дата КАК ДатаПриказа,
| ПриемНаРаботу.ТрудовойДоговорНомер КАК НомерДоговора,
| ПриемНаРаботу.ТрудовойДоговорДата КАК ДатаДоговора
|ИЗ
| Документ.ПриемНаРаботу КАК ПриемНаРаботу
|ГДЕ
| ПриемНаРаботу.Сотрудник = &Сотрудник
| И ПриемНаРаботу.Проведен = ИСТИНА";
ВыборкаДок = ЗапросПоДокументу.Выполнить().Выбрать();
ПриказНомер = "";
ПриказДата = '00010101';
ДоговорНомер = "";
ДоговорДата = '00010101';
ПриказЕсть = Ложь;
Если ВыборкаДок.Следующий() Тогда
// Документ найден в базе - берем данные напрямую из него
ПриказНомер = ВыборкаДок.НомерПриказа;
ПриказДата = ВыборкаДок.ДатаПриказа;
ДоговорНомер = ВыборкаДок.НомерДоговора;
ДоговорДата = ВыборкаДок.ДатаДоговора;
ПриказЕсть = Истина;
КонецЕсли;
// Если физический документ отсутствует, извлекаем данные из кадровых регистров переноса
Если Не ПриказЕсть Тогда
// Запрос к регистру сведений "Реестр кадровых приказов"
ЗапросПриказ = Новый Запрос;
ЗапросПриказ.УстановитьПараметр("Сотрудник", Справик);
ЗапросПриказ.УстановитьПараметр("Организация", ТекОрганизация);
ЗапросПриказ.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| РеестрКадровыхПриказов.ДатаПриказа КАК ДатаПриказа,
| РеестрКадровыхПриказов.НомерПриказа КАК НомерПриказа
|ИЗ
| РегистрСведений.РеестрКадровыхПриказов КАК РеестрКадровыхПриказов
|ГДЕ
| РеестрКадровыхПриказов.Сотрудник = &Сотрудник
| И РеестрКадровыхПриказов.Организация = &Организация";
ВыборкаРеестра = ЗапросПриказ.Perform().Choose(); // Выполнить().Выбрать()
ВыборкаРеестра = ЗапросПриказ.Выполнить().Выбрать();
Если ВыборкаРеестра.Следующий() Тогда
ПриказНомер = ВыборкаРеестра.НомерПриказа;
ПриказДата = ВыборкаРеестра.ДатаПриказа;
КонецЕсли;
// Аналогично получаем сведения о трудовом договоре из регистра ОсновныеДанныеКонтрактаДоговораСотрудника
ЗапросДоговор = Новый Запрос;
ЗапросДоговор.УстановитьПараметр("Сотрудник", Справик);
ЗапросДоговор.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Договоры.ДоговорНомер КАК НомерДоговора,
| Договоры.ДоговорДата КАК ДатаДоговора
|ИЗ
| РегистрСведений.ОсновныеДанныеКонтрактаДоговораСотрудника КАК Договоры
|ГДЕ
| Договоры.Сотрудник = &Сотрудник";
ВыборкаДоговора = ЗапросДоговор.Выполнить().Выбрать();
Если ВыборкаДоговора.Следующий() Тогда
ДоговорНомер = ВыборкаДоговора.НомерДоговора;
ДоговорДата = ВыборкаДоговора.ДатаДоговора;
КонецЕсли;
КонецЕсли;
Этот код гарантирует, что мы получим корректные значения реквизитов как для "исторических" сотрудников, чьи документы остались в архивной базе ЗУП 2.5, так и для новых работников, зарегистрированных уже в ЗУП 3.1.
Иногда при переносе баз данных из-за ошибок в ведении учета в старой программе номера приказов или договоров могут перенестись с ошибками или не перенестись вовсе. Кадровый специалист, обнаружив такую проблему, часто не может исправить данные самостоятельно из-за отсутствия административных прав к техническим документам. Для исправления ошибочных значений подойдёт обработка для редактирования движений в регистрах документа «Перенос данных».
В такой ситуации есть два пути решения:
Таким образом, понимание механизмов рекомендованного переноса данных в 1С:ЗУП 3.1 позволяет быстро диагностировать причины "исчезновения" приказов и договоров, эффективно настраивать отчетность и решать задачи интеграции данных любой сложности. При необходимости делегировать миграцию профильным специалистам можно подобрать решения для перехода под ключ по тарифу PRO.