ПакетОтображаемыхДокументов.ИмяПринтера

Свойства · PrinterName

Тип: Строка, Неопределено. Имя принтера, на котором нужно напечатать. Неопределено - значение определяется родительским пакетом. Если родительского пакета нет, то печать выполняется на принтер по умолчанию.

Полное описание, параметры и ограничения

ПакетОтображаемыхДокументов.ИмяПринтера (RepresentableDocumentBatch.PrinterName)

ПакетОтображаемыхДокументов (RepresentableDocumentBatch)

ИмяПринтера (PrinterName)

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

Использование:
Чтение и запись.
Описание:
Тип: Строка, Неопределено.
Имя принтера, на котором нужно напечатать.
Неопределено - значение определяется родительским пакетом. Если родительского пакета нет, то печать выполняется на принтер по умолчанию.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

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

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

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

Настроить состав пакета и копии отдельного документа

В памяти две собственные формы. Для двух копий Книги создаём вложенный пакет; количество 7 у исходного табличного документа пакет игнорирует.

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

Полный модуль собственной управляемой формы; толстый клиент Windows. Временные документы принадлежат только этой форме.

Подготовка

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

  2. Откройте обработку в толстом клиенте Windows. Вставьте полный модуль одного урока. При наличии Асинх используйте асинхронную процедуру из примера, не убирайте Ждать.

  3. Серверная функция создаёт только две собственные формы: Книга / 3 и Ручка / 1. Временное хранилище привязано к УникальныйИдентификатор этой формы, адреса сохраняются в собственном массиве.

  4. Пока выполняется запись, форму не закрывайте. После завершения очищаются только адреса, созданные этим модулем. Файл оставляется для ручной проверки и удаления пользователем.

  5. Запись выбирает новое временное имя на машине клиента. Существующий файл не перезаписывается. Для файла печати используется расширение print: это внутренний файл печати, не PDF и не текстовый отчёт.

  6. Урок печати требует строковые реквизиты УчебныйПринтер и Подтверждение. Введите точное имя собственного тестового устройства и фразу ПЕЧАТАЮ ТОЛЬКО УЧЕБНЫЕ ДАННЫЕ.

  7. При создании руководства печать, сохранение и запуск 1С не выполнялись. Для PDF вручную проверьте обе учебные формы; ненулевой размер файла сам по себе не доказывает содержимое.

Перем УчебныйПакет;
Перем УчебныеАдреса;
Перем Занято;

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

&НаСервере
Функция СоздатьСобственныйПакет()
    Адреса = Новый Массив;
    Пакет = Новый ПакетОтображаемыхДокументов;
    Пакет.Заголовок = "guide-owned: Книга и Ручка";
    Пакет.Вывод = ИспользованиеВывода.Разрешить;
    Пакет.КоличествоЭкземпляров = 1;
    Для Номер = 1 По 2 Цикл
        Документ = Новый ТабличныйДокумент;
        Если Номер = 1 Тогда
            Название = "Книга";
            Количество = "3";
        Иначе
            Название = "Ручка";
            Количество = "1";
        КонецЕсли;
        Документ.Область(1, 1).Текст = "Только собственный учебный товар";
        Документ.Область(2, 1).Текст = Название;
        Документ.Область(2, 2).Текст = Количество;
        Документ.Область(, 1, , 1).ШиринаКолонки = 30;
        Документ.КоличествоЭкземпляров = 7;
        Адрес = ПоместитьВоВременноеХранилище(Документ, ЭтаФорма.УникальныйИдентификатор);
        Адреса.Добавить(Адрес);
        Элемент = Пакет.Состав.Добавить(Адрес);
        Элемент.Наименование = Название;
    КонецЦикла;
    Возврат Новый Структура("Пакет,Адреса", Пакет, Адреса);
КонецФункции

&НаСервере
Процедура УдалитьСобственныеАдреса(Адреса)
    Для Каждого Адрес Из Адреса Цикл
        УдалитьИзВременногоХранилища(Адрес);
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ОсвободитьСобственныйПакет()
    Если УчебныеАдреса <> Неопределено Тогда
        УдалитьСобственныеАдреса(УчебныеАдреса);
        УчебныеАдреса = Неопределено;
    КонецЕсли;
    УчебныйПакет = Неопределено;
КонецПроцедуры

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

  1. Сервер создаёт документы и два собственных адреса, привязанных к форме. Состав содержит элементы, а Данные элемента — адрес или вложенный пакет, не ТабличныйДокумент.

  2. Вставить собственную пробную копию, найти индекс, сдвинуть и удалить. Исходные документы во временном хранилище остаются.

  3. Поместить Книгу во вложенный пакет с двумя экземплярами. Неопределено у его принтера/двусторонности/разбора означает наследование от родительского пакета.

  4. Запретить вывод корневого пакета: этот урок ничего не печатает и не сохраняет. Затем очистить собственный состав и удалить только свои два адреса.

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

  1. Одиннадцать булевых проверок дают Истина.

  2. Вложенный пакет имеет 2 экземпляра, корневой 1. Это проверка настроек, не подсчёт реально напечатанной бумаги.

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

