Почему кнопка печати в 1С отображается только значком принтера без текста и как это изменить

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

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

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

Разберем причину: Логика «Минимизации визуального шума»

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

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

  1. Зачем выводить текст «Печать», если международная иконка принтера и так понятна любому пользователю?
  2. Зачем заставлять пользователя делать лишний клик для выбора единственного пункта в меню?

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

Как работает механизм программно

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

Рассмотрим упрощенно, как это выглядит в модуле менеджера объекта. Обычно команды описываются в процедуре ДобавитьКомандыПечати. Рассмотрим пример:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
    // Добавление одной команды
    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.Идентификатор = "СчетНаОплату";
    КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
    КомандаПечати.ПроверкаПроведенности = Ложь;
    
КонецПроцедуры

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

Варианты решения: как вернуть текст на кнопку

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

Способ 1: Создание «технической» формы-пустышки

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

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

Способ 2: Использование расширения конфигурации

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

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


&НаСервере
Процедура ПослеДобавленияКомандПечати()
    // Находим созданную группу или кнопку печати
    КнопкаПечать = Элементы.Найти("ФормаКомандыПечати"); 
    Если КнопкаПечать <> Неопределено Тогда
        // Принудительно устанавливаем отображение "Картинка и текст"
        КнопкаПечать.Отображение = ОтображениеКнопкиКоманднойПанели.КартинкаИТекст;
    КонецЕсли;
КонецПроцедуры

Важно: Имена элементов могут отличаться в зависимости от версии БСП, поэтому предварительно стоит изучить структуру элементов формы в отладчике.

Способ 3: Настройка видимости стандартных форм

Иногда ситуация возникает из-за того, что стандартные (заводские) печатные формы были скрыты пользователем вручную через меню «Еще — Изменить состав кнопок» или через настройки прав доступа. Если у документа есть штатные формы, но они выключены, и осталась только одна внешняя — кнопка «схлопнется».

Попробуйте проверить настройки видимости:

  1. Зайдите в документ.
  2. Нажмите кнопку «Еще» (в правом верхнем углу).
  3. Выберите пункт «Изменить форму».
  4. Найдите группу, отвечающую за печать, и убедитесь, что флажки стоят у нескольких элементов.

Юзабилити-нюансы

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

Выясним также, что в последних версиях платформы 8.3.x реализован интеллектуальный механизм скрытия текста кнопок при нехватке места на экране. Если монитор имеет низкое разрешение или окно 1С открыто не на весь экран, система может самостоятельно убирать названия кнопок, оставляя только пиктограммы. В этом случае изменение программного кода может не дать результата, так как приоритет будет у настроек компактности интерфейса «Такси».

Резюме

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

← На главную