Платформа 8.3.10, Конфигурация своя.
Необходимо получить из запускаемого отчета двоичные данные этого самого отчета. Если отчет запускается через Файл-Открыть, то в свойстве ИспользуемоеИмяФайла объекта отчета хранится полный путь к открытому файлу отчета и получить двоичные данные не составляет труда. Но, если отчет подключен как внешний отчет, то при открытии в свойстве ИспользуемоеИмяФайла объекта отчета хранится ссылка на на временное хранилище вида e1cib\tempstorage\... При попытке получения данных из временного хранилища по этой ссылке возникает ошибка:
Ошибка получения значения из временного хранилища
по причине:
Неправильный путь к файлу 'e1cib\tempstorage\...

Как получить двоичные данные самого отчета при открытии его как подключенного внешнего отчета?
---
Да, видимо это как раз и приходит тут путь который использовался при подключении, но по нему уже ничего не хранится.

Пока я вижу два варианта:
1. Определять имя подключенного отчета / обработки и далее создавать объект не из двоичных данных, а с использование ВнешниеОбработки.Создать(ИмяОбработки);
2. Добавить передачу в параметрах ссылку на элемент справочника внешних обработок при открытии и далее уже получать двоичные данные из хранилища.
В обоих случаях придется дописать конфигурацию. Пока не решил каким путем пойти.
---
вы бы лучше код свой показали. Как именно получаете двоичные данные макета.
---
Вот код. То есть мне нужны двоичные данные в хранилище самого отчета/обработки.

```1c
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    ИспользуемоеИмяФайла = РеквизитФормыВЗначение("Отчет").ИспользуемоеИмяФайла;

    КонецПроцедуры

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    Если СтрНачинаетсяС(ИспользуемоеИмяФайла, "e1cib") Тогда
    АдресХранилищаДвоичныхДанныхОбработки = ИспользуемоеИмяФайла; // Тут ошибка получения данных!
    Иначе
    АдресХранилищаДвоичныхДанныхОбработки = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИспользуемоеИмяФайла), УникальныйИдентификатор);
    КонецЕсли;

    КонецПроцедуры
```
---
Вернее ошибка не там где комментарий указан, а далее когда использую
ПолучитьИзВременногоХранилища(АдресХранилищаДвоичныхДанныхОбработки)
---
странное у вас получение какое то.
Лично я вот таким образом получал двоичные данные из макета этой же самой обработки.
Нажимаем кнопку, получаем из макета ДД, у меня они там сериализованы. Но главное принцип. И все работает уже сто лет

```1c
    &НаКлиенте
    Процедура ПолучитьОписанияИзХранилища(Команда)
    // Вставить содержимое обработчика.
    ПолучимОписаниеИзХранилищаОбработки();
    КонецПроцедуры

    &НаСервере
    Процедура ПолучимОписаниеИзХранилищаОбработки()
    ДвоичныеДанные = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ХранилищеОписаний");
    ПутьНаСервере = ПолучитьИмяВременногоФайла(".hbz");
    ДвоичныеДанные.Записать(ПутьНаСервере);
    попытка
    СтруктураХранения = ЗначениеИзФайла(ПутьНаСервере);

    ЗначениеВРеквизитФормы(СтруктураХранения, "СтруктураТаблиц");
    исключение
    конецпопытки;
    //и подчистим за собой
    УдалитьФайлы(ПутьНаСервере);
    КонецПроцедуры
```
---
То есть сам файл отчета/обработки хранится в макете. Как вариант конечно, хотя может и не совсем удобный - при каждом сохранении отчета/обработки необходимо еще перезагружать файл в макете..
Может есть какие то более удобные способы....
---
"То есть сам файл отчета/обработки хранится в макете" - нет.
---
У меня пока нет, это я так понял предложение (5)
---
Я решил, что ты на мой пост отвечаешь. Звиняй, косоглазие какое-то с утра.
---
Тю! Находишь свою обработку в справочнике "ДополнительныеОтчетыИОбработки" и достаешь двоичные данные из хранилища.
---
А как найти не передавая параметров при открытии?
---
Имя можно "выпарсить" из того самого "ИспользуемоеИмяФайла" и найти по нему.
---
Как, если там хранится ссылка на временное хранилище?
---
Извини. Ввел в заблуждение. Я не придумал ничего лучше, чем доставать имя из свойства формы "ИмяФормы".

```1c
    ИмяОбработки = СтрПолучитьСтроку(СтрЗаменить(ИмяФормы, ".", Символы.ПС), 2);
```
---
Так, получу я имя отчета, а что дальше то я не соображу. Через ВнешниеОтчеты могу создать этот отчет, но как сохранить его в файл или получить двоичные данные?
---
В смысле, не сообразишь? Под этим именем отчет хранится в справочнике "ДополнительныеОтчетыИОбработки". Находишь нужный элемент справочника. А у него прямо в реквизите хранилища значений лежат двоичные данные отчета.
---
Да в том то и дело что имя элемента справочника может отличаться :(
Мне больше интересно, что за адрес временного хранилища приходит в ИспользуемоеИмяФайла и почему его нельзя получить из хранилища.
---
Это не совсем адрес временного хранилища. Насколько я понимаю, это навигационная ссылка на реквизит справочника внешних отчетов с двоичными данными отчета и она была использована при подключении отчета через менеджер внешних отчетов. Как используя только ее можно добраться до двоичных данных - я не знаю.
---
Скорее всего это адрес во временном хранилище из которого был создан отчет, но после создания оно было удалено, а адрес то остался...
---
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Подключить (Connect)
Синтаксис:
Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
Параметры:
<Путь> (обязательный)
Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки. Ссылка может быть получена методом ПолучитьНавигационнуюСсылку.
---
Да, видимо это как раз и приходит тут путь который использовался при подключении, но по нему уже ничего не хранится.

Пока я вижу два варианта:
1. Определять имя подключенного отчета / обработки и далее создавать объект не из двоичных данных, а с использование ВнешниеОбработки.Создать(ИмяОбработки);
2. Добавить передачу в параметрах ссылку на элемент справочника внешних обработок при открытии и далее уже получать двоичные данные из хранилища.
В обоих случаях придется дописать конфигурацию. Пока не решил каким путем пойти.
---
Ну кроме ссылки во временном хранилище у внешних отчетов есть ещё и постоянная ссылка в справочнике.. Кто мешает тянуть из него?
---
Если ты рожаешь фоновое выполнение процедуры из обработки, то их уже есть у нас :)
---
В БСП то все проще, там при вызове подключенного отчета или обработки передается ссылка на справочник ВнешниеОтчетыИОбработки. У меня нет, и так не хочется дописывать :)
---
Не. Там я решал такую же проблему. До двоичных данных добирался через справочник доп. отчетов и обработок. Находил там по имени, которое получал как в (16). И мне интересно - как это у тебя нет БСП, если используются подключаемые внешние отчеты? Или ты альтернативную подсистему нарисовал? :)
---
Ну нарисовал не я, а до меня :) и без БСП, а я вот дорисовываю. Заменять на БСП надо бы, но пока нет время (