Полный образец коллекции пакета и настройки копий без печати.

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

  1. Состав только для чтения, но его коллекцию можно изменять.

  2. В Вывод и ТочностьПечати учитывается корневой пакет, ограничения вложенного пакета не являются самостоятельной защитой.

  3. Не удаляйте чужие адреса временного хранилища: массив этого урока создаётся только вместе с его собственными документами.

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

Открыть печать пакета с ручным подтверждением

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

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

Полный модуль собственной управляемой формы; толстый клиент Windows. Временные документы принадлежат только этой форме.

Подготовка

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

  2. Откройте обработку в толстом клиенте Windows. Вставьте полный модуль одного урока. При наличии Асинх используйте асинхронную процедуру из примера, не убирайте Ждать.

  3. Серверная функция создаёт только две собственные формы: Книга / 3 и Ручка / 1. Временное хранилище привязано к УникальныйИдентификатор этой формы, адреса сохраняются в собственном массиве.

  4. Пока выполняется запись, форму не закрывайте. После завершения очищаются только адреса, созданные этим модулем. Файл оставляется для ручной проверки и удаления пользователем.

  5. Запись выбирает новое временное имя на машине клиента. Существующий файл не перезаписывается. Для файла печати используется расширение print: это внутренний файл печати, не PDF и не текстовый отчёт.

  6. Урок печати требует строковые реквизиты УчебныйПринтер и Подтверждение. Введите точное имя собственного тестового устройства и фразу ПЕЧАТАЮ ТОЛЬКО УЧЕБНЫЕ ДАННЫЕ.

  7. При создании руководства печать, сохранение и запуск 1С не выполнялись. Для PDF вручную проверьте обе учебные формы; ненулевой размер файла сам по себе не доказывает содержимое.

Перем УчебныйПакет;
Перем УчебныеАдреса;
Перем Занято;

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

&НаСервере
Функция СоздатьСобственныйПакет()
    Адреса = Новый Массив;
    Пакет = Новый ПакетОтображаемыхДокументов;
    Пакет.Заголовок = "guide-owned: Книга и Ручка";
    Пакет.Вывод = ИспользованиеВывода.Разрешить;
    Пакет.КоличествоЭкземпляров = 1;
    Для Номер = 1 По 2 Цикл
        Документ = Новый ТабличныйДокумент;
        Если Номер = 1 Тогда
            Название = "Книга";
            Количество = "3";
        Иначе
            Название = "Ручка";
            Количество = "1";
        КонецЕсли;
        Документ.Область(1, 1).Текст = "Только собственный учебный товар";
        Документ.Область(2, 1).Текст = Название;
        Документ.Область(2, 2).Текст = Количество;
        Документ.Область(, 1, , 1).ШиринаКолонки = 30;
        Документ.КоличествоЭкземпляров = 7;
        Адрес = ПоместитьВоВременноеХранилище(Документ, ЭтаФорма.УникальныйИдентификатор);
        Адреса.Добавить(Адрес);
        Элемент = Пакет.Состав.Добавить(Адрес);
        Элемент.Наименование = Название;
    КонецЦикла;
    Возврат Новый Структура("Пакет,Адреса", Пакет, Адреса);
КонецФункции

&НаСервере
Процедура УдалитьСобственныеАдреса(Адреса)
    Для Каждого Адрес Из Адреса Цикл
        УдалитьИзВременногоХранилища(Адрес);
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ОсвободитьСобственныйПакет()
    Если УчебныеАдреса <> Неопределено Тогда
        УдалитьСобственныеАдреса(УчебныеАдреса);
        УчебныеАдреса = Неопределено;
    КонецЕсли;
    УчебныйПакет = Неопределено;
КонецПроцедуры

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

  1. Указать точный собственный тестовый принтер и фразу подтверждения. Она очищается до создания/печати пакета.

  2. Проверить два элемента и одну копию пакета. КоличествоЭкземпляров = 7 у исходных документов игнорируется по контракту пакета.

  3. Вызвать Напечатать с Использовать, вручную проверить устройство и диапазон.

  4. В первом тесте нажать Отмена. После возврата освободить только свои временные адреса.

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

  1. Две проверки дают Истина. Без фразы и имени устройства вызова печати нет.

  2. Отмена не считается успешной печатью. Для подтверждения реального результата нужно проверить очередь/выход собственного устройства вручную.

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

Полный ограниченный пример ручного запуска печати пакета.

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

  1. Возврат управления от Напечатать не доказывает появление бумаги.

  2. Пользователь может изменить принтер в диалоге; обязательно проверить его перед подтверждением.

  3. Не использовать этот код с адресами рабочих печатных форм.

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

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

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

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

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