Как вызвать экспортную процедуру из расширения

1. Manticor 66 11.07.19 16:41 Сейчас в теме
Конфигурация БП 3.0 типовая на поддержке.
Версия платформы 8.3.13.1513.
Режим совместимости стоит версия 8.3.12.

Необходимо программно сформировать несколько отчетов.
Для этого создал расширение.
Форму отчета КнигаПокупок захватил в расширение, для того чтобы
сделать процедуру сформировать экспортной:
&НаКлиенте
Процедура Расш1_СформироватьОтчетВместо(Команда) Экспорт
	СформироватьОтчетНаКлиенте();
КонецПроцедуры


Далее делаю вызов этой «расширенной» процедуры:
&НаКлиенте
Процедура Вызвать(Команда) Экспорт
	ФормОтчета = ПолучитьФорму("Отчет.КнигаПокупок.Форма.ФормаОтчета");
	ФормОтчета.СформироватьОтчет(Неопределено);
КонецПроцедуры


В итоге при обращении к процедуре СформироватьОтчет, которую сделал экспортной в расширении ругается:
{ВнешняяОбработка.ВызовИзРасширения.Форма.Форма.Форма(7)}: Метод объекта не обнаружен (СформироватьОтчет)
ФормОтчета.СформироватьОтчет(Неопределено);

Каким образом вызвать процедуру, которую я поместил в расширение?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. lefthander 11.07.19 16:57 Сейчас в теме
(1)Ну какая может быть экспортная процедура на клиенте?
Ну посмотрите на свой код чего и откуда вы на вызывали?

Может как то так

&НаКлиенте
Процедура Расш1_СформироватьОтчетВместо(Команда)
    СформироватьОтчетНаКлиенте();

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

&НаСервере
Процедура СформироватьОтчетНаКлиенте()
 
//Формируем собственно отчет

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

Показать
5. Manticor 66 11.07.19 17:10 Сейчас в теме
(2)
СформироватьОтчетНаКлиенте()

СформироватьОтчетНаКлиенте() - это ТИПОВАЯ процедура, которая выполняется на клиенте. Очевидно у вас нет под рукой типвой БП 3.0.
Если процедура клиентская, метод экспорт для нее также применим)

Я так понимаю не умеет пока еще расширенеи работать с экспортом процедуры.
6. lefthander 11.07.19 17:19 Сейчас в теме
(5)Я отвечающий, а не топик стартер. Вопрошающему хорошо бы основы УФ почитать...
ТопикСтартер хочет через расширение перехватить формирование отчета. и посмотрите как он там перехватывал.
8. lefthander 11.07.19 17:30 Сейчас в теме
(5)это вы не умеете работать с экспортными процедурами, а расширение все умеет. ;)
9. spacecraft 11.07.19 17:58 Сейчас в теме
(1) т.е. создали в расширении процедуру Расш1_СформироватьОтчетВместо как обработчик команды СформироватьОтчет и вызываете:
ФормОтчета.СформироватьОтчет(Неопределено);
и ждете, что сработает процедура из расширения?
Так это не работает. Вы не просто процедуру переопределили в расширении, а процедуру, которая будет вызываться в обработчике команды. Фактически указали, что во время выполнения команды будет выполняться другая процедура. И вызывать ее просто так не получится.
10. spacecraft 11.07.19 18:07 Сейчас в теме
(1) если хотите именно переопределить саму процедуру, а не обработчик, тогда при добавлении процедуры в расширении нужно выбирать добавление не как обработчика команды.
Тогда будет вызываться как хотите.
11. RocKeR_13 1322 11.07.19 21:25 Сейчас в теме
(1) а не проще было в этой форме в расширении добавить свою экспортную клиентскую процедуру, которая будет уже вызывать нужную вам?)
13. amaksimov 13.07.19 22:24 Сейчас в теме
(1) Доброй ночи! Manticor, актуальна ли проблема?
3. VmvLer 11.07.19 16:59 Сейчас в теме
ФормОтчета.СкомпоноватьРезультат();
4. Manticor 66 11.07.19 17:07 Сейчас в теме
(3) {ВнешняяОбработка.ВызовИзРасширения.Форма.Форма.Форма(9)}: Ошибка при вызове метода контекста (СкомпоноватьРезультат)
ФормОтчета.СкомпоноватьРезультат();
по причине:
Не установлена схема компоновки данных

По ходу это прокатывает для отчетов на СКД) Этот отчет не на СКД(
7. VmvLer 11.07.19 17:19 Сейчас в теме
я запустил в БП 3.0 глобальный поиск по тегу "КнигаПокупок"
и получил примеры вызова этого отчета, например

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


делаем выводы или будем костыли лепить?
12. MikeI 73 12.07.19 11:38 Сейчас в теме
Попробуйте поставить директиву препроцессора &вместо("сформировать отчёт")
14. Crazy_kz 25 15.07.19 11:03 Сейчас в теме
а форма отчета добавлена в расширение?
15. BigRig 21 15.07.19 12:58 Сейчас в теме
&Вместо("СформироватьОтчет")
&НаКлиенте
Процедура Расш1_СформироватьОтчет(Команда) Экспорт
СформироватьОтчетНаКлиенте();
КонецПроцедуры
16. asbc 18.08.21 07:59 Сейчас в теме
Зачем подменять типовую процедуру? Скопировать её в расширение, сделать экспортной и обращаться уже к своей.

&НаКлиенте
Процедура Расш1_СформироватьОтчет(Команда) Экспорт
СформироватьОтчетНаКлиенте();
КонецПроцедуры

Вот так, и обращение не к типовой, а к Расш1_СформироватьОтчет(Команда) .
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот