Конструктор без аргументов не открывает документ. Открываем собственный PDF отдельным вызовом и отличаем пустую коллекцию от ошибки чтения.
Где и как запускать
Серверная процедура отдельной учебной базы; собственный PDF и потоки в памяти.
Подготовка
Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
Все исходные байты создаются самим примером в памяти. Файлы, сеть, справочники и документы не нужны.
Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.
Документ PDF строится из собственной ячейки Книга: 3 шт. Внешний PDF, установленный PDF-редактор, криптографический сертификат и реальные персональные данные не нужны.
Файловый путь нигде не используется. Для просмотра в PDF-программе сохраните только полученные собственные двоичные данные в отдельно выбранный новый учебный файл.
Чтение = Неопределено;
Запись = Неопределено;
ПотокЧтения = Неопределено;
ПотокPDF = Новый ПотокВПамяти;
Документ = Новый ТабличныйДокумент;
Документ.Область("A1").Текст = "Книга: 3 шт.";
Документ.Область("A1").ЦветТекста = Новый Цвет(30, 90, 180);
Попытка
Документ.Записать(ПотокPDF, ТипФайлаТабличногоДокумента.PDF);
БайтыPDF = ПотокPDF.ЗакрытьИПолучитьДвоичныеДанные();
ПотокPDF = Неопределено;
ПотокЧтения = БайтыPDF.ОткрытьПотокДляЧтения();
Чтение = Новый ЧтениеPDF;
Чтение.Открыть(ПотокЧтения);
ПустойПеречень = Чтение.ПолучитьВложения();
Сообщить(ПустойПеречень.Количество() = 0);
Сообщить(ПустойПеречень.Найти("товар.json") = Неопределено);
Сообщить(БайтыPDF.Размер() > 0);
Исключение
Если Чтение <> Неопределено Тогда
Чтение.Закрыть();
КонецЕсли;
Если Запись <> Неопределено Тогда
Запись.Закрыть();
КонецЕсли;
Если ПотокЧтения <> Неопределено Тогда
ПотокЧтения.Закрыть();
КонецЕсли;
Если ПотокPDF <> Неопределено Тогда
ПотокPDF.Закрыть();
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Если Чтение <> Неопределено Тогда
Чтение.Закрыть();
КонецЕсли;
Если Запись <> Неопределено Тогда
Запись.Закрыть();
КонецЕсли;
Если ПотокЧтения <> Неопределено Тогда
ПотокЧтения.Закрыть();
КонецЕсли;
Если ПотокPDF <> Неопределено Тогда
ПотокPDF.Закрыть();
КонецЕсли;Разбор по шагам
Собственный табличный документ экспортирован без третьего аргумента вложений.
Создаём неинициализированный ЧтениеPDF, затем Открыть получает поток; до этого ПолучитьВложения не вызывается.
Пустой список корректно открытого документа имеет количество 0, а поиск возвращает Неопределено.
Объект чтения и поток закрываются и при успехе, и при ошибке.
Как проверить результат
Три сравнения Истина; PDF не пустой, но вложений нет.
Не нужно считать отсутствие вложений повреждением PDF.
Ожидаемый результат
Разделены создание объекта, открытие документа и чтение пустой коллекции.
На что обратить внимание
Конструктор без аргументов сам по себе не создаёт пустой PDF.
Именем несуществующего вложения нельзя заменить проверку успешного открытия документа.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.