При работе с специализированными интерфейсами, такими как Рабочее место кассира (РМК) в старых редакциях «1С:Розница» (например, 1.0 или 2.2 на обычных формах), разработчики часто сталкиваются с проблемой ограниченности функционала. В таких режимах платформа намеренно скрывает системные меню, командные панели и заголовки окон, чтобы кассир не мог случайно закрыть программу или перейти в другие разделы. Однако иногда возникает задача вывести печатную форму (например, этикетку на принтер Zebra или товарный чек) именно с возможностью предварительного просмотра. Рассмотрим подробно, как реализовать эту задачу, если стандартная кнопка «Просмотр» недоступна.
Если вы создаете собственную обработку или модифицируете существующую форму для вывода печатной формы, наиболее надежным способом будет размещение ТабличныйДокумент непосредственно на форме. Проанализируем, как сделать так, чтобы у этого документа появилась своя командная панель с нужными кнопками.
Для реализации этого метода выполним следующие шаги в конфигураторе:
ТабличныйДокумент.Разберем ситуацию, когда данные в этот документ выводятся программно. Пример кода для заполнения такого поля:
// Допустим, ТабДок - это реквизит формы, размещенный на экране
ТабДок.Очистить();
Макет = ПолучитьМакет("МакетЭтикетки");
Область = Макет.ПолучитьОбласть("Строка");
// Заполнение параметров области...
ТабДок.Вывести(Область);
// Теперь на форме отобразится документ, а над ним — панель с кнопкой лупы (просмотра)
В платформе 1С:Предприятие 8 существует встроенная возможность вызвать стандартное диалоговое окно предварительного просмотра напрямую из кода, даже если у формы нет никаких кнопок. Для этого используется метод Напечатать() с определенным параметром.
Проанализируем пример кода, который принудительно открывает окно просмотра:
// Создаем объект табличного документа
ТабДок = Новый ТабличныйДокумент;
// ... логика формирования документа (Вывести, Присоединить) ...
// Вызываем окно предварительного просмотра
// Используем системное перечисление РежимИспользованияПечатныхФорм
ТабДок.Напечатать(РежимИспользованияПечатныхФорм.ПредварительныйПросмотр);
Важный момент: этот метод работает в толстом клиенте и позволяет обойти ограничения «пустого» интерфейса, так как открывает модальное или отдельное системное окно, поверх текущего РМК.
Иногда требуется просто вывести документ в отдельном окне, которое по умолчанию обладает полным набором системных меню (Файл, Печать, Просмотр). Выясним, как это сделать с помощью метода Показать().
Рассмотрим синтаксис этого метода:
ТабДок.Показать("Печать этикеток", , Истина);
В данном случае третий параметр Истина может помочь в режиме обычных форм сделать окно более «автономным». Если системное меню в конфигурации полностью отключено для роли пользователя, то даже в этом окне кнопок может не быть. В такой ситуации мы возвращаемся к Методу 1 — внедрению документа в форму с собственной командной панелью.
Если вы добавили кнопку, вызвали метод Напечатать(), но окно не открывается или кнопки печати неактивны («серые»), необходимо проверить права доступа пользователя. В 1С существует специфическое право, без которого любые манипуляции с печатными формами будут блокированы.
Проанализируем настройки в конфигураторе:
Выясним причину, по которой предварительный просмотр для этикеток может работать некорректно. Принтеры этикеток часто используют специализированные драйверы. Если ваша печатная форма формируется как обычный табличный документ 1С, стандартный просмотр покажет ее корректно.
Однако, если для печати на Zebra используется прямой посыл команд на языке ZPL или EPL (через текстовый файл или компоненту), то стандартный «Предварительный просмотр» 1С будет абсолютно бесполезен, так как он не умеет интерпретировать низкоуровневые команды принтера. В этом случае решением будет формирование «картинки-заглушки» для пользователя в самой форме 1С, имитирующей вид будущей этикетки.
Подводя итог, если вы работаете в интерфейсе РМК «Розницы 1.0» и вам нужно дать кассиру возможность увидеть документ перед печатью:
ТабличныйДокумент.Напечатать(РежимИспользованияПечатныхФорм.ПредварительныйПросмотр) для быстрого вызова окна.ПолеТабличногоДокумента на форму вашей обработки и включите в его свойствах отображение Командной панели. Это даст пользователю локальный набор инструментов для масштабирования и просмотра, не зависящий от глобального меню программы.