Как в форме списка документов увольнения в 1С:ЗУП 3.1 вывести дату приема и должность сотрудника?

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

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

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

---

Почему стандартный способ («Изменить форму») не работает?

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

Однако на практике при таком подходе мы сталкиваемся со следующими проблемами:

Проанализируем причину такого поведения системы. В отличие от старых версий конфигураций (например, ЗУП 2.5), в 1С:ЗУП 3 справочник Сотрудники спроектирован максимально облегченным. Он практически не хранит в себе жестких кадровых реквизитов. Кадровая история (приемы, переводы, должности, подразделения) — это периодические данные, которые записываются и хранятся в специализированных регистрах сведений.

Поля должности, которые доступны для выбора через стандартное разыменование ссылки сотрудника на форме, являются устаревшими техническими реквизитами, оставленными разработчиками «для совместимости» (часто они заполняются только при первоначальном переносе данных из старых баз и далее не поддерживаются в актуальном состоянии). Поэтому получить из них реальную текущую должность сотрудника интерактивным путем невозможно.

---

Программное решение: Настройка динамического списка через расширение

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

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

Выбор правильного источника данных

На форумах часто предлагают связать таблицу документов с виртуальной таблицей СрезПоследних регистра сведений КадроваяИсторияСотрудников. Типичный пример такого запроса выглядит следующим образом:


ВЫБРАТЬ
    ДокументУвольнение.Ссылка КАК Ссылка,
    ДокументУвольнение.Сотрудник КАК Сотрудник,
    КадроваяИсторияСрезПоследних.Должность КАК Должность
ИЗ
    Документ.Увольнение КАК ДокументУвольнение
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСрезПоследних
        ПО ДокументУвольнение.Сотрудник = КадроваяИсторияСрезПоследних.Сотрудник

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

Для решения этой проблемы разработчики фирмы «1С» предусмотрели специальный вспомогательный регистр сведений — ТекущиеКадровыеДанныеСотрудников. Он является непериодическим, и в нем всегда гарантированно хранится ровно одна актуальная строка для каждого сотрудника. В этом регистре уже есть готовые и всегда актуальные поля: ТекущаяДолжность, ТекущееПодразделение, а также ДатаПриема.

Реализация запроса динамического списка

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


ВЫБРАТЬ
    ДокументУвольнение.Ссылка КАК Ссылка,
    ДокументУвольнение.Дата КАК Дата,
    ДокументУвольнение.Номер КАК Номер,
    ДокументУвольнение.Проведен КАК Проведен,
    ДокументУвольнение.Организация КАК Организация,
    ДокументУвольнение.Сотрудник КАК Сотрудник,
    ДокументУвольнение.ДатаУвольнения КАК ДатаУвольнения,
    КадровыеДанные.ТекущаяДолжность КАК Должность,
    КадровыеДанные.ДатаПриема КАК ДатаПриема,
    ДокументУвольнение.Ответственный КАК Ответственный,
    ДокументУвольнение.Комментарий КАК Комментарий
ИЗ
    Документ.Увольнение КАК ДокументУвольнение
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК КадровыеДанные
        ПО ДокументУвольнение.Sotrudnik = КадровыеДанные.Сотрудник

Использование регистра ТекущиеКадровыеДанныеСотрудников дает нам сразу несколько преимуществ:

  1. Высокая скорость работы: запрос выполняется мгновенно, так как платформе не нужно рассчитывать срезы на лету.
  2. Отсутствие дублей: соединение происходит по уникальному ключу сотрудника, что исключает появление ошибок дублирования ссылок на форме.
  3. Корректность данных при повторном приеме: если физическое лицо было уволено, а затем снова принято на работу, в системе создается новый элемент справочника Сотрудники. Благодаря связи по полю Сотрудник, в списке увольнений отобразится именно та должность и дата приема, которые относились к конкретному рабочему периоду (по конкретному трудовому договору), а не к текущему новому месту работы физлица.

---

Альтернативный вариант решения без программирования

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

Рассмотрим два наиболее удобных инструмента настройки отчетов:

Вариант 1. Настройка отчета «Кадровые изменения»

Этот отчет позволяет гибко выводить любые кадровые события за произвольный период времени.

  1. Перейдите в раздел Кадры — Кадровые отчеты и откройте отчет Кадровые изменения.
  2. Укажите интересующий вас период увольнений и выберите организацию.
  3. Нажмите на кнопку Настройки и в открывшемся окне переключите вид настроек в режим Расширенный (внизу окна).
  4. Перейдите на вкладку Фильтры (в некоторых версиях — «Отборы») и добавьте новое поле отбора: Вид события Равно Увольнение.
  5. Перейдите на вкладку Поля и сортировки. Убедитесь, что в списке выбранных полей присутствуют реквизиты Дата приема и Должность. Если их нет, нажмите кнопку «Добавить» и выберите их из структуры данных сотрудника.
  6. Нажмите кнопку Закрыть и сформировать. Вы получите готовый реестр уволенных сотрудников с нужными вам колонками.

Вариант 2. Настройка отчета «Уволенные сотрудники»

Специализированный отчет, который изначально ориентирован на предоставление сведений по расторгнутым трудовым договорам.

  1. В разделе Кадры — Кадровые отчеты выберите отчет Уволенные сотрудники.
  2. По умолчанию отчет формируется на конкретную дату. Чтобы превратить его в список за период, перейдите в Настройки — Расширенный.
  3. На вкладке Фильтры добавьте условия для поля Дата увольнения (например, «Больше или равно» для начала периода и «Меньше или равно» для окончания периода).
  4. На вкладке Поля и сортировки добавьте флажок напротив поля Дата приема, которое в стандартном варианте может быть скрыто разработчиками.
  5. Сформируйте отчет и сохраните этот вариант настройки (кнопка «Варианты отчета — Сохранить как...»), чтобы не настраивать его заново при следующем запуске.

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

← На главную