1. Manticor 64 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 64 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 629 11.07.19 21:25 Сейчас в теме
(1) а не проще было в этой форме в расширении добавить свою экспортную клиентскую процедуру, которая будет уже вызывать нужную вам?)
13. crabzzy 13.07.19 22:24 Сейчас в теме
(1) Доброй ночи! Manticor, актуальна ли проблема?
3. VmvLer 11.07.19 16:59 Сейчас в теме
ФормОтчета.СкомпоноватьРезультат();
4. Manticor 64 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 72 12.07.19 11:38 Сейчас в теме
Попробуйте поставить директиву препроцессора &вместо("сформировать отчёт")
14. Crazy_kz 18 15.07.19 11:03 Сейчас в теме
а форма отчета добавлена в расширение?
15. BigRig 7 15.07.19 12:58 Сейчас в теме
&Вместо("СформироватьОтчет")
&НаКлиенте
Процедура Расш1_СформироватьОтчет(Команда) Экспорт
СформироватьОтчетНаКлиенте();
КонецПроцедуры
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Руководитель проекта, аналитик, консультант
Санкт-Петербург
По совместительству

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Программист 1С
Москва
Полный день