Как убрать лишние печатные формы из стандартной кнопки «Печать» в 1С:УНФ?

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

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

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

Способ 1. Настройка видимости через администрирование БСП (без программирования)

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

Выполним следующие шаги для настройки подменю:

  1. Перейдем в раздел Компания (в зависимости от версии интерфейса это также может быть раздел Настройки или Администрирование).
  2. В открывшемся меню найдем и выберем пункт Печатные формы, отчеты и обработки.
  3. В появившемся окне перейдем по гиперссылке Подменю «Печать» (в некоторых версиях БСП она называется «Настройка подменю "Печать"»).
  4. Перед нами откроется дерево всех документов и справочников конфигурации, для которых зарегистрированы команды печати. Развернем ветку, соответствующую документу Заказ покупателя (в некоторых редакциях он может называться «Заказ клиента»).
  5. В развернутом списке мы увидим все доступные стандартные печатные формы. Для того чтобы скрыть ненужные макеты, снимем флажки (галочки) со всех пунктов, кроме необходимых нам форм: «Заказ покупателя» и «Счет на оплату». Внешние печатные формы при этом останутся нетронутыми.
  6. Нажмем кнопку Записать и закрыть для сохранения внесенных изменений.

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

Способ 2. Индивидуальная настройка команд на форме документа

Иногда требуется скрыть печатные формы не для всех сотрудников организации, а только для определенной роли или конкретного пользователя. В платформе «1С:Предприятие 8.3» предусмотрен удобный механизм персональной настройки формы.

Разберем по шагам, как настроить видимость кнопок непосредственно из документа:

  1. Откроем список документов Заказы покупателей и зайдем в любой существующий документ.
  2. В правом верхнем углу формы найдем командную панель и нажмем кнопку Еще.
  3. В выпадающем меню выберем пункт Настройка команд....
  4. В открывшемся окне настройки команд перейдем к разделу, отвечающему за команды печати.
  5. Снимем флажки видимости с тех команд печати, которые не должны отображаться на панели.
  6. Определим область действия настроек. Если вы обладаете правами администратора, система предложит вам два варианта сохранения:
    • Сохранить для текущего пользователя — настройка применится только к вашему сеансу.
    • Сохранить для всех пользователей (или выбрать конкретную группу пользователей) — это позволит централизованно управлять интерфейсом сотрудников.
  7. Нажмем кнопку сохранения и переоткроем документ для проверки результата.

Способ 3. Управление видимостью из карточки внешней печатной формы (ВПФ)

Если в вашей системе зарегистрирована внешняя печатная форма, например, «!Заказ покупателя», и вы хотите оптимизировать состав меню печати параллельно с ее подключением, БСП позволяет сделать это напрямую из карточки дополнительной обработки.

Рассмотрим этот алгоритм подробнее:

  1. Перейдем в раздел Администрирование, далее выберем пункт Печатные формы, отчеты и обработки и откроем справочник Дополнительные отчеты и обработки.
  2. Найдем в списке нашу зарегистрированную внешнюю печатную форму «!Заказ покупателя» и откроем ее карточку.
  3. В форме карточки обратим внимание на табличную часть со списком команд или специальную кнопку Настроить видимость команд на командной панели.
  4. В открывшемся окне мы можем гибко сопоставить нашу внешнюю печатную форму с документом-потребителем и сразу же отключить отображение стандартных (встроенных) команд печати для этого документа.
  5. После внесения изменений нажмем кнопку Записать и закрыть.

Способ 4. Программный метод с использованием расширения конфигурации

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

Посмотрим, где и как формируется список печатных форм. В БСП за этот процесс отвечает процедура ДобавитьКомандыПечати, расположенная в модуле менеджера конкретного документа (в нашем случае — документа Документ.ЗаказПокупателя). В эту процедуру в качестве параметра передается таблица значений КомандыПечати, в которую программно добавляются все доступные команды.

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

Проанализируем пример готового программного кода, который решает поставленную задачу:


&После("ДобавитьКомандыПечати")
Процедура Расш_ДобавитьКомандыПечати(КомандыПечати)
	
	// Определим массив идентификаторов команд печати, которые необходимо скрыть
	МассивУдаляемыхКоманд = Новый Массив;
	
	// Заполняем массив системными именами лишних печатных форм
	// Внимание: точные идентификаторы можно узнать в отладчике, исследовав таблицу КомандыПечати
	МассивУдаляемыхКоманд.Добавить("ЗаказПокупателяСогласие");
	МассивУдаляемыхКоманд.Добавить("ЗаказПокупателяСпецификация");
	МассивУдаляемыхКоманд.Добавить("АктОбОказанииУслуг");
	МассивУдаляемыхКоманд.Добавить("РасходнаяНакладная");
	
	// Обходим массив удаляемых команд и исключаем их из таблицы команд печати
	Для Каждого ИмяКоманды Из МассивУдаляемыхКоманд Цикл
		
		// Осуществляем поиск строки в таблице КомандыПечати по колонке Идентификатор
		СтрокаКоманды = КомандыПечати.Найти(ИмяКоманды, "Идентификатор");
		
		// Если лишняя команда найдена, удаляем ее из коллекции
		Если СтрокаКоманды <> Неопределено Тогда
			КомандыПечати.Удалить(СтрокаКоманды);
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

Рассмотрим подробнее логику работы данного кода. Когда платформа вызывает стандартное формирование команд печати для документа Заказ покупателя, сначала выполняется типовой код конфигурации, заполняющий таблицу КомандыПечати всеми предусмотренными разработчиками макетами. После этого управление передается нашей процедуре в расширении благодаря директиве &После.

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

← На главную