Почему отчеты по воинскому учету в 1С:ЗУП выдают ошибку "Среди кадровых данных сотрудников нет данных с именем "ВоинскийУчетДополнительныеСведения"?"

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

Разберем ситуацию, когда при попытке формирования отчетов по воинскому учету в программе 1С:Зарплата и Управление Персоналом (ЗУП) версии 3.1.18.586 или более поздних, пользователи сталкиваются с ошибкой: "Среди кадровых данных сотрудников нет данных с именем "ВоинскийУчетДополнительныеСведения"". Эта проблема часто возникает после обновления конфигурации и свидетельствует о несоответствии имен полей в запросах отчетов и актуальной структуре метаданных программы. Мы рассмотрим основные причины возникновения этой ошибки и предложим пошаговое решение.

Анализ проблемы и первоначальные действия

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

Прежде чем перейти к непосредственному исправлению, нам необходимо провести ряд проверок, которые помогут локализовать проблему или исключить типовые причины:

  1. Проверка типовой конфигурации и доработок: Мы должны выяснить, является ли ваша конфигурация полностью типовой, или в нее были внесены доработки. Часто доработки, особенно выполненные напрямую в конфигурации, могут конфликтовать с изменениями типовых объектов после обновлений. Если доработки сделаны через расширения, необходимо проверить их на актуальность и возможное влияние.
  2. Включение воинского учета: Убедимся, что ведение воинского учета в вашей базе 1С:ЗУП включено. Без этого отчеты по воинскому учету могут быть недоступны или работать некорректно. Однако, если отчеты открываются и ошибка возникает при их формировании, это, скорее всего, не основная причина. Проверить это можно в настройках раздела

    Настройка - Кадровый учет - Настройка состава данных для кадрового учета

  3. Очистка кэша: Это один из первых шагов при возникновении необъяснимых ошибок в 1С. Поврежденный или устаревший кэш может приводить к разнообразным сбоям. Мы можем попробовать очистить кэш несколькими способами:
    1. Вручную: Закроем все сеансы 1С, найдем и удалим папки кэша. Они обычно располагаются по путям, похожим на C:\Users\Username\AppData\Roaming\1C\1CE\ и C:\Users\Username\AppData\Local\1C\1CE\.
    2. Через запуск 1С:Предприятия: Запустим 1С, удалим информационную базу из списка и добавим ее заново. Это приведет к пересозданию кэша.
    3. Параметр запуска: Можем использовать параметр запуска /ClearCache в дополнительных параметрах информационной базы.

    В нашем случае, очистка кэша не помогла решить проблему, что указывает на более глубокие изменения в структуре конфигурации.

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

      ВоинскийУчетОбщий

      .
    2. Общему модулю

      КадровыйУчетБазовый

      и функциям

      ЗапросВТКадровыеДанныеСотрудников()

      и

      ТекстыОписанияПолейЗапросПоляПостоянныхКадровыхДанныхСотрудников()

      , так как именно они могут быть источником подобных исключений.

Выявление корневой причины: некорректное имя поля в СКД

Как показали дальнейшие исследования и подтверждение автора в обсуждении, основной причиной ошибки является изменение имени поля, используемого для формирования временных таблиц кадровых данных. В более новых версиях 1С:ЗУП, начиная с 3.1.18.586, поле ВоинскийУчетДополнительныеСведения было переименовано или заменено на ВоинскийУчетДополнительныеСведенияКарточки. Если в схеме компоновки данных (СКД) отчета по-прежнему используется старое имя поля, система не сможет его найти и выдаст ошибку.

В данном случае, проблема была обнаружена в СКД отчета "ВоинскийУчетОбщий".

Пошаговое исправление ошибки

Теперь, когда мы знаем корень проблемы, приступим к ее исправлению. Критически важно выполнять все изменения на копии рабочей базы и только после успешного тестирования переносить их на основную базу!

  1. Подготовка и резервное копирование:

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

  2. Доступ к конфигурации:

    Запустим программу 1С в режиме "Конфигуратор". Для этого нам потребуются права администратора или разработчика.

  3. Поиск отчета:

    В дереве объектов конфигурации развернем ветку "Отчеты". Найдем отчет с именем "ВоинскийУчетОбщий". Возможно, ошибка проявляется и в других отчетах по воинскому учету, в таком случае действия нужно будет повторить для каждого из них.

  4. Открытие СКД:

    Двойным щелчком откроем объект отчета. В окне объекта отчета нам понадобится перейти на вкладку "Макеты" или найти раздел "Основная схема компоновки данных". Откроем схему компоновки данных (СКД) для редактирования.

  5. Корректировка поля в СКД:

    В редакторе СКД мы должны найти все упоминания поля ВоинскийУчетДополнительныеСведения и заменить их на корректное имя ВоинскийУчетДополнительныеСведенияКарточки. Обычно это может быть в следующих местах:

    • Наборы данных: В запросе набора данных может быть прямое обращение к этому полю. Внимательно проанализируем текст запроса и изменим имя поля.
    • Вычисляемые поля: Если поле используется в вычисляемых полях, там также потребуется корректировка.
    • Параметры и ресурсы: Проверим, не используется ли это поле в параметрах или ресурсах СКД.

    Давайте посмотрим на пример, как это могло выглядеть в запросе или в описании поля СКД (это пример, реальный код будет находиться в вашей конфигурации):

    
    // Неправильно:
    ВЫБРАТЬ
        КадровыеДанныеСотрудников.Ссылка КАК Сотрудник,
        КадровыеДанныеСотрудников.ВоинскийУчетДополнительныеСведения КАК ДопСведения
    ИЗ
        РегистрСведений.КадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
            
    // Правильно:
    ВЫБРАТЬ
        КадровыеДанныеСотрудников.Ссылка КАК Сотрудник,
        КадровыеДанныеСотрудников.ВоинскийУчетДополнительныеСведенияКарточки КАК ДопСведения
    ИЗ
        РегистрСведений.КадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
    

    После внесения изменений обязательно сохраните СКД.

  6. Обновление и тестирование:

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

Дополнительные рекомендации и профилактика

Чтобы избежать подобных проблем в будущем и обеспечить стабильную работу вашей системы 1С, мы рекомендуем придерживаться следующих практик:

  1. Актуализация версии 1С:ЗУП:

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

  2. Использование расширений для доработок:

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

  3. Тщательное тестирование после обновлений:

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

  4. Проверка настроек воинского учета:

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

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

← На главную