ГрафическаяСхема.Напечатать

Методы · Print

Выводит графическую схему на печать.

Синтаксис

Напечатать(<ДиалогПечати>)
Полное описание, параметры и ограничения

ГрафическаяСхема.Напечатать (GraphicalSchema.Print)

ГрафическаяСхема (GraphicalSchema)

Напечатать (Print)

Доступен, начиная с версии 8.2.

Синтаксис:
Напечатать(<ДиалогПечати>)
Параметры:

<ДиалогПечати> (необязательный)
Тип: РежимИспользованияДиалогаПечати.
Указывает необходимость показа диалога печати перед отправкой документа на принтер.
Значение по умолчанию: НеИспользовать.
Описание:

Выводит графическую схему на печать.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

Примечание:
Только для графической схемы, вставленной в поле графической схемы.
Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Показать карту и отдельно подтвердить печать

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

Где и как запускать

Полный модуль управляемой формы Windows: серверная функция и клиентская асинхронная команда. Просмотр выполняется на клиенте; печать только по явному действию пользователя.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

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

  6. В этой отдельной пустой конфигурации Учебная85 добавьте Задачи → УчебнаяЗадача: длина номера 9, тип Строка, автонумерация; наименование длиной 100. Добавьте реквизит Комментарий (Строка, 100), без проверки заполнения.

  7. Добавьте Бизнес-процессы → УчебныйПроцесс: длина номера 9, тип Строка, автонумерация, реквизит Комментарий (Строка, 100), без проверки заполнения. В свойстве Задача выберите УчебнаяЗадача.

  8. Карта маршрута: одна точка старта Старт → одна одиночная точка действия ПодготовитьКнигу → одна точка завершения Финиш. Соедините их стрелками; в представлении точки действия укажите Подготовить учебную книгу.

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

  10. Все имена здесь относятся к новым учебным объектам, не к рабочей КА2/УНФ/УТ/БП. Каждый фрагмент запускайте отдельно на сервере в ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

  11. В этих упражнениях процесс не записывается и не запускается. Исследуется копия карты маршрута в памяти; печать на физический принтер не вызывается.

  12. Полный код этого урока вставьте в модуль управляемой формы учебной внешней обработки в Windows, без помещения процедур внутрь другого обработчика. Сервер возвращает только свои двоичные данные; новый процесс не записывает и не запускает.

  13. Сделайте команду ВыполнитьУрок и назначьте соответствующий клиентский обработчик из кода. Этот вариант предназначен для тонкого или толстого клиента Windows, не для веб-клиента.

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

  15. Показать открывает окно просмотра/редактирования собственной копии. Любые правки в нём относятся к копии, не записывают бизнес-процесс и не запускают маршрут.

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

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

Разбор по шагам

  1. Двоичные данные возвращены сервером только для своего учебного процесса; клиент получает отдельную графическую схему.

  2. Показать открывает окно схемы, не отправляет её на принтер.

  3. ВопросАсинх требует отдельного согласия. Любой результат кроме Да завершает урок до Напечатать.

  4. Напечатать принимает РежимИспользованияДиалогаПечати, не Булево. Здесь явно Использовать, а не автоматическая печать по умолчанию.

  5. Завершение диалога не доказывает физическое получение листа; отмена пользователем тоже возможна.

Как проверить результат

  1. При Нет есть окно учебной карты и сообщение Печать не вызывалась; задания печати не инициированы этим кодом.

  2. При Да сначала показывается диалог принтера. Для отдельной проверки отмените его или выберите только свой тестовый виртуальный принтер; результат осмотрите самостоятельно.

Ожидаемый результат

Разделены просмотр, согласие, диалог печати и фактический результат принтера.

На что обратить внимание

  1. Не заменяйте параметр диалога значением Ложь: это другой тип API.

  2. Не запускайте урок с рабочими документами и принтером по умолчанию без проверки выбора.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.