СКД программное задание параметров и Отбор Компоновщика на одной форме отчета
По теме из базы знаний
- Вывод вариантов СКД в таблицы на управляемой форме
- Создание отчетов с помощью СКД - основные понятия и элементы
- Немного про СКД. Характеристики и проверка пустого отчета
- Программная работа с настройками СКД
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
СхемаКомпоновки = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
ЗначениеПараметра.Значение = НачалоДня(НачалоПериода);
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
ЗначениеПараметра.Значение = КонецДня(КонецПериода);
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация"));
ЗначениеПараметра.Значение = Организация;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки));
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию);
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
ЗначениеПараметра.Значение = НачалоДня(НачалоПериода);
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода"));
ЗначениеПараметра.Значение = КонецДня(КонецПериода);
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация"));
ЗначениеПараметра.Значение = Организация;
Если есть необходимость сделать это программно, то
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора
(
КомпоновщикНастроек.Настройки.Отбор,
"ИмяПоля",
ПравоеЗначение,
ВидСравненияКомпоновкиДанных.Равно
);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора
(
КомпоновщикНастроек.Настройки.Отбор,
"ИмяПоля",
ПравоеЗначение,
ВидСравненияКомпоновкиДанных.Равно
);
Если есть необходимость сделать это программно, то
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора
(
КомпоновщикНастроек.Настройки.Отбор,
"ИмяПоля",
ПравоеЗначение,
ВидСравненияКомпоновкиДанных.Равно
);
Показать
Я ведь написала в вопросе: "ВидСравненияКомпоновкиДанных может быть разным, иначе бы описала программно". Т.е. если бы было только "равно", то я знаю как описать. После написания:
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
А также Иначе:
Если ЗначениеЗаполнено(Контрагент) Тогда
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Контрагент");
ЗначениеПараметра.Использование = Истина;
ЗначениеПараметра.Значение = Контрагент;
Иначе
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Контрагент");
ЗначениеПараметра.Использование = ложь;
КонецЕсли;
всё заработало
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
А также Иначе:
Если ЗначениеЗаполнено(Контрагент) Тогда
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Контрагент");
ЗначениеПараметра.Использование = Истина;
ЗначениеПараметра.Значение = Контрагент;
Иначе
ЗначениеПараметра = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("Контрагент");
ЗначениеПараметра.Использование = ложь;
КонецЕсли;
всё заработало
Подскажите, как передать в параметр СКД "Период" с типом "Стандартный период" определенные пользователем на форме значения ДатаНач и ДатаКон или сформированный из них Стандартный период?
на форме - это ВариантПериода.
Иногда ругается, что Параметр не найден, в других случаях не ругается, но в формировании отчета изменения на форме на "родные" параметры периода отчета никак не влияют
на форме - это ВариантПериода.
Иногда ругается, что Параметр не найден, в других случаях не ругается, но в формировании отчета изменения на форме на "родные" параметры периода отчета никак не влияют
Прикрепленные файлы:
ОтчетПоДвижениюЗапасов v 2.5.erf
Вопрос решил... частично:
В Компоновке данных отказался от параметра Период - СтандартныйПериод. Оставил только НачалоПериода и КонецПериода.
Их установку сделал "по книжке":
Теперь - задача № 2:
из ВариантаПериода Типа ВариантСтандартногоПериода получить дату начала и дату окончания этого периода.
В Компоновке данных отказался от параметра Период - СтандартныйПериод. Оставил только НачалоПериода и КонецПериода.
Их установку сделал "по книжке":
ПараметрСКД = Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
ПараметрСКД.Использование = Истина;
ПараметрСКД.Значение = Отчет.ДатаКон;
Теперь - задача № 2:
из ВариантаПериода Типа ВариантСтандартногоПериода получить дату начала и дату окончания этого периода.
(11)
Программное получение даты начала и конца периода:
А вообще я обычно в параметрах для пользователя вывожу СтандартныйПериод, а нужные мне параметры ДатаНачала и ДатаОкончания скрываю от него и выставляю выражениями &СтандартныйПериод.ДатаНачала и &СтандартныйПериод.ДатаОкончания
Программное получение даты начала и конца периода:
ПараметрыСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
ДатаНачала = ПараметрыСКД.Найти("СтандартныйПериод").Значение.ДатаНачала;
ДатаОкончания = ПараметрыСКД.Найти("СтандартныйПериод").Значение.ДатаОкончания;
А вообще я обычно в параметрах для пользователя вывожу СтандартныйПериод, а нужные мне параметры ДатаНачала и ДатаОкончания скрываю от него и выставляю выражениями &СтандартныйПериод.ДатаНачала и &СтандартныйПериод.ДатаОкончания
народу иногда хочется выводить с 03.05. по 08.06 - тогда нужно сначала выбирать Произвольный период... то есть, делать лишние шаги.
Хотят, чтобы как в 7-ке - выбрал 2 даты или выбрал период.
Вот с задачей №2 почти разобрался: выбираешь вид периода (неделя, месяц, квартал...), выбираешь стандартный вид периода и из него - даты начала и конца.
Почему-то только название выбранного периода ("прошлый месяц", "прошлый квартал" и т.п.) в значение реквизита на форме не отображается (а параметры отчета нормально приходят).
Хотят, чтобы как в 7-ке - выбрал 2 даты или выбрал период.
Вот с задачей №2 почти разобрался: выбираешь вид периода (неделя, месяц, квартал...), выбираешь стандартный вид периода и из него - даты начала и конца.
Почему-то только название выбранного периода ("прошлый месяц", "прошлый квартал" и т.п.) в значение реквизита на форме не отображается (а параметры отчета нормально приходят).
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот