Получает индекс элемента коллекции.
Синтаксис
Индекс(<Элемент>)Полное описание, параметры и ограничения
КоллекцияВложенийPDF.Индекс (PDFAttachmentCollection.IndexOf)
КоллекцияВложенийPDF (PDFAttachmentCollection)
Индекс (IndexOf)
Доступен, начиная с версии 8.3.16.
Синтаксис:
Индекс(<Элемент>)
Параметры:
<Элемент> (необязательный)
Тип: ВложениеPDF.
Элемент, индекс которого требуется получить.
Возвращаемое значение:
Тип: Число.
Если элемент не найден возвращается -1.
Описание:
Получает индекс элемента коллекции.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.16.
Методическая информация
Практические примеры
Упаковать JSON товара во вложение PDF
Создаём собственное вложение с понятным именем, MIME-типом и связью Данные. Читаем содержимое и безопасно сопоставляем имя, объект и индекс.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
Все исходные байты создаются самим примером в памяти. Файлы, сеть, справочники и документы не нужны.
Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.
Вложение пока существует только в коллекции: контейнер 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") = Неопределено);Разбор по шагам
Кодируем заданный JSON в UTF-8 без BOM; это настоящие байты, а не файловый путь.
Добавить принимает имя, содержимое, MIME-тип и тип связи. Данные означает отношение вложения к содержимому документа.
Поиск по имени проверяем на отсутствие; вычисляем и проверяем индекс перед Получить.
Декодируем собственное содержимое и сравниваем с исходным JSON. MIME-тип не выполняет такую проверку сам.
Как проверить результат
Шесть сравнений Истина. Строка JSON содержит товар Книга и количество 3.
На диске не появляется товар.json; ИмяФайла — имя внутри будущего PDF.
Ожидаемый результат
Создано и проверено конкретное JSON-вложение без чтения чужих файлов.
На что обратить внимание
ТипСодержимого — строковая метка; она не превращает произвольные байты в корректный JSON.
Имя вложения нельзя без проверки использовать как путь извлечения: оно может содержать опасные компоненты.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Подготовить вложение CSV и освоить всю коллекцию
Создаём собственные UTF-8 байты строки книги, добавляем вложение, читаем и меняем его четыре свойства, удаляем только свою коллекцию в памяти.
Где и как запускать
Полный серверный общий модуль УчебныйPDF собственной учебной конфигурации; только собственные PDF-байты в памяти.
Подготовка
Отдельная собственная учебная база 8.5.1.1343: серверный общий модуль УчебныйPDF. Вставьте полный модуль одного урока и вызовите ВыполнитьПример() своей серверной командой.
Имя конфигурации должно быть УчебнаяКонфигурацияСинтаксиса. Все данные создаются кодом: строка Книга / 3 / 250 / 750 и собственные текстовые вложения.
Исходный PDF получается настоящим экспортом собственного ТабличныйДокумент в ПотокВПамяти. Никакого файла с неизвестным происхождением или рабочего печатного макета не требуется.
Чтение и повторная запись выполняются в памяти. Примеры не печатают, не обращаются к интернету и не меняют документы базы.
Проверки размеров, страниц и вложений не доказывают вид штампа или оттенки серого. Для визуального контроля используйте отдельный урок просмотра собственного PDF; этот серверный модуль окна не открывает.
Процедура ВыполнитьПример() Экспорт
Содержимое = ПолучитьДвоичныеДанныеИзСтроки("Книга;3;250;750", КодировкаТекста.UTF8, Ложь);
Вложения = Новый КоллекцияВложенийPDF;
Вложения.Добавить("guide-owned-book.csv", Содержимое, "text/csv", ТипСвязиВложенияPDF.Данные);
Элемент = Вложения.Найти("guide-owned-book.csv");
Если Элемент = Неопределено Тогда
ВызватьИсключение "Собственное вложение не найдено";
КонецЕсли;
Сообщить(Вложения.Количество() = 1);
Сообщить(Вложения.Получить(0) = Элемент);
Сообщить(Вложения.Индекс(Элемент) = 0);
Сообщить(Элемент.ИмяФайла = "guide-owned-book.csv");
Сообщить(Элемент.ТипСодержимого = "text/csv");
Сообщить(Элемент.ТипСвязи = ТипСвязиВложенияPDF.Данные);
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Элемент.Содержимое, КодировкаТекста.UTF8) = "Книга;3;250;750");
Элемент.ИмяФайла = "guide-owned-book.txt";
Элемент.ТипСодержимого = "text/plain";
Элемент.ТипСвязи = ТипСвязиВложенияPDF.Дополнение;
Элемент.Содержимое = ПолучитьДвоичныеДанныеИзСтроки("Книга: 3 × 250 = 750", КодировкаТекста.UTF8, Ложь);
Сообщить(Вложения.Найти("guide-owned-book.txt") = Элемент);
Сообщить(Вложения.Найти("нет-такого.txt") = Неопределено);
Вложения.Удалить(Элемент);
Сообщить(Вложения.Количество() = 0);
Вложения.Добавить("guide-owned-one.txt", Содержимое);
Вложения.Добавить("guide-owned-two.txt", Содержимое);
Вложения.Удалить(0);
Сообщить(Вложения.Получить(0).ИмяФайла = "guide-owned-two.txt");
Вложения.Очистить();
Сообщить(Вложения.Количество() = 0);
КонецПроцедурыРазбор по шагам
Получить собственные двоичные данные без временного файла и создать отдельную КоллекцияВложенийPDF.
Вызвать Добавить как процедуру без возвращаемого элемента. Получить настоящий элемент через Найти, индекс и Получить.
Прочитать MIME, тип связи и содержимое. После переименования заменить содержимое, MIME и связь согласованно.
Удалить элемент объектом, затем отдельный элемент индексом. Очистить только созданную коллекцию.
Как проверить результат
Двенадцать булевых проверок должны дать Истина; собственное CSV читается обратно как Книга;3;250;750.
После последней Очистить в коллекции 0 элементов. Ни один файл на диске не создавался и не удалялся.
Ожидаемый результат
Реальная коллекция вложений с двумя перегрузками удаления и изменением собственного вложения.
На что обратить внимание
Добавить не возвращает ВложениеPDF: не пишите Элемент = Вложения.Добавить(...). У ВложениеPDF нет конструктора.
MIME-тип и тип связи описывают вложение, но не проверяют его безопасность. Эти байты созданы собственным кодом.
Изменение отдельной коллекции не записывает PDF автоматически. Для встраивания нужен следующий урок.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.