Как программно открыть внешний отчет из "Дополнительных отчетов и обработок" и передать параметры (при помощи БСП)

09.10.20

Разработка - БСП (Библиотека стандартных подсистем)

Пример, как при помощи БСП программно открыть внешний отчет/обработку из "Дополнительные отчеты и обработки" и передать параметры...

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Обработки-примеры, названные в статье
.zip 16,76Kb
1145
1145 Скачать бесплатно

Дано: конфигурация на платформе 1С 8.3. В "Дополнительные отчеты и обработки" загружен отчет или обработка.

Задача: открыть данный отчет/обработку программно в коде, например, по кнопке.

В моем случае нужно было на одну из форм документа в конфигурации добавить кнопку, которая бы открывала внешний отчет (зарегистрированный через дополнительные отчеты и обработки), с фильтром по данному документу. Чтобы не изменять саму конфигурацию, было сделано расширение к данному документу (расширения здесь не будут рассматриваться, данное описание только в качестве примера), которое добавляло кнопку на форму документа.

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

В сети интернет много примеров, как открыть внешний отчет или обработку. Большинство из них содержит код загрузки из файла, если это внешний файл отчета.

Здесь же мы будем использовать готовую функцию загрузки, которая содержится в библиотеке стандартных подсистем (БСП - имеется почти во всех популярных конфигурациях, будь то бухгалтерия, зарплата, торговля и т.п., поэтому можно смело ей пользоваться).

Итак, в БСП есть модуль работы со справочником "Дополнительные отчеты и обработки" (ДополнительныеОтчетыИОбработки), в частности есть процедура открытия отчета и функция подключения внешнего отчета:

 

  1. Процедура ВыполнитьОткрытиеФормыОбработки
ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, Форма, ОбъектыНазначения)
  1. Функция ПодключитьВнешнююОбработку
ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(Ссылка)

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

Один из вариантов использовать первую процедуру, но он мне не понравился из-за необходимости излишних действий, чтобы заполнить переменную ВыполняемаяКоманда, а также тем, что передать параметры в отчет можно только массивом (ОбъектыНазначения).

Поэтому решила использовать функцию под номером 2, что подключает нужный отчет/обработку, который затем можно открыть по имени, возвращаемому данной функцией.

Итак, сам пример (полный код):
 

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

// Открытие внешней обработки без параметров 
&НаКлиенте
Процедура ОткрытьВнешнююОбработку(Команда)
    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("ВнешняяОбработкаПример", Неопределено, Ложь); 
КонецПроцедуры

// Открытие внешней обработки с передачей параметров
&НаКлиенте
Процедура ОткрытьВнешнююОбработкуСПараметром(Команда)
    ПараметрыОбработки = Новый Структура;
    ПараметрыОбработки.Вставить(НазваниеПараметра, ЗначениеПараметра);
    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("ВнешняяОбработкаПример", ПараметрыОбработки, Ложь);
КонецПроцедуры

// Открытие внешнего отчета СКД без параметров 
&НаКлиенте
Процедура ОткрытьВнешнийОтчетСКД(Команда)
    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("ВнешнийОтчетСКДПример", Неопределено, Истина);
КонецПроцедуры

// Открытие внешнего отчета СКД с передачей параметров
&НаКлиенте
Процедура ОткрытьВнешнийОтчетСКДсПараметром(Команда)  
    ПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
    ПользовательскиеНастройки.ДополнительныеСвойства.Вставить(НазваниеПараметра, ЗначениеПараметра);
    // добавляем другие нужные параметры по желанию
    //ПользовательскиеНастройки.ДополнительныеСвойства.Вставить(НазваниеПараметра2, ЗначениеПараметра2);
    //ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("Период", Новый СтандартныйПериод(ДатаНачала,ДатаОкончания));   
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
    ПараметрыОтчета.Вставить("КлючВарианта", "ФормированиеПоПараметрам");
    ПараметрыОтчета.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройки);   
    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("ВнешнийОтчетСКДПример", ПараметрыОтчета, Истина);
