Программно получить текущий вариант отчета СКД
По теме из базы знаний
- Как создать кнопки варианта отчета СКД для обычных форм
- Создание мульти-базовых отчетов. Все, что вы хотели об этом знать
- Варианты применения СКД вне отчетов в отраслевых конфигурациях
- Доработка типового отчета на СКД с помощью расширения
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
Найденные решения
(2)
Да. вот так получилось:
Да. вот так получилось:
если НастройкиОтчета.ДополнительныеСвойства.ВариантНаименование = "Основной" тогда
НовыйЭлементОтбора = НастройкиОтчета.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("МенеджерДокумента");
НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
НовыйЭлементОтбора.Использование = Истина;
НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = Справочники.Пользователи.НайтиПоНаименованию("Мой пользователь");
конецесли;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Да. вот так получилось:
Да. вот так получилось:
если НастройкиОтчета.ДополнительныеСвойства.ВариантНаименование = "Основной" тогда
НовыйЭлементОтбора = НастройкиОтчета.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ПолеОтбора = Новый ПолеКомпоновкиДанных("МенеджерДокумента");
НовыйЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
НовыйЭлементОтбора.Использование = Истина;
НовыйЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = Справочники.Пользователи.НайтиПоНаименованию("Мой пользователь");
конецесли;
(1) можете событие формы отчета посмотреть:
&НаСервере
Процедура ПриОбновленииСоставаПользовательскихНастроекНаСервере(СтандартнаяОбработка)
Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("КлючВарианта", ЭтотОбъект.КлючТекущегоВарианта);
КонецПроцедуры
Додумался сам. Создаём у отчета реквизит КлючТекущегоВарианта. В событии формы ПриОбновленииСоставаПользовательскихНастроекНаСервере записываем в реквизит этот ключ
Отчет.КлючТекущегоВарианта = КлючТекущегоВарианта;
И уже в ПриКомпоновкеРезультата можно сделать проверку на КлючТекущегоВарианта.
Отчет.КлючТекущегоВарианта = КлючТекущегоВарианта;
И уже в ПриКомпоновкеРезультата можно сделать проверку на КлючТекущегоВарианта.
В общем, обобщая всё, сделал рабочий код, открывается с сохраненными вариантами настроек
&НаКлиенте
// Путь = "D:\ВашОтчет.erf"
Процедура КомандаОткрытьВнешнийОтчет(Путь)
ОписаниеОповещения = Новый ОписаниеОповещения("ПоместитьФайлВХранилищеЗавершениеОтчет", ЭтотОбъект);
НачатьПомещениеФайла(ОписаниеОповещения, , Путь, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПоместитьФайлВХранилищеЗавершениеОтчет(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
РезЗапроса = ПодключитьВнешнийОтчетНаСервереОтчет(Адрес);
ИмяОтчета = РезЗапроса.ИмяОтчета;
КлючВарианта = РезЗапроса.ВариантОтчета;
ПараметрыОткрытия = Новый Структура("КлючВарианта", КлючВарианта);
Уникальность ="ВнешнийОтчет." + ИмяОтчета;
ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".Форма", ПараметрыОткрытия, Неопределено, Уникальность)
КонецПроцедуры
&НаСервере
Функция ПодключитьВнешнийОтчетНаСервереОтчет(АдресХранилища)
результат = Новый Структура;
ИмяОтчета = ВнешниеОтчеты.Подключить(АдресХранилища);
ВариантыОтчета = ХранилищеВариантовОтчетов.ПолучитьСписок("Отчет."+ИмяОтчета);
КлючОбъекта = "ВнешнийОтчет."+ИмяОтчета+"/КлючТекущегоВарианта";
ВариантОтчета = ОбщегоНазначения.ХранилищеСистемныхНастроекЗагрузить(КлючОбъекта, "");
Мт = ВариантыОтчета.НайтиПоЗначению(ВариантОтчета);
Если МТ <> Неопределено Тогда
ВариантОтчета = МТ.Представление;
КонецЕсли;
результат.Вставить("ИмяОтчета",ИмяОтчета);
результат.Вставить("ВариантОтчета",ВариантОтчета);
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьПользовательскиеНастройки(ВнешнийОтчетОбработкаДляОткрытияСсылка);
КомпоновщикНастроек=ДополнительныеОтчетыИОбработкиВызовСерве ра.ОбъектВнешнейОбработки(ВнешнийОтчетОбработкаДляОткрытияСсылка).КомпоновщикНастроек;
Настройки=КомпоновщикНастроек.ПолучитьНастройки();
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачПериода",НачалоДня(ТекущаяДата()));
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонПериода",КонецДня(ТекущаяДата()));
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
Возврат КомпоновщикНастроек.ПользовательскиеНастройки;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот