Новый пакет записывается в новый временный PDF, существующий экспорт не используется.
Где и как запускать
Полный модуль собственной управляемой формы; толстый клиент Windows. Временные документы принадлежат только этой форме.
Подготовка
Собственная отдельная конфигурация УчебнаяКонфигурацияСинтаксиса, платформа 8.5.1.1343. Создайте внешнюю обработку с пустой управляемой формой, командой Выполнить и её кнопкой.
Откройте обработку в толстом клиенте Windows. Вставьте полный модуль одного урока. При наличии Асинх используйте асинхронную процедуру из примера, не убирайте Ждать.
Серверная функция создаёт только две собственные формы: Книга / 3 и Ручка / 1. Временное хранилище привязано к УникальныйИдентификатор этой формы, адреса сохраняются в собственном массиве.
Пока выполняется запись, форму не закрывайте. После завершения очищаются только адреса, созданные этим модулем. Файл оставляется для ручной проверки и удаления пользователем.
Запись выбирает новое временное имя на машине клиента. Существующий файл не перезаписывается. Для файла печати используется расширение print: это внутренний файл печати, не PDF и не текстовый отчёт.
Урок печати требует строковые реквизиты УчебныйПринтер и Подтверждение. Введите точное имя собственного тестового устройства и фразу ПЕЧАТАЮ ТОЛЬКО УЧЕБНЫЕ ДАННЫЕ.
При создании руководства печать, сохранение и запуск 1С не выполнялись. Для PDF вручную проверьте обе учебные формы; ненулевой размер файла сам по себе не доказывает содержимое.
Перем УчебныйПакет;
Перем УчебныеАдреса;
Перем Занято;
&НаКлиенте
Процедура Выполнить(Команда)
Если Занято = Истина Тогда
ВызватьИсключение "Дождитесь завершения собственной предыдущей операции";
КонецЕсли;
Если УчебныеАдреса <> Неопределено Тогда
ВызватьИсключение "Предыдущие учебные данные ещё не освобождены; закройте только учебную форму и откройте заново";
КонецЕсли;
Созданные = СоздатьСобственныйПакет();
УчебныйПакет = Созданные.Пакет;
УчебныеАдреса = Созданные.Адреса;
Попытка
Имя = НовоеСобственноеИмя("pdf");
Сообщить(УчебныйПакет.Состав.Количество() = 2);
УчебныйПакет.Записать(Имя, ТипФайлаПакетаОтображаемыхДокументов.PDF);
ПроверитьСобственныйФайл(Имя);
Исключение
ОшибкаОперации = ОписаниеОшибки();
ОсвободитьСобственныйПакет();
ВызватьИсключение ОшибкаОперации;
КонецПопытки;
ОсвободитьСобственныйПакет();
КонецПроцедуры
&НаСервере
Функция СоздатьСобственныйПакет()
Адреса = Новый Массив;
Пакет = Новый ПакетОтображаемыхДокументов;
Пакет.Заголовок = "guide-owned: Книга и Ручка";
Пакет.Вывод = ИспользованиеВывода.Разрешить;
Пакет.КоличествоЭкземпляров = 1;
Для Номер = 1 По 2 Цикл
Документ = Новый ТабличныйДокумент;
Если Номер = 1 Тогда
Название = "Книга";
Количество = "3";
Иначе
Название = "Ручка";
Количество = "1";
КонецЕсли;
Документ.Область(1, 1).Текст = "Только собственный учебный товар";
Документ.Область(2, 1).Текст = Название;
Документ.Область(2, 2).Текст = Количество;
Документ.Область(, 1, , 1).ШиринаКолонки = 30;
Документ.КоличествоЭкземпляров = 7;
Адрес = ПоместитьВоВременноеХранилище(Документ, ЭтаФорма.УникальныйИдентификатор);
Адреса.Добавить(Адрес);
Элемент = Пакет.Состав.Добавить(Адрес);
Элемент.Наименование = Название;
КонецЦикла;
Возврат Новый Структура("Пакет,Адреса", Пакет, Адреса);
КонецФункции
&НаСервере
Процедура УдалитьСобственныеАдреса(Адреса)
Для Каждого Адрес Из Адреса Цикл
УдалитьИзВременногоХранилища(Адрес);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОсвободитьСобственныйПакет()
Если УчебныеАдреса <> Неопределено Тогда
УдалитьСобственныеАдреса(УчебныеАдреса);
УчебныеАдреса = Неопределено;
КонецЕсли;
УчебныйПакет = Неопределено;
КонецПроцедуры
&НаКлиенте
Функция НовоеСобственноеИмя(Расширение)
Имя = ПолучитьИмяВременногоФайла(Расширение);
Проверка = Новый Файл(Имя);
Если Проверка.Существует() Тогда
ВызватьИсключение "Новый путь уже занят; файл не перезаписываем";
КонецЕсли;
Возврат Имя;
КонецФункции
&НаКлиенте
Процедура ПроверитьСобственныйФайл(Имя)
Файл = Новый Файл(Имя);
Если Файл.Существует() Тогда
Сообщить(Файл.Размер() > 0);
Сообщить("Файл появился; вручную проверьте содержимое: " + Имя);
Иначе
Сообщить("По собственному локальному пути файла нет, успешную запись не утверждаем: " + Имя);
КонецЕсли;
КонецПроцедурыРазбор по шагам
Получить пакет двух своих документов и проверить число элементов.
Получить новое имя PDF и проверить отсутствие файла по нему.
Записать с ТипФайлаПакетаОтображаемыхДокументов.PDF, не с перечислением табличного документа.
Проверить появление и размер файла. После завершения удалить собственные адреса, оставляя PDF для ручного просмотра.
Как проверить результат
Проверка состава даёт Истина, проверка размера — Истина при появлении файла.
Вручную откройте PDF и найдите Книгу/3 и Ручку/1. Проверка размера не заменяет этот шаг.
Ожидаемый результат
Полный синхронный экспорт двух собственных печатных форм.
На что обратить внимание
Сохранение не равно печати на физическом устройстве.
После ошибки может остаться собственный неполный файл: он не считается готовым PDF.
Этот путь клиентский; временные адреса документов созданы на сервере и привязаны к форме.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.