КонецПроцедуры

// процедура, открывающая отчет/обработку по имени, заданному в допобработках
&НаКлиенте
Процедура ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами(ИмяОтчетаОбработки, ПараметрыОткрытия, ЭтоОтчет, РодительскаяФорма =Неопределено)
    ВнешнийОтчетОбработкаДляОткрытияСсылка = ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере (ИмяОтчетаОбработки);  
     // ВЫЗОВ ИЗ БСП ФУНКЦИИ ПОДКЛЮЧЕНИЯ ВНЕШНЕЙ ОБРАБОТКИ
    ИмяОбработкиСлужебное =ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВнешнийОтчетОбработкаДляОткрытияСсылка);
    Если ЭтоОтчет Тогда
        ОткрытьФорму("ВнешнийОтчет." + ИмяОбработкиСлужебное + ".Форма", ПараметрыОткрытия, РодительскаяФорма);
    Иначе
        ОткрытьФорму("ВнешняяОбработка." + ИмяОбработкиСлужебное + ".Форма", ПараметрыОткрытия, РодительскаяФорма);
    КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
    Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции

Процедуры:

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

Пример формы с кнопками, вызывающими эти процедуры:

Скачать пример данной формы можно в файлах к статье.

Если вызывается отчет на СКД, то нужно создать для него типовую форму. Подробнее см. Как добавить типовую форму для СКД

Примечание: создавать форму, как оказалось, не обязательно. См. вариант вызова СКД без создания формы

Чтобы сработал код передачи параметров в СКД (ОткрытьВнешнийОтчетСКДсПараметром), нужно в модуле объекта СКД добавить код, принимающий эти параметры:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    ЗаполнитьПользовательскиеНастройки();
КонецПроцедуры

Процедура ЗаполнитьПользовательскиеНастройки()      
    ДополнительныеСвойства = КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства;
    Если Не ДополнительныеСвойства.Количество() Тогда
        Возврат;
    КонецЕсли;                                        
    Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
    Отборы    = КомпоновщикНастроек.Настройки.Отбор.Элементы;   
    Для каждого Элемент Из Параметры Цикл                          
        ИмяПараметра = Строка(Элемент.Параметр);
        ЗначениеПараметра = Неопределено;                 
        Если ДополнительныеСвойства.Свойство(ИмяПараметра, ЗначениеПараметра) Тогда
            Настройка =КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Элемент.ИдентификаторПользовательскойНастройки);
            Настройка.Значение      = ЗначениеПараметра;
            Настройка.Использование = Истина;
        КонецЕсли;    
    КонецЦикла;  
    Для каждого Элемент Из Отборы Цикл    
        ИмяПараметра = Строка(Элемент.ЛевоеЗначение);
        ЗначениеПараметра = Неопределено;     
        Если ДополнительныеСвойства.Свойство(ИмяПараметра, ЗначениеПараметра) Тогда
            Настройка =КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(Элемент.ИдентификаторПользовательскойНастройки);
            //Настройка.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
            Настройка.ПравоеЗначение = ЗначениеПараметра;
            Настройка.Использование  = Истина;
        КонецЕсли;        
    КонецЦикла;  
    КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Очистить(); 
КонецПроцедуры

 

Скачать пример данного СКД отчета можно в файлах к статье.

 

Также пробовала передавать параметры в СКД вот так:

&НаКлиенте
Процедура ОткрытьВнешнийОтчетСКДсПараметром(Команда)  
    // установка параметров отбора
    Отбор = Новый Структура;
    Отбор.Вставить(НазваниеПараметра, ЗначениеПараметра);
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("Отбор", Отбор);
    ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("ВнешнийОтчетСКДПример", ПараметрыОтчета, Истина);
КонецПроцедуры

 

Однако возникала ошибка: Невозможно применить фиксированные настройки. Пересекаются элементы отбора.

Поэтому выше описала, как передавала параметры отбора в отчет СКД при котором такой ошибки не было.

