При работе в программных продуктах 1С на обычных формах (таких как 1С:Управление производственным предприятием, редакция 1.3) пользователи часто сталкиваются с необходимостью кастомизации печатных форм. Для этого разработчики создают внешние печатные формы (ВПФ), которые загружаются в базу данных через пользовательский режим. Однако иногда возникает ситуация, когда после загрузки новой внешней обработки из списка доступных вариантов печати полностью пропадает типовой встроенный макет (например, встроенный счет-фактура). Вместо него отображается только внешняя печатная форма, а стандартный вариант становится недоступен.
В этой статье мы подробно разберем, почему так происходит, как функционирует механизм автоподмены макетов в 1С на обычных формах, и рассмотрим несколько простых и безопасных способов вернуть стандартную встроенную форму без привлечения программистов и без внесения изменений в конфигурацию через Конфигуратор.
Для начала проанализируем ситуацию и поймем, как внешняя печатная форма может «стереть» или скрыть встроенную форму из интерфейса документа. В конфигурациях на обычных формах (УПП 1.3, УТ 10.3, КА 1.1, БП 2.0) за хранение и подключение внешних печатных форм отвечает справочник «Дополнительные внешние отчеты и обработки».
Когда мы регистрируем новую внешнюю печатную форму в системе, мы привязываем её к определенному типу документа (в нашем случае — к документу «Счет-фактура выданный» или «Счет-фактура полученный»). В карточке регистрации внешней обработки присутствует специальная табличная часть «Принадлежность печатной формы», в которой есть ключевая колонка — «Заменяемая печатная форма». Работает этот механизм следующим образом:
Печать() из внешней обработки, полностью игнорируя встроенный код.Таким образом, если у вас пропала встроенная форма счета-фактуры, это означает, что при регистрации внешней печатной формы в справочнике была случайно или намеренно указана заменяемая встроенная форма. Никакого физического удаления программного кода в конфигурации при этом не происходит.
Рассмотрим подробнее три практических способа решения этой проблемы в пользовательском режиме 1С:Предприятие.
Этот способ является наиболее предпочтительным, если вам необходимо вернуть стандартную встроенную форму счета-фактуры, но при этом вы хотите сохранить возможность печатать и новую внешнюю форму. Разберем этот процесс по шагам:
Del (Delete) на клавиатуре или нажмем на кнопку с крестиком внутри ячейки. Поле должно стать пустым.Если внешняя печатная форма больше не должна использоваться для данного документа и вам нужно полностью убрать её из меню печати конкретного объекта, выполним следующие действия:
Delete на клавиатуре. Строка привязки будет удалена.После этого внешняя форма полностью исчезнет из меню печати документа «Счет-фактура», а управление печатью целиком вернется к стандартным встроенным алгоритмам конфигурации.
В случае, если загруженная внешняя обработка оказалась ошибочной, неактуальной или более не требуется для использования в организации, мы можем быстро отключить её влияние на всю систему:
Del в списке).Как только на элемент справочника будет установлена пометка на удаление, система автоматически перестанет использовать эту обработку для подмены печатных форм. Все документы, которые были привязаны к этой ВПФ, мгновенно вернут свои стандартные встроенные печатные формы в исходное состояние.
Давайте заглянем в программный код, чтобы лучше понять техническую сторону вопроса. Как разработчики 1С реализовали этот функционал? В модуле менеджера или модуле объекта документа «Счет-фактура» всегда присутствует функция, которая формирует список доступных печатных форм. Посмотрим на пример кода, который возвращает структуру встроенных макетов в зависимости от даты документа:
Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
СтруктураМакетов = Новый Структура;
Если НЕ ЗначениеЗаполнено(Дата) Тогда
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура 283");
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура 575");
СтруктураМакетов.Вставить("СчетФактура84" , "Счет-фактура 84");
СтруктураМакетов.Вставить("УниверсальныйПередаточныйДокумент", "Универсальный передаточный документ (УПД)");
Иначе
Если Дата < '20040216' Тогда
СтруктураМакетов.Вставить("СчетФактура575", "Счет-фактура");
ИначеЕсли Дата < '20060530' Тогда
СтруктураМакетов.Вставить("СчетФактура84", "Счет-фактура");
ИначеЕсли Дата < '20130101' Тогда
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура");
Иначе
СтруктураМакетов.Вставить("СчетФактура283", "Счет-фактура");
СтруктураМакетов.Вставить("УниверсальныйПередаточныйДокумент", "Универсальный передаточный документ (УПД)");
СтруктураМакетов.Вставить("УниверсальныйКорректировочныйДокумент", "Универсальный корректировочный документ (УКД)");
КонецЕсли;
КонецЕсли;
Возврат СтруктураМакетов;
КонецФункции
Когда открывается форма документа, система обращается к механизму регистрации внешних печатных форм. Общий модуль работы с ВПФ получает эту структуру встроенных макетов и сопоставляет её со справочником дополнительных отчетов и обработок. Если в справочнике обнаруживается активная запись, у которой в поле «Заменяемая печатная форма» указан ключ, совпадающий с ключом структуры (например, СчетФактура283), система программно удаляет это свойство из структуры встроенных макетов и добавляет вместо него команду вызова внешней обработки. Таким образом, разработчикам не требуется комментировать или удалять строки кода в Конфигураторе — управление полностью переключается через настройки в режиме «1С:Предприятие».
Для полноты картины и расширения кругозора сравним поведение обычных форм с современными управляемыми формами на платформе 1С v8.3 (в таких конфигурациях, как 1С:Бухгалтерия 3.0, 1С:ERP, 1С:КА 2 и 1С:ЗУП 3.1). В этих конфигурациях используется Библиотека стандартных подсистем (БСП), и механизмы работы с печатными формами здесь существенно отличаются:
Мы подробно разобрали все нюансы управления видимостью встроенных и внешних печатных форм в программе 1С:УПП 1.3 на обычных формах. Использование стандартных механизмов платформы для настройки видимости макетов — это наиболее безопасный способ кастомизации программы. Он позволяет избежать снятия конфигурации с поддержки, исключает ошибки при последующих обновлениях и позволяет в любой момент вернуть систему к первоначальному типовому виду всего в несколько кликов мыши в пользовательском режиме.