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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

КонецПроцедуры
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

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

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день