Внешний контекстный отчет

1. Adrenal1n 3 03.07.20 13:45 Сейчас в теме
Ребят, возник вопрос, нужно взять типовой контекстный отчет УТ и сделать его внешним (или в расширении), причем, чтобы сохранить его контекстность, кто подскажет как это сделать? Сейчас в типовом варианте в отчете есть 4 команды, которые я перенес, а в модуле менеджера код по их добавлению (тоже типовой):

// Добавляет команду отчета в список команд.
//
// Параметры:
//	КомандыОтчетов - ТаблицаЗначений - состав полей см. в функции МенюОтчеты.СоздатьКоллекциюКомандОтчетов.
//
Функция ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ТоварыВЯчейках) Тогда
		
		КомандаОтчет = КомандыОтчетов.Добавить();
		
		КомандаОтчет.Менеджер = Метаданные.Отчеты.ТоварыВЯчейкахСТипомОперации.ПолноеИмя();
		КомандаОтчет.Представление = НСтр("ru= 'Товары в ячейках с типом операции'");
		
		
		КомандаОтчет.Важность = "Обычное";
		КомандаОтчет.МножественныйВыбор = Ложь;
		
		КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "ПоНоменклатуре");
		
		КомандаОтчет.КлючВарианта = "ПоНоменклатуреКонтекст";
		
		Возврат КомандаОтчет;
		
	КонецЕсли;
	
	Возврат Неопределено;
	
КонецФункции

// Добавляет команду отчета в список команд.
//
// Параметры:
//	КомандыОтчетов - ТаблицаЗначений - состав полей см. в функции МенюОтчеты.СоздатьКоллекциюКомандОтчетов.
//
Функция ДобавитьКомандуОтчетаДвиженияТовара(КомандыОтчетов) Экспорт
	
	Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ТоварыВЯчейках) Тогда
		
		КомандаОтчет = КомандыОтчетов.Добавить();
		
		КомандаОтчет.Менеджер = Метаданные.Отчеты.ТоварыВЯчейкахСТипомОперации.ПолноеИмя();
		КомандаОтчет.Представление = НСтр("ru= 'Движения товара в ячейках с типом операции'");
		
		
		КомандаОтчет.Важность = "Обычное";
		КомандаОтчет.МножественныйВыбор = Ложь;
		
		КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "ПоНоменклатуре");
		
		КомандаОтчет.КлючВарианта = "ДвиженияТоваровВЯчейкеКонтекст";
		
		Возврат КомандаОтчет;
		
	КонецЕсли;
	
	Возврат Неопределено;
	
КонецФункции
Показать

Но как бы я не менял код в этом модуле - ничего не меняется, делал так же как в этой статье: https://infostart.ru/public/1016791/ но не сработало, моя команда не отображается в списке. Пытался добавить как внешний, но там не смог подобрать нужные СведенияОВнешнейОбработке, может кто сталкивался, у кого-то есть пример?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
6. dandykry 10 06.07.20 12:35 Сейчас в теме +0.25 $m
(5)

Функция СведенияОВнешнейОбработке()

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

Сначала указать, что ты собираешься что-то менять

далее добавить процедуры в модуле внешнего отчета

Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт

Настройки.ФормироватьСразу = Истина;
Настройки.РазрешеноИзменятьСтруктуру = Ложь;
Настройки.РазрешеноИзменятьВарианты = Ложь;
Настройки.События.ПриСозданииНаСервере = Истина;

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

Процедура ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт

КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
Параметры = ЭтаФорма.Параметры;

Если Параметры.Свойство("ОбъектыНазначения") Тогда

ДокументыДляОтбора= Параметры.ОбъектыНазначения[0];
Период = Новый СтандартныйПериод;
//тут любые проверки
//А далее установка отборов и параметров (в приоритете параметры)
//Думаю вам достаточно скопипастить типовое
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ПериодОтчета", Период);
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ДокументДляОтбора", ДокументДляОтбора);

КонецЕсли;

КонецПроцедуры
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 03.07.20 14:03 Сейчас в теме
чтобы сохранить его контекстность
- это как ?
3. Adrenal1n 3 03.07.20 14:10 Сейчас в теме
(2)это чтобы его можно было открыть из справочников, например из номенклатуры (в этом отчете 4 места откуда он открывается, для каждого своя команда):
Прикрепленные файлы:
4. user995537 38 03.07.20 14:22 Сейчас в теме
Добрый день, эту обработку бросал на форму справочника. Посмотрите в модуле.
Прикрепленные файлы:
ВнешняяФормаОбработкиУФ_ВариантыКомплектацииНоменклатуры_ОткрытиеФормы.epf
5. Adrenal1n 3 03.07.20 14:57 Сейчас в теме
(4) ну уже неплохо, отчет хотя бы появился в контекстных отчетах, осталось только понять как в зависимости от того из какого справочника он был вызван установить нужный вариант отчета и как передать в отчет ссылку, чтобы сделать отбор. Для типового отчета используется вот такой код:
	КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
	Параметры = ЭтаФорма.Параметры;
	
	Если Параметры.Свойство("ПараметрКоманды")
		И Параметры.Свойство("ОписаниеКоманды")
		И Параметры.ОписаниеКоманды.ДополнительныеПараметры.Свойство("ИмяКоманды") Тогда
		
		Если Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоЯчейке" Тогда
			ЭтаФорма.ФормаПараметры.Отбор.Вставить("Ячейка", Параметры.ПараметрКоманды);
		ИначеЕсли Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоНоменклатуре" Тогда
			ЭтаФорма.ФормаПараметры.Отбор.Вставить("Номенклатура", Параметры.ПараметрКоманды);
		ИначеЕсли Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоОбластиХранения" Тогда
			ЭтаФорма.ФормаПараметры.Отбор.Вставить("ОбластьХранения", Параметры.ПараметрКоманды);
		ИначеЕсли Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоСкладскойГруппеНоменклатуры" Тогда
			ЭтаФорма.ФормаПараметры.Отбор.Вставить("СкладскаяГруппаНоменклатуры", Параметры.ПараметрКоманды);
		КонецЕсли;
		
	КонецЕсли;
Показать


Он при создании на сервере запускается, но у меня не отрабатывает и открывается без отбора отчет, причем и вариант отчета открывается всегда один и тот же. Как в этом случае сделать?
6. dandykry 10 06.07.20 12:35 Сейчас в теме +0.25 $m
(5)

Функция СведенияОВнешнейОбработке()

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

Сначала указать, что ты собираешься что-то менять

далее добавить процедуры в модуле внешнего отчета

Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт

Настройки.ФормироватьСразу = Истина;
Настройки.РазрешеноИзменятьСтруктуру = Ложь;
Настройки.РазрешеноИзменятьВарианты = Ложь;
Настройки.События.ПриСозданииНаСервере = Истина;

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

Процедура ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт

КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
Параметры = ЭтаФорма.Параметры;

Если Параметры.Свойство("ОбъектыНазначения") Тогда

ДокументыДляОтбора= Параметры.ОбъектыНазначения[0];
Период = Новый СтандартныйПериод;
//тут любые проверки
//А далее установка отборов и параметров (в приоритете параметры)
//Думаю вам достаточно скопипастить типовое
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ПериодОтчета", Период);
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ДокументДляОтбора", ДокументДляОтбора);

КонецЕсли;

КонецПроцедуры
Оставьте свое сообщение

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