Обработки тестировались на демо-базе БСП версии 2.4.5.

В архиве:

  • _TestОткрытиеВнешнихОтчетовОбработок.epf - обработка, содержащая форму с примерами кнопок вызова других отчетов и обработок. Можно открывать просто через Файл-Открыть.
  • ВнешняяОбработкаПример.epf - пример внешней обработки, принимающей параметр. Нужно загрузить в"Дополнительные отчеты и обработки" (задать имя ВнешняяОбработкаПример)
  • ВнешнийОтчетСКДПример.erf - пример внешнего отчета на СКД, принимающего параметры. Нужно загрузить в "Дополнительные отчеты и обработки" (задать имя ВнешнийОтчетСКДПример)

См. также Как в СКД по щелчку на какой-либо ячейке в отчете получить значение другой ячейки (там применяется метод, описанный в статье для вызова внешней обработки в качестве расшифровки ячейки СКД)

 

обработка отчет параметры 1с83 разработка

См. также

БСП (Библиотека стандартных подсистем) Программист Платные (руб)

Синтакс-помощник БСП - cправочник по библиотеке стандартных подсистем. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП.

1800 руб.

21.11.2024    136    1    0    

2

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1122    PROSTO-1C    0    

13

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1000    PROSTO-1C    4    

12

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    1851    MadRave    11    

24

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример отслеживания прогресса фонового выполнения дополнительной обработки с использованием программного интерфейса длительных операций БСП.

10.09.2024    1840    MadRave    1    

17

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1265    n_mezentsev    10    

8

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4118    John_d    10    

52

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5375    PROSTO-1C    12    

52
Отзывы
4. independ 1551 26.03.19 08:01 Сейчас в теме
(0) http://forum.infostart.ru/forum9/topic212215/message2166609/#message2166609, тоже самое, но без создания формы внешнего отчета
eeeio; ellavs; +2 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. HAMMER_59 253 26.03.19 06:42 Сейчас в теме
ИМХО проще было внешнюю обработку поправить.
2. ellavs 1052 26.03.19 07:37 Сейчас в теме
(1) уточните, что Вы имеете в виду?
3. HAMMER_59 253 26.03.19 07:58 Сейчас в теме
(2) У нас есть инструмент "Дополнительные отчеты и обработки" прекрасен он тем, что не нужно вносить никаких изменений в конфигурации.
В данной статье я не увидел, зачем было "городить огород" создавать расширение, все то же самое можно было реализовать через дополнительный отчет.
5. ellavs 1052 26.03.19 09:14 Сейчас в теме
(3) были такие задачи - по нажатию определенной кнопки на форме (из нескольких разных форм) открыть дополнительную обработку и передать ей нужный параметр. Вторая задача была - в СКД по щелчку в определенной ячейке в качестве расшифровки открывать отчет из допотчетов с параметром из данной ячейки. В обоих случая помогли только описанные выше способы. Не буду спорить, может есть способы лучше.
user591389_aska_rabota; Алексей_mir2mb; +2 Ответить
4. independ 1551 26.03.19 08:01 Сейчас в теме
(0) http://forum.infostart.ru/forum9/topic212215/message2166609/#message2166609, тоже самое, но без создания формы внешнего отчета
eeeio; ellavs; +2 Ответить
6. ellavs 1052 26.03.19 09:24 Сейчас в теме
(4) Да, тоже вариант. Не видела Вашу статью, т.к. делала свою более полугода назад.
eeeio; Алексей_mir2mb; +2 Ответить
7. independ 1551 26.03.19 09:28 Сейчас в теме
(6) а я читал вашу статью пару недель назад, но нужен был вариант без формы СКД, кстати можете добавить в свою публикацию, а мне спасибо нарисуете :)
user1853406; ellavs; +2 Ответить
8. ellavs 1052 27.03.19 14:26 Сейчас в теме
(7) спасибо :) добавила ссылку на Ваше решение в статью.
Алексей_mir2mb; +1 Ответить
9. v25i85 3 29.03.19 21:58 Сейчас в теме
"а не спеть ли мне песню о любви"... "велосипедах с костылями".
Можно же организовать в форме внешнего отчета документа отбор.
10. кольщик 02.07.19 15:58 Сейчас в теме
А как по кнопке с формы документа, открыть дополнительный отчет на СКД, загруженный в доп. отчеты и обработки, чтобы загружался в небезопасном режиме?

Сделал так:
&НаКлиенте
Процедура Расш1_ПоказатьЗаявкиВместо(Команда)
	ИмяФайла=ПолучитьИмяФайлаОбработки();
    
    АдресХранилища="";
    Результат=ПоместитьФайл(АдресХранилища,ИмяФайла,,Ложь);
    
    ИмяОбработки=ПолучитьСсылкуНаОбработку(АдресХранилища);
        
    ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки+".Форма");
КонецПроцедуры



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

&НаСервере
Функция ПолучитьСсылкуНаОбработку(АдресХранилища)
    Возврат ВнешниеОтчеты.Подключить(АдресХранилища);
КонецФункции
Показать

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

{ОбщаяФорма.ФормаНастроекОтчета.Форма(34)}: Не передан служебный параметр "НастройкиОтчета".
ВызватьИсключение НСтр("ru = 'Не передан служебный параметр ""НастройкиОтчета"".'");
11. ellavs 1052 03.07.19 09:13 Сейчас в теме
(10) не наблюдала такой проблемы. При написании примеров кода отчет подключался как раз в небезопасном режиме и сообщение о небезопасном режиме не было. Попробуйте открывать отчет, используя пример кода из статьи.
12. German_Tagil 43 23.06.20 10:02 Сейчас в теме
я может чего-то не допонял - и вообще это возможно или нет?


Пытаюсь передать параметр владелецформы.объект из формы документа во внешний отчет который расположен на форме документа

нужна строка в отчете типа

НоваяСтрока = ВладелецФормы.Объект .Товары.Добавить();

вот как передать и определить ВладелецФормы.Объект не пойму...
13. user797130 09.10.20 09:23 Сейчас в теме
ellavs, добрый день.
А зачем Вы за ссылкой "на сервер" ходите с контекстом?

&НаСервере
Функция ПолучитьСсылкуНаВнешнийОтчетОбработкуПоИмениНаСервере(ИмяОтчетаОбработки)
    Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки).Ссылка;
КонецФункции
14. ellavs 1052 09.10.20 09:53 Сейчас в теме
(13) спасибо, что заметили, конечно, нужно исправить.
user797130; +1 Ответить
15. newvideo 10.11.20 13:20 Сейчас в теме
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

АдресХранилища = "";
Результат = ПоместитьФайл(АдресХранилища, "\\Разработка\Отчеты\АкционныеСкидки.erf", , Ложь);
ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма");

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

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)

Возврат ВнешниеОтчеты.Подключить(АдресХранилища);

КонецФункции
16. mikl79 119 18.05.22 12:38 Сейчас в теме
Добрый день.
У меня срабатывает открытие Внеш.отчета на СКД с параметрами, но только если Публикация Внеш.отчета отключена.
В чем может быть причина и как это устранить?
17. websamson 307 12.08.22 10:11 Сейчас в теме
&НаКлиенте
Процедура ОткрытьВнешнийОтчетОбработку(ИмяОтчетаОбработки, ПараметрыОтчетаОбработки) Экспорт
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла("epf");
    УИД = Новый УникальныйИдентификатор;
    Адрес = ПолучитьАдресВнешнейОбработкиНаСервере(УИД, ИмяОтчетаОбработки);
    ИмяОбработки = ПодключитьВнешнююОбработку(Адрес);
    ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОтчетаОбработки, , УИД);
КонецПроцедуры

&НаСервере
Функция ПолучитьАдресВнешнейОбработкиНаСервере(УИД, ИмяОтчетаОбработки, Расширение = "epf") Экспорт
    СпрСсылка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(ИмяОтчетаОбработки);
    ХранилищеОбработки = СпрСсылка.ХранилищеОбработки.Получить();
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
    ХранилищеОбработки.Записать(ИмяВременногоФайла);
    
    Двоичное = Новый ДвоичныеДанные(ИмяВременногоФайла);
    Адрес = ПоместитьВоВременноеХранилище(Двоичное, УИД);
    Возврат Адрес;
    
КонецФункции

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища) Экспорт

    Возврат ВнешниеОбработки.Подключить(АдресХранилища);

КонецФункции
Показать
22. fixin 4273 27.05.24 15:53 Сейчас в теме
Немного адаптировал чтобы отчеты тоже открывались:

Клиентский модуль дор_К:

Функция ВыполнитьКомандуОткрытияРеестраДокументов(ОписаниеКоманды) Экспорт                                                                                
	ОткрытьВнешнийОтчетОбработку("РеестрТребованийДоработанный", Новый Структура(), "erf");
КонецФункции   

&НаКлиенте
Процедура ОткрытьВнешнийОтчетОбработку(ИмяОтчетаОбработки, ПараметрыОтчетаОбработки, Расширение = "epf") Экспорт
    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
    УИД = Новый УникальныйИдентификатор;
    Адрес = дор_С.ПолучитьАдресВнешнейОбработкиНаСервере(УИД, ИмяОтчетаОбработки, Расширение);
    ИмяОбработки = дор_С.ПодключитьВнешнююОбработку(Адрес, Расширение);                              
	Если Расширение = "epf" Тогда
    	ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОтчетаОбработки, , УИД);
	Иначе
    	ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОтчетаОбработки, , УИД);
	КонецЕсли;
КонецПроцедуры

Показать


Серверный модуль дор_С:

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

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища, Расширение = "epf") Экспорт

 	Если Расширение = "epf" Тогда
	   Возврат ВнешниеОбработки.Подключить(АдресХранилища);
	Иначе
		Возврат ВнешниеОтчеты.Подключить(АдресХранилища);
	КонецЕсли;

КонецФункции
Показать
18. silverr 13 20.01.23 13:31 Сейчас в теме
Всем доброго дня!
Подскажите, как из внешней обработки (подключена) сформировать отчет на основе СКД (находится в макетах обработки) и вывести его в отдельное окно. Есть в составе конфигурации БП 3.0 в общих формах "ФормаОтчета", по коду, как я понял, эта форма используется для формирования и вывода отчетов. Но вот ссылок на использование оной я не нашел.
19. davlen 62 05.05.23 17:58 Сейчас в теме
при открытии отчета, параметр пустой, хотя формируется отчет сразу правильно с параметром.
20. aleksey2 88 08.12.23 11:57 Сейчас в теме
печатные формы можно так открыть ?
21. Alex_Alex 01.04.24 22:51 Сейчас в теме
Добрый день.

Большое СПАСИБО за обработку!!!
23. rozer 311 05.09.24 08:21 Сейчас в теме
Также пробовала передавать параметры в СКД вот так:

&НаКлиенте
Процедура ОткрытьВнешнийОтчетСКДсПараметром(Команда)  
    // установка параметров отбора
    Отбор = Новый Структура;
    Отбор.Вставить(НазваниеПараметра, ЗначениеПараметра);
    ПараметрыОтчета = Новый Структура;
    ПараметрыОтчета.Вставить("Отбор", Отбор);
    ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
    ОткрытьВнешнийОтчетОбработкуПоИмениСДопПараметрами ("ВнешнийОтчетСКДПример", ПараметрыОтчета, Истина);
КонецПроцедуры

 

Однако возникала ошибка: Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
Показать


с БСП 3.1 все работает без всяких "своих форм" на типовой ФормаОтчета. Все что передано в Параметры.Отбор устанавливается соответственно или в параметры или потом в отбор если по имени параметра не нашли.
Оставьте свое сообщение