Ребят, возник вопрос, нужно взять типовой контекстный отчет УТ и сделать его внешним (или в расширении), причем, чтобы сохранить его контекстность, кто подскажет как это сделать? Сейчас в типовом варианте в отчете есть 4 команды, которые я перенес, а в модуле менеджера код по их добавлению (тоже типовой):
// Добавляет команду отчета в список команд.
//
// Параметры:
// КомандыОтчетов - ТаблицаЗначений - состав полей см. в функции МенюОтчеты.СоздатьКоллекциюКомандОтчетов.
//
Функция ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ТоварыВЯчейках) Тогда
КомандаОтчет = КомандыОтчетов.Добавить();
КомандаОтчет.Менеджер = Метаданные.Отчеты.ТоварыВЯчейкахСТипомОперации.ПолноеИмя();
КомандаОтчет.Представление = НСтр("ru= 'Товары в ячейках с типом операции'");
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.МножественныйВыбор = Ложь;
КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "ПоНоменклатуре");
КомандаОтчет.КлючВарианта = "ПоНоменклатуреКонтекст";
Возврат КомандаОтчет;
КонецЕсли;
Возврат Неопределено;
КонецФункции
// Добавляет команду отчета в список команд.
//
// Параметры:
// КомандыОтчетов - ТаблицаЗначений - состав полей см. в функции МенюОтчеты.СоздатьКоллекциюКомандОтчетов.
//
Функция ДобавитьКомандуОтчетаДвиженияТовара(КомандыОтчетов) Экспорт
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ТоварыВЯчейках) Тогда
КомандаОтчет = КомандыОтчетов.Добавить();
КомандаОтчет.Менеджер = Метаданные.Отчеты.ТоварыВЯчейкахСТипомОперации.ПолноеИмя();
КомандаОтчет.Представление = НСтр("ru= 'Движения товара в ячейках с типом операции'");
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.МножественныйВыбор = Ложь;
КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "ПоНоменклатуре");
КомандаОтчет.КлючВарианта = "ДвиженияТоваровВЯчейкеКонтекст";
Возврат КомандаОтчет;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Показать
Но как бы я не менял код в этом модуле - ничего не меняется, делал так же как в этой статье: https://infostart.ru/public/1016791/ но не сработало, моя команда не отображается в списке. Пытался добавить как внешний, но там не смог подобрать нужные СведенияОВнешнейОбработке, может кто сталкивался, у кого-то есть пример?
Если Параметры.Свойство("ОбъектыНазначения") Тогда
ДокументыДляОтбора= Параметры.ОбъектыНазначения[0];
Период = Новый СтандартныйПериод;
//тут любые проверки
//А далее установка отборов и параметров (в приоритете параметры)
//Думаю вам достаточно скопипастить типовое
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ПериодОтчета", Период);
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ДокументДляОтбора", ДокументДляОтбора);
(4) ну уже неплохо, отчет хотя бы появился в контекстных отчетах, осталось только понять как в зависимости от того из какого справочника он был вызван установить нужный вариант отчета и как передать в отчет ссылку, чтобы сделать отбор. Для типового отчета используется вот такой код:
КомпоновщикНастроекФормы = ЭтаФорма.Отчет.КомпоновщикНастроек;
Параметры = ЭтаФорма.Параметры;
Если Параметры.Свойство("ПараметрКоманды")
И Параметры.Свойство("ОписаниеКоманды")
И Параметры.ОписаниеКоманды.ДополнительныеПараметры.Свойство("ИмяКоманды") Тогда
Если Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоЯчейке" Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("Ячейка", Параметры.ПараметрКоманды);
ИначеЕсли Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоНоменклатуре" Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("Номенклатура", Параметры.ПараметрКоманды);
ИначеЕсли Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоОбластиХранения" Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ОбластьХранения", Параметры.ПараметрКоманды);
ИначеЕсли Параметры.ОписаниеКоманды.ДополнительныеПараметры.ИмяКоманды = "ПоСкладскойГруппеНоменклатуры" Тогда
ЭтаФорма.ФормаПараметры.Отбор.Вставить("СкладскаяГруппаНоменклатуры", Параметры.ПараметрКоманды);
КонецЕсли;
КонецЕсли;
Показать
Он при создании на сервере запускается, но у меня не отрабатывает и открывается без отбора отчет, причем и вариант отчета открывается всегда один и тот же. Как в этом случае сделать?
Если Параметры.Свойство("ОбъектыНазначения") Тогда
ДокументыДляОтбора= Параметры.ОбъектыНазначения[0];
Период = Новый СтандартныйПериод;
//тут любые проверки
//А далее установка отборов и параметров (в приоритете параметры)
//Думаю вам достаточно скопипастить типовое
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ПериодОтчета", Период);
ЭтаФорма.ФормаПараметры.Отбор.Вставить("ДокументДляОтбора", ДокументДляОтбора);