Приветствую. Подскажите или подтолкните в какую сторону копать.
БП 3.0 крайний релиз, платформа 8.3.18, клиент-сервер.
Есть внешний отчет, который является выгруженным типовым отчетом. В нем изменено имя (добавлено "_" на конце), т.е. явно отличается от типового.
Этот внешний отчет добавлен в качестве дополнительного в базу.
Есть необходимость выполнять длительную операцию (формирование таб.документа в фоне). В Модуле объекта отчета добавлена экспортная процедура.
1. при открытии отчета через "файл-открыть" (да именно) - процедура в фоне выполняется, отлично
2. но при открытии отчета в самой программе - процедура не выполняется, т.к. неправильно задано имя файла... (скрин - выделено место ошибки)

Какое необходимо задать имяфайла, если отчет добавлен в дополнительные отчеты?
П.с. Используемоеимяфайла при таком раскладе выдает навигационную ссылку формата "e1cib\tempstorage\....."
При попытке отправить в "имяфайла" имя внешней обработки - результат: обработка с данным именем не найдена.
---
В общем, как ситуация решилась.
Если отчет добавлен в качестве дополнительного в справочник ДополнительныеОтчетыИОбработки, то необходимо использовать
 - ссылку на этот отчет как ДополнительнаяОбработкаСсылка
 - ЭтоВнешняяОбработка = Истина
- ВыполняемыйМетод - "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"
- Параметры отчета

Если отчет используется как внешний, без добавления в справочник ДополнительныеОтчетыИОбработки, тогда
- ИмяОтчета - полное имя файла доступное для сервера
- ЭтоВнешнийОтчет = Истина
- ВыполняемыйМетод - "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОтчета"
- Параметры отчета
---
в какой-то из своих обработок использую такую функцию, посмотрите/попробуйте

```1c
    &НаСервере
    Функция ПолучитьИмяФайлаОбрабокиНаСервере()

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

    Возврат лкАдрес;

    КонецФункции
```
---
Если обработка добавлена в справочник ДополнительныеОтчетыИОбработки, то переменная лкАдрес принимает значение вида "e1cib\tempstorage\5dfa922d-0c1f-4019-9e93-37549cd73be5"
Но при передачи этого имени далее по алгоритму (для запуска фонового задания) выдает ошибку

Каталог не обнаружен 'e1cib\tempstorage\cfc3c070-f2ad-42f4-8824-4d5a34a4a54b'
{ОбщийМодуль.ДлительныеОперации.Модуль(932)}: Отчет = ВнешниеОтчеты.Создать(Параметры.ИмяОтчета, БезопасныйРежим);
---
В общем, как ситуация решилась.
Если отчет добавлен в качестве дополнительного в справочник ДополнительныеОтчетыИОбработки, то необходимо использовать
 - ссылку на этот отчет как ДополнительнаяОбработкаСсылка
 - ЭтоВнешняяОбработка = Истина
- ВыполняемыйМетод - "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОбработки"
- Параметры отчета

Если отчет используется как внешний, без добавления в справочник ДополнительныеОтчетыИОбработки, тогда
- ИмяОтчета - полное имя файла доступное для сервера
- ЭтоВнешнийОтчет = Истина
- ВыполняемыйМетод - "ДлительныеОперации.ВыполнитьПроцедуруМодуляОбъектаОтчета"
- Параметры отчета
---
Спасибо, то же столкнулся. Остается прописать подстановку по условию запуска. только как определить в каком режиме запускается обработка?
---
При открытии отчета через Файл-Открыть

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

Получится путь к файлу отчета на диске клиента.

А при открытии подключенной внешней обработки путь будет вида "e1cib\tempstorage\5dfa922d-0c1f-4019-9e93-37549cd73be5"
---
нашел решение, но пока не очень нравится - через попытку