Платформа 8.3.10, Конфигурация своя.
Необходимо получить из запускаемого отчета двоичные данные этого самого отчета. Если отчет запускается через Файл-Открыть, то в свойстве ИспользуемоеИмяФайла объекта отчета хранится полный путь к открытому файлу отчета и получить двоичные данные не составляет труда. Но, если отчет подключен как внешний отчет, то при открытии в свойстве ИспользуемоеИмяФайла объекта отчета хранится ссылка на на временное хранилище вида e1cib\tempstorage\... При попытке получения данных из временного хранилища по этой ссылке возникает ошибка:
Ошибка получения значения из временного хранилища
по причине:
Неправильный путь к файлу 'e1cib\tempstorage\...
Как получить двоичные данные самого отчета при открытии его как подключенного внешнего отчета?
Необходимо получить из запускаемого отчета двоичные данные этого самого отчета. Если отчет запускается через Файл-Открыть, то в свойстве ИспользуемоеИмяФайла объекта отчета хранится полный путь к открытому файлу отчета и получить двоичные данные не составляет труда. Но, если отчет подключен как внешний отчет, то при открытии в свойстве ИспользуемоеИмяФайла объекта отчета хранится ссылка на на временное хранилище вида e1cib\tempstorage\... При попытке получения данных из временного хранилища по этой ссылке возникает ошибка:
Ошибка получения значения из временного хранилища
по причине:
Неправильный путь к файлу 'e1cib\tempstorage\...
Как получить двоичные данные самого отчета при открытии его как подключенного внешнего отчета?
По теме из базы знаний
- СКД. Отчеты с картинками
- Разрабатываем отчет на СКД, содержащий данные из расширения
- Компонента ExchangeStruc (Структура Обмена). Прямой обмен данными между потоками, сессиями и окнами.
- Чтение из файла или выгрузка в файл: TXT, CSV, XLSX, DBF, XML, JSON с использованием Двоичных данных, Хранилища и Оповещением пользователю
- Описание формата контейнера 1С (CF, EPF, ERF, CFE) с помощью БНФ. Предлагается внешняя компонента на С
Найденные решения
(25)
Да, видимо это как раз и приходит тут путь который использовался при подключении, но по нему уже ничего не хранится.
Пока я вижу два варианта:
1. Определять имя подключенного отчета / обработки и далее создавать объект не из двоичных данных, а с использование ВнешниеОбработки.Создать(ИмяОбработки);
2. Добавить передачу в параметрах ссылку на элемент справочника внешних обработок при открытии и далее уже получать двоичные данные из хранилища.
В обоих случаях придется дописать конфигурацию. Пока не решил каким путем пойти.
Да, видимо это как раз и приходит тут путь который использовался при подключении, но по нему уже ничего не хранится.
Пока я вижу два варианта:
1. Определять имя подключенного отчета / обработки и далее создавать объект не из двоичных данных, а с использование ВнешниеОбработки.Создать(ИмяОбработки);
2. Добавить передачу в параметрах ссылку на элемент справочника внешних обработок при открытии и далее уже получать двоичные данные из хранилища.
В обоих случаях придется дописать конфигурацию. Пока не решил каким путем пойти.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот код. То есть мне нужны двоичные данные в хранилище самого отчета/обработки.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ИспользуемоеИмяФайла = РеквизитФормыВЗначение("Отчет").ИспользуемоеИмяФайла;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если СтрНачинаетсяС(ИспользуемоеИмяФайла, "e1cib") Тогда
АдресХранилищаДвоичныхДанныхОбработки = ИспользуемоеИмяФайла; // Тут ошибка получения данных!
Иначе
АдресХранилищаДвоичныхДанныхОбработки = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИспользуемоеИмяФайла), УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
Показать
странное у вас получение какое то.
Лично я вот таким образом получал двоичные данные из макета этой же самой обработки.
Нажимаем кнопку, получаем из макета ДД, у меня они там сериализованы. Но главное принцип. И все работает уже сто лет
Лично я вот таким образом получал двоичные данные из макета этой же самой обработки.
Нажимаем кнопку, получаем из макета ДД, у меня они там сериализованы. Но главное принцип. И все работает уже сто лет
&НаКлиенте
Процедура ПолучитьОписанияИзХранилища(Команда)
// Вставить содержимое обработчика.
ПолучимОписаниеИзХранилищаОбработки();
КонецПроцедуры
&НаСервере
Процедура ПолучимОписаниеИзХранилищаОбработки()
ДвоичныеДанные = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ХранилищеОписаний");
ПутьНаСервере = ПолучитьИмяВременногоФайла(".hbz");
ДвоичныеДанные.Записать(ПутьНаСервере);
попытка
СтруктураХранения = ЗначениеИзФайла(ПутьНаСервере);
ЗначениеВРеквизитФормы(СтруктураХранения, "СтруктураТаблиц");
исключение
конецпопытки;
//и подчистим за собой
УдалитьФайлы(ПутьНаСервере);
КонецПроцедуры
Показать
(22) Это не совсем адрес временного хранилища. Насколько я понимаю, это навигационная ссылка на реквизит справочника внешних отчетов с двоичными данными отчета и она была использована при подключении отчета через менеджер внешних отчетов. Как используя только ее можно добраться до двоичных данных - я не знаю.
(24)
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Подключить (Connect)
Синтаксис:
Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
Параметры:
<Путь> (обязательный)
Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки. Ссылка может быть получена методом ПолучитьНавигационнуюСсылку.
ВнешниеОбработкиМенеджер (ExternalDataProcessorsManager)
Подключить (Connect)
Синтаксис:
Подключить(<Путь>, <Имя>, <БезопасныйРежим>)
Параметры:
<Путь> (обязательный)
Тип: Строка.
Ссылка на реквизит объекта конфигурации, который содержит данные внешней обработки. Ссылка может быть получена методом ПолучитьНавигационнуюСсылку.
(25)
Да, видимо это как раз и приходит тут путь который использовался при подключении, но по нему уже ничего не хранится.
Пока я вижу два варианта:
1. Определять имя подключенного отчета / обработки и далее создавать объект не из двоичных данных, а с использование ВнешниеОбработки.Создать(ИмяОбработки);
2. Добавить передачу в параметрах ссылку на элемент справочника внешних обработок при открытии и далее уже получать двоичные данные из хранилища.
В обоих случаях придется дописать конфигурацию. Пока не решил каким путем пойти.
Да, видимо это как раз и приходит тут путь который использовался при подключении, но по нему уже ничего не хранится.
Пока я вижу два варианта:
1. Определять имя подключенного отчета / обработки и далее создавать объект не из двоичных данных, а с использование ВнешниеОбработки.Создать(ИмяОбработки);
2. Добавить передачу в параметрах ссылку на элемент справочника внешних обработок при открытии и далее уже получать двоичные данные из хранилища.
В обоих случаях придется дописать конфигурацию. Пока не решил каким путем пойти.
(13) Не. Там я решал такую же проблему. До двоичных данных добирался через справочник доп. отчетов и обработок. Находил там по имени, которое получал как в (16). И мне интересно - как это у тебя нет БСП, если используются подключаемые внешние отчеты? Или ты альтернативную подсистему нарисовал? :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот