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

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

Переход со старых версий программного обеспечения на новые — всегда ответственный и технологически сложный процесс. При миграции с конфигурации «1С:Зарплата и Управление Персоналом», редакция 2.5 на современную редакцию 3.1 пользователи часто сталкиваются со следующей проблемой: в стандартных кадровых отчетах у сотрудников, принятых до даты переноса, не выводятся номера приказов о приеме на работу и реквизиты трудовых договоров. В полях отчетов красуются пустые значения. Если подготовка к смене программы еще продолжается, для оценки вариантов миграции будет полезен раздел с готовыми решениями для перехода в 1С:ЗУП.

Давайте подробно разберем, почему возникает эта ситуация, выясним внутреннюю логику хранения перенесенных данных в платформе 1С и рассмотрим несколько практических способов решения проблемы — от простых пользовательских настроек до универсального программного кода.

Почему стандартные отчеты ЗУП 3.1 показывают пустые поля?

Для того чтобы понять причину происходящего, нам необходимо проанализировать архитектуру переноса данных. При переходе с ЗУП 2.5 на ЗУП 3.1 в подавляющем большинстве случаев используется так называемый «рекомендованный» (или упрощенный) вариант переноса. При таком сценарии система не создает в новой информационной базе исторические документы (такие как физические документы ПриемНаРаботу или КадровыйПеревод) за прошлые периоды.

Вместо этого данные фиксируются на определенную дату среза (обычно это 1 января года начала учета в новой базе) специальным сводным документом НачальнаяШтатнаяРасстановка, а также напрямую записываются в технические регистры сведений. Поскольку физических кадровых документов в базе просто не существует, стандартные отчеты (например, «Список сотрудников» или «Кадровые изменения»), которые запрограммированы считывать реквизиты напрямую из документов приема, не находят их и оставляют поля пустыми.

Где на самом деле хранятся перенесенные кадровые данные?

Хотя документов приема в системе нет, кадровые сведения никуда не пропали — они необходимы программе для корректного составления регламентированной отчетности и формирования личных карточек сотрудников. Все эти данные лежат в специализированных регистрах сведений, записи в которые вносятся через технические документы ПереносДанных (их можно найти через меню Администрирование — Переносы данных):

  1. Данные о приказах (номера и даты приемов/переводов) для формирования личной карточки Т-2 записываются в регистр сведений РеестрКадровыхПриказов. В списке переносов эти записи находятся в документе с префиксом РКД.
  2. Данные о трудовых договорах (номера и даты ТД) записываются в регистр сведений ОсновныеДанныеКонтрактаДоговораСотрудника. В списке переносов за них отвечает документ с префиксом ТДК.

Давайте рассмотрим, как мы можем извлечь эти данные для повседневной работы кадровой службы.

Вариант 1. Настройка стандартного отчета «Штатные сотрудники» для вывода договоров

Если кадровику требуется быстро получить список сотрудников с номерами и датами их трудовых договоров, программирование не потребуется. Систему компоновки данных в стандартных отчетах ЗУП 3.1 можно легко настроить силами пользователя. Разберем по шагам, как вывести договоры в отчете «Штатные сотрудники»:

  1. Откроем отчет «Штатные сотрудники» (или аналогичный отчет «Личные данные сотрудников»).
  2. В верхней части панели отчета нажмем кнопку Настройки.
  3. В открывшемся окне переключим вид настройки в режим Расширенный (кнопка внизу окна).
  4. Перейдем на вкладку Поля и сортировки.
  5. В левом окне со списком доступных полей найдем и развернем группу Работа.
  6. Внутри группы «Работа» найдем подгруппу Трудовой договор.
  7. Двойным кликом выберем поля Номер и Дата начала. Они переместятся в правое окно («Выбранные поля»).
  8. Нажмем кнопку Закрыть и сформировать.

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

Вариант 2. Использование «Универсального отчета» для кадровых приказов

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

Для быстрого анализа перенесенной информации без доработки конфигурации мы можем использовать «Универсальный отчет» (раздел Администрирование — Универсальный отчет). Настроим его по шагам:

  1. В поле «Тип объекта» выберем значение Регистр сведений.
  2. В поле «Имя объекта» выберем Реестр кадровых приказов.
  3. В поле «Таблица» укажем Срез последних или просто выведем основные записи.
  4. Нажмем кнопку Сформировать.

В результате мы получим чистую таблицу с номерами и датами кадровых приказов всех перенесенных сотрудников. Главный минус такого подхода — в этот отчет не попадут новые сотрудники, принятые на работу уже в ЗУП 3.1, поскольку фирма «1С» в современных релизах оптимизировала работу и отказалась от дублирования новых кадровых документов в этот регистр сведений.

Вариант 3. Программное решение проблемы (для разработчиков 1С)

Если перед нами стоит задача разработать внешнюю печатную форму или специализированный кадровый отчет, который должен выводить единый сквозной список сотрудников с корректными номерами приказов и трудовых договоров (независимо от того, перенесен сотрудник или принят в новой базе), нам придется использовать встроенный язык 1С.

Рассмотрим детально алгоритм, который позволяет решить эту задачу. Нам нужно реализовать проверку: если в базе есть физический документ приема на работу, мы берем реквизиты из него. Если такого документа нет, мы обращаемся к регистру сведений РеестрКадровыхПриказов.

Проанализируем программный код, реализующий эту логику:


// В качестве параметра "Справик" выступает Ссылка на Элемент справочника "Сотрудники"
ТекОрганизация = Справик.ГоловнаяОрганизация.Ссылка;

