Как установить программно отбор по периоду в динамическом списке?
Необходимо установить отбор по периоду для динамического списка формы журнала документов при открытии формы. Надо, чтоб отбор отрабатывал и отображался так как при ручном выборе периода. Пробовал тремя способами задать - ни один нормально не отрабатывает:
Как его правильно задать?
ДатаНачала = ТекущаяДатаСеанса();//НачалоМесяца(НачалоМесяца(ТекущаяДатаСеанса())-1);
ДатаОкончания = ТекущаяДатаСеанса();//КонецМесяца(ТекущаяДатаСеанса());
//1.
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Дата",ДатаНачала, ВидСравненияКомпоновкиДанных.БольшеИлиРавно,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Дата",ДатаОкончания, ВидСравненияКомпоновкиДанных.МеньшеИлиРавно,,Истина);
//2.
ПользовательскийОтбор = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(
Список.КомпоновщикНастроек.Настройки.Отбор.ИдентификаторПользовательскойНастройки);
УсловиеОтбора = ПользовательскийОтбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
//3.
УсловиеОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
ПоказатьКак его правильно задать?
По теме из базы знаний
- Полезные процедуры по работе с СКД и динамическими списками (часть 3)
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Обзор полезных методов БСП 3.1.4
- Самые используемые методы БСП 3.1.9
Найденные решения
Вот так сработало.
Вызвал из "ПриСозданииНаСервере"
Процедура УстановитьПериодПоУмолчанию(Форма) Экспорт
Список = Форма.Список;
ДатаНачала = НачалоМесяца(ТекущаяДатаСеанса());
ДатаНачала = ДобавитьМесяц(ДатаНачала, -1);
ДатаОкончания = КонецМесяца(ТекущаяДатаСеанса());
лНовыйПериод = Новый СтандартныйПериод(ДатаНачала, ДатаОкончания);
ЗаполнитьЗначенияСвойств(Форма.Элементы.Список.Период, лНовыйПериод);
Форма.Элементы.Список.Обновить();
КонецПроцедуры
ПоказатьВызвал из "ПриСозданииНаСервере"
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если "при открытии" то после установки отборов нужно добавить:
Но получится что "ПриСозданииНаСервере" список сформировался, потом "ПриОткрытии" вы устанавливаете отборы и список повторно формируется но уже с отборами.
Логичнее формировать список "ПриСозданииНаСервере"
Элементы.Список.Обновить();
Но получится что "ПриСозданииНаСервере" список сформировался, потом "ПриОткрытии" вы устанавливаете отборы и список повторно формируется но уже с отборами.
Логичнее формировать список "ПриСозданииНаСервере"
Список.Параметры.УстановитьЗначениеПараметра("ДатаНачала", НачалоДня(ТекущаяДатаСеанса()));
Список.Параметры.УстановитьЗначениеПараметра("ДатаОкончания", ТекущаяДатаСеанса());
(2)С параметрами не работает:
https://disk.yandex.ru/i/NyB6PZa0sAG_sg
Сделал следующим образом:
Отбор срабатывает, но в форме не отображается, что установлен отбор по периоду.
Сделал следующим образом:
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Список.Отбор,"Дата",ВидСравненияКомпоновкиДанных.БольшеИлиРавно, ДатаНачала,,Истина,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Список.Отбор,"Дата",ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, ДатаОкончания,,Истина,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный);
Отбор срабатывает, но в форме не отображается, что установлен отбор по периоду.
Недавно сам искал решение подобной задачи. Остановился вот на таком коде:
Работает, как мне надо.
НастройкиКомпоновки=Новый НастройкиКомпоновкиДанных;
ГруппаОтбора=НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы=ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ЭлементОтбора=НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование=Истина;
ЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Номенклатура");
ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.ВСписке;
ЭлементОтбора.ПравоеЗначение=МассивНоменклатуры;
Если НЕ Элементы.Таб.ОтборСтрок=Неопределено Тогда
ЭлементОтбора=ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Период");
ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.Использование=Истина;
ЭлементОтбора.ПравоеЗначение=Элементы.Таб.ОтборСтрок.Период;
ЭлементОтбора=ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Период");
ЭлементОтбора.ВидСравнения=ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ЭлементОтбора.Использование=Истина;
ЭлементОтбора.ПравоеЗначение=КонецДня(Элементы.Таб.ОтборСтрок.Период);
КонецЕсли;
ПараметрыВыбора=Новый Структура;
ПараметрыВыбора.Вставить("ФиксированныеНастройки",НастройкиКомпоновки);
ПараметрыВыбора.Вставить("РежимВыбора",Истина);
ПараметрыВыбора.Вставить("МножественныйВыбор",Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыводаРегистра",ЭтотОбъект,"Подбор");
ОткрытьФорму("РегистрНакопления.ТоварыНаСкладах.Форма.ФормаСписка",ПараметрыВыбора,ЭтаФорма,УникальныйИдентификатор,,,ОписаниеОповещения);
ПоказатьРаботает, как мне надо.
Вот так сработало.
Вызвал из "ПриСозданииНаСервере"
Процедура УстановитьПериодПоУмолчанию(Форма) Экспорт
Список = Форма.Список;
ДатаНачала = НачалоМесяца(ТекущаяДатаСеанса());
ДатаНачала = ДобавитьМесяц(ДатаНачала, -1);
ДатаОкончания = КонецМесяца(ТекущаяДатаСеанса());
лНовыйПериод = Новый СтандартныйПериод(ДатаНачала, ДатаОкончания);
ЗаполнитьЗначенияСвойств(Форма.Элементы.Список.Период, лНовыйПериод);
Форма.Элементы.Список.Обновить();
КонецПроцедуры
ПоказатьВызвал из "ПриСозданииНаСервере"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот