Почему не формируется «Карточка гражданина, подлежащего воинскому учету» в 1С:ЗУП 3.1 и как это исправить?

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

В современных реалиях ведение воинского учета в программе 1С:Зарплата и управление персоналом 8 (ред. 3.1) стало критически важной задачей. Одной из самых востребованных форм является «Карточка гражданина, подлежащего воинскому учету» (Форма №10). Однако пользователи часто сталкиваются с ситуацией, когда при попытке формирования отчета программа выдает ошибку или просто не выводит данные. Особенно остро эта проблема проявляется в базах, где выполнялся так называемый «рекомендованный перенос данных» или используются программные расширения.

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

Разберем причину №1: Особенности «Рекомендованного переноса данных»

Если вы переходили на ЗУП 3.1 с версии 2.5 или других программ (например, используя перенос данных из УПП в ЗУП 3.1) с использованием рекомендованного переноса, ваша кадровая история за прошлые периоды свернута в документы типа ПереносДанных. Это фундаментальный момент для понимания проблемы. Рассмотрим подробнее, как работает алгоритм отчета:

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

Проанализируем ситуацию: если в коде отчета стоит жесткое ожидание ссылок на документы ПриемНаРаботу или КадровыйПеревод, то при встрече с ПереносДанных система может выдать ошибку «Поле объекта не обнаружено» или сформировать пустую строку.

Разберем причину №2: Конфликт с расширениями (наиболее вероятная)

Как показывает практика, часто виновником становится расширение конфигурации, которое когда-то было установлено для модификации Личной карточки (Т-2). Дело в том, что механизмы формирования Формы №10 и карточки Т-2 в ЗУП 3.1 тесно взаимосвязаны. В частности, они используют общую функцию:

ДополнительныеСведенияУнифицированнойФормыТ2ПоРеестрам

Выясним причину: если ваше расширение перехватывает эту функцию (через &Вместо или &После), оно может не знать о новых колонках или требованиях, которые добавили разработчики 1С для воинского учета (Форма №10 появилась позже, чем стандартная Т-2). В результате данные «затираются» или передаются в некорректном формате, что приводит к краху отчета.

Пошаговая инструкция по исправлению через отладку кода

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

Шаг 1. Поиск места ошибки. Откройте конфигуратор и найдите общий модуль (или модуль объекта отчета) ВоинскийУчетОбщий. Нас интересует цикл обработки кадровых событий.

Проанализируем фрагмент кода, где часто возникает сбой:


Для Каждого ДанныеПриемыПеремещения Из ДанныеЗаполненияПоСотруднику Цикл
    // Проверка наличия регистратора
    Если ДанныеПриемыПеремещения.Регистратор = Неопределено Тогда
        Продолжить;
    КонецЕсли;
КонецЦикла;

Шаг 2. Корректировка работы с документами переноса. В некоторых релизах (например, 3.1.23.866) наблюдалась проблема: программа пыталась взять Регистратор там, где нужно было использовать поле ОснованиеПеревода. Посмотрим на пример исправления, который помог пользователям:


// Вместо прямого обращения к Регистратору:
// Отбор = Новый Структура("Приказ", ДанныеПриемыПеремещения.Регистратор);

// Используем проверку типа документа:
Если ТипЗнч(ДанныеПриемыПеремещения.Регистратор) = Тип("ДокументСсылка.ПереносДанных") Тогда
    Отбор = Новый Структура("Приказ", ДанныеПриемыПеремещения.ОснованиеПеревода);
Иначе
    Отбор = Новый Стуктура("Приказ", ДанныеПриемыПеремещения.Регистратор);
КонецЕсли;

Важное замечание: Будьте осторожны при подстановке ОснованиеПеревода вместо ссылки на объект. Если в это поле записывается текст, отчет может «проглотить» ошибку, но данные в печатной форме могут оказаться некорректными. Обязательно проверьте содержимое сформированной карточки после таких правок.

Проверка прав доступа (RLS)

Рассмотрим ситуацию, когда отчет не формируется у пользователя с ограниченными правами, но работает у администратора. Даже если RLS (Ограничение прав на уровне записей) в базе выключен, система может спотыкаться на «битых» ссылках или объектах, к которым нет доступа в текущем сеансе.

Посмотрим, нет ли в регистре Кадровая история сотрудников записей с пометкой «Объект не найден». Такое случается после некорректного удаления документов или частичного переноса данных. Иногда требуется исправление даты начала 31.12.1899 в записях о приеме, так как если отчет натыкается на такую битую ссылку или некорректную дату, он завершается аварийно.

Итоговый алгоритм действий для восстановления работы отчета

Просуммируем всё вышесказанное и составим план действий для исправления ситуации:

  1. Проверка расширений: Это самый быстрый и эффективный шаг. Отключите все расширения, которые могут влиять на кадровые отчеты или форму Т-2. Если отчет заработал — ищите проблему в расширении, а именно в функции ДополнительныеСведенияУнифицированнойФормыТ2ПоРеестрам.
  2. Анализ данных регистра: Зайдите в регистр сведений Кадровая история сотрудников (через «Все функции» или «Функции для технического специалиста»). Сделайте отбор по проблемному сотруднику. Убедитесь, что поле Регистратор заполнено и ссылки валидны.
  3. Обновление конфигурации: Форма №10 была введена на основании приказа Министра обороны №700 и активно дорабатывалась. В релизах ветки 3.1.27 и выше многие ошибки обработки «Переноса данных» уже исправлены вендором.
  4. Ручное заполнение данных воинского учета: Убедитесь, что в карточке сотрудника на вкладке «Воинский учет» заполнены все обязательные поля: отношение к воинской обязанности, данные военного билета, звание и состав семьи. Иногда отсутствие одного значения в структуре данных приводит к ошибке при компоновке результата.

Помните, что Форма №10 — это сложный отчет, собирающий данные из множества регистров (кадровая история, персональные данные, воинский учет). Совместная работа программного кода и ваших данных — залог успешного формирования карточки. Мы рекомендуем всегда начинать с проверки чистоты данных в регистрах, прежде чем приступать к изменению конфигурации.

← На главную