// Проверяем наличие физического документа "Прием на работу" в базе данных
ЗапросПоДокументу = Новый Запрос;
ЗапросПоДокументу.УстановитьПараметр("Сотрудник", Справик);
ЗапросПоДокументу.Текст = 
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |	ПриемНаРаботу.Ссылка КАК Ссылка,
    |	ПриемНаРаботу.Номер КАК НомерПриказа,
    |	ПриемНаРаботу.Дата КАК ДатаПриказа,
    |	ПриемНаРаботу.ТрудовойДоговорНомер КАК НомерДоговора,
    |	ПриемНаРаботу.ТрудовойДоговорДата КАК ДатаДоговора
    |ИЗ
    |	Документ.ПриемНаРаботу КАК ПриемНаРаботу
    |ГДЕ
    |	ПриемНаРаботу.Сотрудник = &Сотрудник
    |	И ПриемНаРаботу.Проведен = ИСТИНА";

ВыборкаДок = ЗапросПоДокументу.Выполнить().Выбрать();

ПриказНомер = "";
ПриказДата = '00010101';
ДоговорНомер = "";
ДоговорДата = '00010101';
ПриказЕсть = Ложь;

Если ВыборкаДок.Следующий() Тогда
    // Документ найден в базе - берем данные напрямую из него
    ПриказНомер = ВыборкаДок.НомерПриказа;
    ПриказДата = ВыборкаДок.ДатаПриказа;
    ДоговорНомер = ВыборкаДок.НомерДоговора;
    ДоговорДата = ВыборкаДок.ДатаДоговора;
    ПриказЕсть = Истина;
КонецЕсли;

// Если физический документ отсутствует, извлекаем данные из кадровых регистров переноса
Если Не ПриказЕсть Тогда
    
    // Запрос к регистру сведений "Реестр кадровых приказов"
    ЗапросПриказ = Новый Запрос;
    ЗапросПриказ.УстановитьПараметр("Сотрудник", Справик);
    ЗапросПриказ.УстановитьПараметр("Организация", ТекОрганизация);
    ЗапросПриказ.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |	РеестрКадровыхПриказов.ДатаПриказа КАК ДатаПриказа,
        |	РеестрКадровыхПриказов.НомерПриказа КАК НомерПриказа
        |ИЗ
        |	РегистрСведений.РеестрКадровыхПриказов КАК РеестрКадровыхПриказов
        |ГДЕ
        |	РеестрКадровыхПриказов.Сотрудник = &Сотрудник
        |	И РеестрКадровыхПриказов.Организация = &Организация";
        
    ВыборкаРеестра = ЗапросПриказ.Perform().Choose(); // Выполнить().Выбрать()
    ВыборкаРеестра = ЗапросПриказ.Выполнить().Выбрать();
    Если ВыборкаРеестра.Следующий() Тогда
        ПриказНомер = ВыборкаРеестра.НомерПриказа;
        ПриказДата = ВыборкаРеестра.ДатаПриказа;
    КонецЕсли;
    
    // Аналогично получаем сведения о трудовом договоре из регистра ОсновныеДанныеКонтрактаДоговораСотрудника
    ЗапросДоговор = Новый Запрос;
    ЗапросДоговор.УстановитьПараметр("Сотрудник", Справик);
    ЗапросДоговор.Текст = 
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |	Договоры.ДоговорНомер КАК НомерДоговора,
        |	Договоры.ДоговорДата КАК ДатаДоговора
        |ИЗ
        |	РегистрСведений.ОсновныеДанныеКонтрактаДоговораСотрудника КАК Договоры
        |ГДЕ
        |	Договоры.Сотрудник = &Сотрудник";
        
    ВыборкаДоговора = ЗапросДоговор.Выполнить().Выбрать();
    Если ВыборкаДоговора.Следующий() Тогда
        ДоговорНомер = ВыборкаДоговора.НомерДоговора;
        ДоговорДата = ВыборкаДоговора.ДатаДоговора;
    КонецЕсли;
    
КонецЕсли;

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

Вариант 4. Как скорректировать перенесенные данные?

Иногда при переносе баз данных из-за ошибок в ведении учета в старой программе номера приказов или договоров могут перенестись с ошибками или не перенестись вовсе. Кадровый специалист, обнаружив такую проблему, часто не может исправить данные самостоятельно из-за отсутствия административных прав к техническим документам. Для исправления ошибочных значений подойдёт обработка для редактирования движений в регистрах документа «Перенос данных».

В такой ситуации есть два пути решения:

  1. Корректировка под правами Администратора: Пользователь с полными правами переходит в раздел Администрирование — Переносы данных, находит документ с кодом ТДК (корректировка договоров) или РКД (корректировка приказов) и вручную исправляет значения в строках табличной части для нужного сотрудника.
  2. Использование внешних обработок: Администратор может предоставить кадровику специализированную внешнюю обработку (например, «Редактор реестра кадровых приказов»), которая позволяет редактировать записи в указанных регистрах сведений через удобный и понятный интерфейс, не предоставляя пользователю опасные полные права к конфигурации и другим документам переноса.

Таким образом, понимание механизмов рекомендованного переноса данных в 1С:ЗУП 3.1 позволяет быстро диагностировать причины "исчезновения" приказов и договоров, эффективно настраивать отчетность и решать задачи интеграции данных любой сложности. При необходимости делегировать миграцию профильным специалистам можно подобрать решения для перехода под ключ по тарифу PRO.

← На главную