При программном выборе варианта отчета перезатерает отборы
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
//Выбор варианта отчета
Вариант = СхемаКомпоновкиДанных.ВариантыНастроек.СводныйОтчетПоПродажам;
Для Каждого Элемент ИЗ Вариант.Настройки.Отбор.Элементы Цикл
Настройки.Отбор.Элементы.
КонецЦикла;
Настройки = Вариант.СводныйОтчетПоПродажам;
//---
ПоказатьХотел в цикле перебрать элементы как-нибудь. И перекинуть значения отбора до того как затрет. Или может есть способ сделать более правильно?
Найденные решения
(1)
Хотел в цикле перебрать элементы как-нибудь.
Можно обойти рекурсивно текущие отборы и добавить их в отборы варианта:Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
НастройкиВарианта = СхемаКомпоновкиДанных.ВариантыНастроек.СводныйОтчетПоПродажам.Настройки;
СкопироватьОтборыРекурсивно(НастройкиВарианта.Отбор, Настройки.Отбор);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиВарианта, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Процедура СкопироватьОтборыРекурсивно(Приемник, Источник)
Для Каждого Элемент Из Источник.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
ЭлементОтбора = Приемник.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент);
Иначе
ГруппаОтборов = Приемник.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ГруппаОтборов, Элемент);
СкопироватьОтборыРекурсивно(ГруппаОтборов, Элемент)
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(20) Ключ варианта вроде бы можно сразу переопределить в ОпределитьНастройкиФормы, еще до открытия стандартной формы отчета: Сами же варианты сделать недоступными для всех пользователей. В итоге можно вообще забыть про копирование настроек, параметров и прочее.
Здесь на форуме много специалистов по СКД, возможно они посоветуют более оптимальный вариант.
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Если ЭтоГлавныйМенеджер() Тогда
КлючВарианта = "ВариантДляГлавногоМенеджера";
Иначе
КлючВарианта = "ВариантДляМенеджера";
КонецЕсли;
КонецПроцедуры
ПоказатьЗдесь на форуме много специалистов по СКД, возможно они посоветуют более оптимальный вариант.
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Хотел в цикле перебрать элементы как-нибудь.
Можно обойти рекурсивно текущие отборы и добавить их в отборы варианта:Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
НастройкиВарианта = СхемаКомпоновкиДанных.ВариантыНастроек.СводныйОтчетПоПродажам.Настройки;
СкопироватьОтборыРекурсивно(НастройкиВарианта.Отбор, Настройки.Отбор);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиВарианта, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Процедура СкопироватьОтборыРекурсивно(Приемник, Источник)
Для Каждого Элемент Из Источник.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
ЭлементОтбора = Приемник.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент);
Иначе
ГруппаОтборов = Приемник.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(ГруппаОтборов, Элемент);
СкопироватьОтборыРекурсивно(ГруппаОтборов, Элемент)
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Показать
(12) А как можно периоды при формировании отчета так же передавать?
У меня есть 2 периода
1: с 01.01.2020 по текущий день 2020-го
2: с 01.01.2021 по текущий день 2021-го
Сделано чтобы каждый раз отчет подтягивал при открытии текущий день. А вот если пользователь изменил период то при формировании он соответственно не изменяется и формирует до текущего дня. Уже 2 дня мучаюсь)
У меня есть 2 периода
1: с 01.01.2020 по текущий день 2020-го
2: с 01.01.2021 по текущий день 2021-го
Сделано чтобы каждый раз отчет подтягивал при открытии текущий день. А вот если пользователь изменил период то при формировании он соответственно не изменяется и формирует до текущего дня. Уже 2 дня мучаюсь)
(16)Попробуйте так:
Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл
Если ПараметрДанных.Использование Тогда
НастройкиВарианта.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрДанных.Параметр, ПараметрДанных.Значение);
КонецЕсли;
КонецЦикла;
(17)
А как при открытии этой формы задать периоды? Когда делаю форму и в при открытии прописываю. Ломается кнопка настроек. Я уже совсем потерялся в этой задаче. Кручу, верчу и так и эдак и все никак)
Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл
Если ПараметрДанных.Использование Тогда
НастройкиВарианта.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрДанных.Параметр, ПараметрДанных.Значение);
КонецЕсли;
КонецЦикла;
Если ПараметрДанных.Использование Тогда
НастройкиВарианта.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрДанных.Параметр, ПараметрДанных.Значение);
КонецЕсли;
КонецЦикла;
А как при открытии этой формы задать периоды? Когда делаю форму и в при открытии прописываю. Ломается кнопка настроек. Я уже совсем потерялся в этой задаче. Кручу, верчу и так и эдак и все никак)
(19) Есть менеджеры. Есть главные менеджеры.
Менеджер должен видеть отчет по такой структуре:
Организация --> Контрагент --> Номенклатура + отбор по текущему пользователю(текущему менеджеру)
Главный менеджер должен видеть отчет по немного иной структуре:
Организация --> Контрагент.ОтветственныйМенеджер ---> Контрагент ---> Номенклатура (Без отбора)
Только что нашел такой код для установки периода, сейчас пробую:
Если знаете как можно избежать создания двух вариантов расскажите пожалуйста) У главных менеджеров если что, полные права
Менеджер должен видеть отчет по такой структуре:
Организация --> Контрагент --> Номенклатура + отбор по текущему пользователю(текущему менеджеру)
Главный менеджер должен видеть отчет по немного иной структуре:
Организация --> Контрагент.ОтветственныйМенеджер ---> Контрагент ---> Номенклатура (Без отбора)
Только что нашел такой код для установки периода, сейчас пробую:
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриЗагрузкеПользовательскихНастроекНаСервере = Истина;
КонецПроцедуры
Процедура ПриЗагрузкеПользовательскихНастроекНаСервере(Форма, НовыеПользовательскиеНастройкиКД) Экспорт
НастройкиКД = Форма.Отчет.КомпоновщикНастроек.Настройки;
ПользовательскиеНастройкиКД = Форма.Отчет.КомпоновщикНастроек.ПользовательскиеНастройки;
ПараметрДанных = НастройкиКД.ПараметрыДанных.Элементы.Найти("Период");
ПараметрПользовательскойНастройки = ПользовательскиеНастройкиКД.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки);
ПараметрПользовательскойНастройки.Значение = НачалоДня(ТекущаяДата());
КонецПроцедуры
ПоказатьЕсли знаете как можно избежать создания двух вариантов расскажите пожалуйста) У главных менеджеров если что, полные права
(20) Ключ варианта вроде бы можно сразу переопределить в ОпределитьНастройкиФормы, еще до открытия стандартной формы отчета: Сами же варианты сделать недоступными для всех пользователей. В итоге можно вообще забыть про копирование настроек, параметров и прочее.
Здесь на форуме много специалистов по СКД, возможно они посоветуют более оптимальный вариант.
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Если ЭтоГлавныйМенеджер() Тогда
КлючВарианта = "ВариантДляГлавногоМенеджера";
Иначе
КлючВарианта = "ВариантДляМенеджера";
КонецЕсли;
КонецПроцедуры
ПоказатьЗдесь на форуме много специалистов по СКД, возможно они посоветуют более оптимальный вариант.
Прикрепленные файлы:
(21)
Я в шоке. Столько гуглил и не мог этого найти! Я Ради этого такой бред писал с перекидыванием параметров. То в одном период не работал в другом варианте отборы не работали.Спасибо!
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Если ЭтоГлавныйМенеджер() Тогда
КлючВарианта = "ВариантДляГлавногоМенеджера";
Иначе
КлючВарианта = "ВариантДляМенеджера";
КонецЕсли;
КонецПроцедуры
Если ЭтоГлавныйМенеджер() Тогда
КлючВарианта = "ВариантДляГлавногоМенеджера";
Иначе
КлючВарианта = "ВариантДляМенеджера";
КонецЕсли;
КонецПроцедуры
Я в шоке. Столько гуглил и не мог этого найти! Я Ради этого такой бред писал с перекидыванием параметров. То в одном период не работал в другом варианте отборы не работали.Спасибо!
//сохраняем настройки
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
//выбираем вариант отчета
Вариант = СхемаКомпоновкиДанных.ВариантыНастроек.СводныйОтчетПоПродажам;
//загружаем настройки
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки );
(2)
А где собственно мы указываем вариант отчета для настроек? В данном примере Вы просто выбрали настройки. В переменную записали вариант отчета. И полученные настройки обратно без изменений загрузили.
//сохраняем настройки
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
//выбираем вариант отчета
Вариант = СхемаКомпоновкиДанных.ВариантыНастроек.СводныйОтчетПоПродажам;
//загружаем настройки
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки );
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
//выбираем вариант отчета
Вариант = СхемаКомпоновкиДанных.ВариантыНастроек.СводныйОтчетПоПродажам;
//загружаем настройки
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки );
А где собственно мы указываем вариант отчета для настроек? В данном примере Вы просто выбрали настройки. В переменную записали вариант отчета. И полученные настройки обратно без изменений загрузили.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот