ВложениеPDF.ТипСвязи

Свойства · RelationshipType

Тип: ТипСвязиВложенияPDF. Указывет взаимоотношение между вложенным файлом и содержимым PDF-документа.

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

ВложениеPDF.ТипСвязи (PDFAttachment.RelationshipType)

ВложениеPDF (PDFAttachment)

ТипСвязи (RelationshipType)

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

Использование:
Чтение и запись.
Описание:
Тип: ТипСвязиВложенияPDF.
Указывет взаимоотношение между вложенным файлом и содержимым PDF-документа.
Доступность:

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

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

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

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

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

Удалить элемент коллекции, не удаляя файл на диске

Добавляем две собственные заметки, удаляем одну по объекту и вторую по индексу. Очистить относится только к нашей коллекции.

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

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

Подготовка

  1. Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

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

  3. Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.

Вложения = Новый КоллекцияВложенийPDF;
ТекстJSON = "{""товар"":""Книга"",""количество"":3}";
БайтыJSON = ПолучитьДвоичныеДанныеИзСтроки(ТекстJSON, КодировкаТекста.UTF8, Ложь);
Вложения.Добавить("товар.json", БайтыJSON, "application/json", ТипСвязиВложенияPDF.Данные);
Заметка = Вложения.Добавить("заметка.txt", ПолучитьДвоичныеДанныеИзСтроки("Учебный документ", КодировкаТекста.UTF8, Ложь));
Сообщить(Заметка.ТипСодержимого = "application/octet-stream");
Сообщить(Заметка.ТипСвязи = ТипСвязиВложенияPDF.НеУстановлено);
Сообщить(Вложения.Количество() = 2);
Вложения.Удалить(Заметка);
Сообщить(Вложения.Количество() = 1);
Сообщить(Вложения.Найти("заметка.txt") = Неопределено);
Вложения.Удалить(0);
Сообщить(Вложения.Количество() = 0);
Вложения.Добавить("повтор.json", БайтыJSON, "application/json", ТипСвязиВложенияPDF.Дополнение);
Сообщить(Вложения.Количество() = 1);
Вложения.Очистить();
Сообщить(Вложения.Количество() = 0);

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

  1. У второго вложения не задаём MIME-тип и связь: получаем документированные значения по умолчанию.

  2. Удалить принимает либо объект собственного вложения, либо индекс. После первого удаления известно, что остался ровно один элемент.

  3. Индекс 0 здесь допустим только после проверки собственного количества; в произвольной коллекции так делать нельзя.

  4. Повторное добавление и Очистить показывают отличие удаления одного элемента от очистки всех элементов.

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

  1. Восемь сравнений Истина, конечное количество 0.

  2. Никакой вызов УдалитьФайлы не выполняется; коллекция не является каталогом файлов.

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

Отработаны оба варианта удаления и очистка собственной коллекции вложений.

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

  1. Удаление из этой коллекции не переписывает уже существующий PDF: для этого есть отдельный метод ЗаписьPDF.

  2. После удаления объект Заметка не нужно выдавать за элемент коллекции, даже если переменная ещё содержит его.

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

Упаковать JSON товара во вложение PDF

Создаём собственное вложение с понятным именем, MIME-типом и связью Данные. Читаем содержимое и безопасно сопоставляем имя, объект и индекс.

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

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

Подготовка

  1. Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.

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

  3. Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.

  4. Вложение пока существует только в коллекции: контейнер PDF в этом первом упражнении ещё не создаётся.

Вложения = Новый КоллекцияВложенийPDF;
ТекстJSON = "{""товар"":""Книга"",""количество"":3}";
БайтыJSON = ПолучитьДвоичныеДанныеИзСтроки(ТекстJSON, КодировкаТекста.UTF8, Ложь);
Вложения.Добавить("товар.json", БайтыJSON, "application/json", ТипСвязиВложенияPDF.Данные);
ФайлJSON = Вложения.Найти("товар.json");
Если ФайлJSON = Неопределено Тогда
    ВызватьИсключение "Нет собственного JSON-вложения";
КонецЕсли;
Позиция = Вложения.Индекс(ФайлJSON);
Если Позиция < 0 Или Позиция >= Вложения.Количество() Тогда
    ВызватьИсключение "Индекс собственного вложения вне коллекции";
КонецЕсли;
Сообщить(Вложения.Получить(Позиция) = ФайлJSON);
Сообщить(ФайлJSON.ИмяФайла = "товар.json");
Сообщить(ФайлJSON.ТипСодержимого = "application/json");
Сообщить(ФайлJSON.ТипСвязи = ТипСвязиВложенияPDF.Данные);
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(ФайлJSON.Содержимое, КодировкаТекста.UTF8) = ТекстJSON);
Сообщить(Вложения.Найти("нет-файла.json") = Неопределено);

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

  1. Кодируем заданный JSON в UTF-8 без BOM; это настоящие байты, а не файловый путь.

  2. Добавить принимает имя, содержимое, MIME-тип и тип связи. Данные означает отношение вложения к содержимому документа.

  3. Поиск по имени проверяем на отсутствие; вычисляем и проверяем индекс перед Получить.

  4. Декодируем собственное содержимое и сравниваем с исходным JSON. MIME-тип не выполняет такую проверку сам.

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

  1. Шесть сравнений Истина. Строка JSON содержит товар Книга и количество 3.

  2. На диске не появляется товар.json; ИмяФайла — имя внутри будущего PDF.

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

Создано и проверено конкретное JSON-вложение без чтения чужих файлов.

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

  1. ТипСодержимого — строковая метка; она не превращает произвольные байты в корректный JSON.

  2. Имя вложения нельзя без проверки использовать как путь извлечения: оно может содержать опасные компоненты.

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

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

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

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

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