Почему в 1С:ЗУП 3.1 в печатной форме приказа на отпуск (Т-6) не выводится или искажается номер и как это исправить?

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

Кадровые специалисты и бухгалтеры часто сталкиваются с неприятной ситуацией: при формировании печатной формы приказа о предоставлении отпуска (Т-6) в программе «1С:Зарплата и управление персоналом 3.1» (ЗУП) поле «Номер документа» остается пустым, выводится некорректно или обрезается самым непредсказуемым образом. Например, вместо красивого номера «ЗК00-000027» программа печатает просто «20» или «27».

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

Причина №1: Некорректная работа опции «Удалять префиксы организации и ИБ из приказов»

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

Проанализируем алгоритм работы этой функции. Программа ищет в номере разделитель «-» (дефис). Если кадровик вводит номер вручную (например, «15-к» или «ОТП-025»), алгоритм принимает левую часть номера за префикс организации или префикс базы данных и просто отрезает её. В результате на печать выводится пустая строка или только правая часть после дефиса с удалением всех лидирующих нулей.

Давайте посмотрим на упрощенный пример кода, который иллюстрирует, как платформа 1С производит усечение номера при включенной настройке удаления префиксов:


Функция ПолучитьНомерНаПечать(Знач ИсходныйНомер, УдалятьПрефиксы)
    Если Не УдалятьПрефиксы Тогда
        Возврат ИсходныйНомер;
    КонецЕсли;
    
    // Поиск разделителя префикса
    ПозицияДефиса = Найти(ИсходныйНомер, "-");
    Если ПозицияДефиса > 0 Тогда
        // Программа считает всё, что до дефиса, префиксом базы или организации
        Результат = Сред(ИсходныйНомер, ПозицияДефиса + 1);
    Else
        Результат = ИсходныйНомер;
    КонецЕсли;
    
    // Удаление лидирующих нулей в оставшейся части
    Пока Лев(Результат, 1) = "0" Цикл
        Результат = Сред(Результат, 2);
    КонецЦикла;
    
    Возврат Результат;
КонецФункции

Если в вашей базе настроена именно такая логика, и у вас возникли проблемы с печатью Т-6, выполните следующие действия:

  1. Перейдите в раздел Настройка, далее выберите пункт Дополнительные настройки.
  2. Найдите флажок «Удалять префиксы организации и ИБ из приказов».
  3. Если данный флажок включен (установлен), снимите его.
  4. Запишите настройки и попробуйте повторно сформировать печатную форму Т-6 из документа «Отпуск».

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

Причина №2: Использование скрытого поля «Первичный документ»

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

Рассмотрим, как устроен ввод номера для печати Т-6 в ЗУП 3.1 по шагам:

  1. Откройте проблемный документ «Отпуск».
  2. Прокрутите форму в самый низ. Там вы найдете свернутую группу (раскрывающуюся гиперссылку) «Первичный документ».
  3. Разверните эту группу, нажав на неё. Перед вами появятся скрытые поля, среди которых будет поле «Номер» и «Дата».
  4. Если это поле заполнено вручную (например, там случайно указали другой номер или пробел), то именно это значение пойдет в печать Т-6, игнорируя системный номер документа в базе данных.
  5. Если поле «Номер» в этой группе пустое, программа пытается сгенерировать номер для печати автоматически на основе системного номера документа. Заполните это поле вручную нужным вам номером, чтобы принудительно передать его на печать.

Причина №3: Наличие измененных пользовательских макетов

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

Выясним, редактировался ли макет в вашей базе данных:

  1. Перейдите в раздел Администрирование — Печатные формы, отчеты и обработки.
  2. Откройте ссылку Макеты печатных форм.
  3. Найдите в списке макет с именем «Приказ о предоставлении отпуска (Т-6)».
  4. Посмотрите на иконку рядом с наименованием макета. Если там отображается значок карандаша, это означает, что макет был изменен пользователем.
  5. В измененном макете могла быть случайно нарушена связь параметров (например, вместо параметра НомерДокумента был жестко прописан пробел или удалена соответствующая ячейка).
  6. Чтобы вернуть стандартный макет, выделите его и нажмите кнопку Использовать стандартный макет (или удалите пользовательские изменения).

Причина №4: Активные расширения конфигурации

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

Проанализируем ситуацию: для диагностики этой проблемы рекомендуется временно отключить активные расширения в копии базы данных (раздел Администрирование — Параметры учета — Печатные формы, отчеты и обработки — Расширения) и проверить, начнет ли выводиться номер в форме Т-6 на стандартном функционале. Для безопасного внесения изменений в формируемые документы подойдёт расширение для постобработки печатных форм БСП.

Причина №5: Ошибка платформы («мутабельное значение») и кэш базы данных

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

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

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

  1. Очистите кэш платформы 1С на рабочем компьютере пользователя. Для этого удалите базу из списка запуска 1С и добавьте её заново, либо вручную очистите папки кэша в каталоге %userprofile%\AppData\Local\1C\1Cv8\.
  2. Если база работает в клиент-серверном варианте, администратору необходимо перезапустить службу сервера «1С:Предприятие» для очистки серверного кэша метаданных.

Подводя итоги, отметим: если у вас пропадает номер в приказе Т-6, в первую очередь проверьте скрытое поле «Первичный документ» внутри самого отпуска, а затем обратите внимание на настройку удаления префиксов в разделе «Дополнительные настройки» программы. В качестве готового альтернативного решения можно использовать внешнюю печатную форму Т-6 и Т-6а для документа «Отпуск».

← На главную