В конфигурациях на базе обычных форм, таких как «Бухгалтерия государственного учреждения» редакции 1.0, разработчики часто сталкиваются с ситуацией, когда в режиме «Предприятие» кнопка «Печать» присутствует и выводит список форм, а в конфигураторе на форме документа этой кнопки нет. Это связано с особенностями построения интерфейса в толстом клиенте и использованием универсальных механизмов печати. Разберем подробно, где искать эти формы и как их редактировать.
Проанализируем ситуацию: если кнопки нет на визуальной схеме формы в конфигураторе, значит, она формируется динамически при открытии документа. Программа программно создает элементы управления на командной панели. Чтобы убедиться в этом, нам необходимо изучить программный код формы документа. Рассмотрим алгоритм поиска:
МЗ_Списание).ПриОткрытии.
УниверсальныеМеханизмы.УстановитьКнопкиПечати(мКнопкиПечати, ЭтаФорма, ЭлементыФормы.ОсновныеДействияФормы);
Именно этот код отвечает за то, что при запуске программы в меню «Печать» подтягиваются все доступные для данного документа формы. Список этих форм может храниться как внутри самого документа, так и во внешних справочниках.
Если форма является стандартной для данного документа, её макет должен находиться в дереве метаданных. Проверим это по шагам:
1. В конфигураторе развернем ветку документа МЗ_Списание (Списание материалов).
2. Перейдем на закладку «Макеты».
3. Если нужного названия (например, «Акт о списании») там нет, это не значит, что его не существует. В БГУ 1.0 многие формы первичных документов являются унифицированными и используются в разных документах одновременно.
Многие регламентированные формы (согласно приказам Минфина, например, формы 0504143, 0504230) вынесены в Общие макеты. Это позволяет системе использовать один и тот же шаблон для разных видов документов. Выясним, как их найти:
Ctrl + Shift + F).0504230) или фрагмент названия.Ф_ или Акт_.Если нужная форма в меню печати отделена от остальных горизонтальной чертой, это явный признак того, что перед нами внешняя печатная форма. Она не хранится в конфигураторе как часть метаданных. Разберем, как её найти в пользовательском режиме:
.epf на рабочий стол.Файл — Открыть, внести правки в макет или модуль, сохранить и загрузить обратно в справочник.Если макет найден, но вам нужно поправить логику заполнения полей, необходимо найти процедуру Печать. В БГУ 1.0 она чаще всего располагается в Модуле объекта документа. Проанализируем типичную структуру:
Процедура Печать(НазваниеМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
Если НазваниеМакета = "АктОСписании" Тогда
// Здесь происходит формирование табличного документа
ТабДок = СформироватьАктСписания();
УниверсальныеМеханизмы.НапечататьДокумент(ТабДок, КоличествоЭкземпляров, НаПринтер, "Акт о списании");
КонецЕсли;
КонецПроцедуры
Обратите внимание: если при установке точки останова в процедуре Печать программа не останавливается именно на нужной вам форме, значит, вызов идет в обход стандартного модуля. В этом случае стоит проверить Общие модули, такие как ЗаполнениеДокументов или специализированные модули учета материальных запасов.
В современных версиях БГУ 1.0 реализован механизм «Пользовательских макетов». Это позволяет изменить внешний вид формы (шрифты, логотипы, текст), не меняя конфигурацию. Рассмотрим этот способ:
Если вы все еще не можете найти источник формирования данных, выполним следующие действия:
1. Используйте Регистр сведений «Пользовательские макеты печатных форм» через «Все функции». Там наглядно видно, какие шаблоны переопределены пользователями.
2. Если форма формируется в общем модуле на стороне сервера, убедитесь, что в параметрах запуска 1С включена отладка (параметр -debug).
3. Посмотрите в модуле формы документа переменную мКнопкиПечати. Это массив структур, где программно прописываются имена макетов и функций-обработчиков. Если вы видите там ссылку на функцию другого модуля — это и есть ключ к разгадке.
Таким образом, редактирование «невидимой» формы сводится либо к поиску общего макета в конфигурации, либо к извлечению внешней обработки из базы данных, либо к созданию пользовательского переопределения в интерфейсе программы.