Почему в 1С:КА и 1С:УТ появляется ошибка «Печатная форма недоступна» при печати УПД или счетов-фактур?

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

Каждый практикующий специалист по внедрению и сопровождению систем на платформе «1С:Предприятие 8» рано или поздно сталкивается с ситуацией, когда стандартный, годами отлаженный функционал внезапно дает сбой. Одной из таких неприятных неожиданностей в конфигурациях «1С:Комплексная автоматизация 2» (КА) и «1С:Управление торговлей 11» (УТ) является появление системного сообщения «Печатная форма недоступна» при попытке вывести на печать Универсальный передаточный документ (УПД) или Счет-фактуру.

Особенно остро эта проблема проявляется в периоды законодательных изменений или сразу после обновления конфигурации на новый релиз. Давайте детально проанализируем эту проблему, разберем скрытые механизмы работы конфигураций КА и УТ, выясним истинные причины блокировки печати и выработаем пошаговый алгоритм устранения этой ошибки.

Архитектурные изменения в логике печати 1С

Для того чтобы понять природу возникновения ошибки, нам необходимо заглянуть «под капот» современных конфигураций ERP-линейки. Начиная с определенных версий (период перехода на ставку НДС 20%), разработчики фирмы «1С» кардинально оптимизировали механизмы работы с торговыми и налоговыми документами.

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

Если по какой-то причине при проведении документа-основания (например, РеализацияТоваровУслуг или АктВыполненныхРабот) записи в регистре ДанныеОснованийСчетовФактур не сформировались, то при попытке нажать кнопку «Печать» алгоритм формирования УПД или Счета-фактуры вернет отказ, и пользователь увидит сообщение «Печатная форма недоступна».

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

Главные причины блокировки печатной формы

Рассмотрим подробнее ключевые факторы, из-за которых ломается механизм формирования печатной формы:

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

Пошаговый алгоритм диагностики и решения проблемы

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

Шаг 1. Анализ регистра «Данные оснований счетов-фактур»

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

  1. Откроем главное меню программы и перейдем в раздел «Функции для технического специалиста» (в старых версиях — «Все функции»).
  2. В списке регистров сведений найдем Данные оснований счетов-фактур.
  3. Установим отбор по измерению Документ-основание, выбрав нашу проблемную реализацию.
  4. Если список записей пуст, значит, мы нашли корень проблемы — при проведении документа реализации записи в этот регистр не сформировались.

Шаг 2. Проверка заполнения видов запасов

Поскольку формирование записей регистра напрямую завязано на табличную часть видов запасов, проверим ее состояние. В форме документа «Реализация товаров и услуг» откроем меню Еще -> Открыть виды запасов. Если эта табличная часть пуста или заполнена некорректно, система не сможет определить параметры НДС для регистра оснований. Попробуем выполнить перезаполнение:

  1. Разрегистрируем (распроведем) документ реализации.
  2. Вновь проведем его, чтобы система попыталась автоматически пересчитать виды запасов.
  3. Если автоматический расчет не срабатывает, обратим внимание на наличие активных расширений.

Шаг 3. Исключение влияния расширений

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

  1. Перейдем в раздел НСИ и администрирование — Печатные формы, отчеты и обработки — Расширения.
  2. Найдем расширения, которые работают со складским учетом, ценообразованием или заполнением реквизитов реализации.
  3. Временно снимем флаг Активно у подозрительного расширения.
  4. Повторим попытку проведения документа реализации и проверим, появились ли движения по регистру оснований. Если движения появились — проблему следует искать в программном коде данного расширения.

Шаг 4. Проверка и актуализация учетной политики

Иногда корни проблемы лежат в плоскости методологии учета. Проанализируем настройки учетной политики организации. Перейдем в настройки параметров учета и проверим, создана ли актуальная запись учетной политики на текущий отчетный период. Часто пользователи забывают скопировать и продлить учетную политику на новый календарный год, из-за чего алгоритмы определения ставок НДС и налогообложения начинают отрабатывать некорректно.

Шаг 5. Программное исправление ситуации (для разработчиков)

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


// Пример программного проведения документа с расчетом видов запасов
ДокументОбъект = СсылкаНаРеализацию.ПолучитьОбъект();

// Установим режим проведения
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

// При необходимости вызываем процедуру расчета видов запасов программно
ПараметрыПроведения = РасчетСистемныхПараметров.ПолучитьПараметрыПроведения(ДокументОбъект);
РасчетВидовЗапасовСервер.СформироватьВидыЗапасовДокумента(ДокументОбъект, ПараметрыПроведения);
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

Использование правильных методов проведения гарантирует, что все подписки на события сработают штатно, регистр сведений ДанныеОснованийСчетовФактур будет заполнен актуальными данными, а пользователи смогут без препятствий печатать УПД и счета-фактуры.

← На главную