Динамический список - как сделать отбор по дате ?
УФ. 8.3 , Розница
Есть список Чеков. Документов очень много. Как при открытии программно (!) установить отбор только за сегодня ?
Варианты фильтра - после открытия -
Пер = Новый СтандартныйПериод(НачалоДня(ТекущаяДата()),ТекущаяДата());
элементы.Список.Период = Пер;
Элементы.Список.Обновить();
Фильтруют уже отобранные данные. Т.е. сперва ты ждешь долго, потом видишь документы.
Как установить отбор в Списке до отбора данных ?
Даже ставлю дату руками, сохраняю значение - штатно. И потом ни в ПриСозданииНаСервере ни в ПриОткрытии не могу найти эти значения в отборах Списка
Есть список Чеков. Документов очень много. Как при открытии программно (!) установить отбор только за сегодня ?
Варианты фильтра - после открытия -
Пер = Новый СтандартныйПериод(НачалоДня(ТекущаяДата()),ТекущаяДата());
элементы.Список.Период = Пер;
Элементы.Список.Обновить();
Фильтруют уже отобранные данные. Т.е. сперва ты ждешь долго, потом видишь документы.
Как установить отбор в Списке до отбора данных ?
Даже ставлю дату руками, сохраняю значение - штатно. И потом ни в ПриСозданииНаСервере ни в ПриОткрытии не могу найти эти значения в отборах Списка
По теме из базы знаний
- Сложные запросы в динамическом списке или как не надо писать запросы для них
- Как "перемотать" динамический список в начало при открытии? (или некоторые нюансы получения данных динамического списка)
- Флаг "Использовать ПОЧТИ всегда", или Нюанс динамических списков
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
- Как передать Таблицу Значений в Динамический Список?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Сходу точно не скажу, но примерно следующий
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Период");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки);
Показать
Добавил , все проходит , но фактически журнал не фильтруется
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Период");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки);
КонецПроцедуры
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Период");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки);
КонецПроцедуры
Вы уверены что в динамическом списке есть поле "Период"?
Попробуйте так
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
Попробуйте так
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
(13) вот тут подробнее...
у меня
1С:Предприятие 8.3 (8.3.12.1685)
Розница, редакция 2.2 (2.2.11.16) ну тут не так важно
У меня расширением перекрыто ПриСозданииНаСервере
У вас такой же текст ?
В какую процедуру помещали ?
В списке настройки формы - Ваш отбор появился ?
у меня
1С:Предприятие 8.3 (8.3.12.1685)
Розница, редакция 2.2 (2.2.11.16) ну тут не так важно
У меня расширением перекрыто ПриСозданииНаСервере
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
//Вставить содержимое обработчика
//
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
УсловиеОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки);
ПоказатьУ вас такой же текст ?
В какую процедуру помещали ?
В списке настройки формы - Ваш отбор появился ?
(14)
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
Вот этот код использую.
В форме списка Вашего расширения, посмотрите привязана ли эта функция к событию формы "ПриСозданииНаСервере"
Отбор = Список.КомпоновщикНастроек.Настройки.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
Вот этот код использую.
В форме списка Вашего расширения, посмотрите привязана ли эта функция к событию формы "ПриСозданииНаСервере"
(16) Пробуйте так. Должно работать
Отбор = Список.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
Отбор = Список.Отбор.Элементы;
УсловиеОтбора = Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
УсловиеОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Дата");
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
УсловиеОтбора.ПравоеЗначение = ТекущаяДата();
УсловиеОтбора.Использование = Истина;
(18) пробую..
хотя так тоже пробовал вроде в процессе "проб и ошибок"
А в чем разница между -
Список.Отбор.Элементы
Список.КомпоновщикНастроек.Настройки.Отбор.Элементы
Список.КомпоновщикНастроек.ПользовательскиеНастройки.Отбор.Элементы
а то нигде не могу найти принципиальную разницу
хотя так тоже пробовал вроде в процессе "проб и ошибок"
А в чем разница между -
Список.Отбор.Элементы
Список.КомпоновщикНастроек.Настройки.Отбор.Элементы
Список.КомпоновщикНастроек.ПользовательскиеНастройки.Отбор.Элементы
а то нигде не могу найти принципиальную разницу
Попробовал. С указанием четко даты - не вышло - он точно по времени смотрит.
Поменял на
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
УсловиеОтбора.ПравоеЗначение = Дата('20190108');
работает - отбирает быстрее, открывается быстрее. .... НО ! :)
1. не видно интервала отбора - сверху формы
2. В настройках формы - нет этого фильтра.
И как бы ни ставил период , сбрасывал настройки - отбор остается
Т.е. он устанавливается и жестко и все
Поменял на
УсловиеОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
УсловиеОтбора.ПравоеЗначение = Дата('20190108');
работает - отбирает быстрее, открывается быстрее. .... НО ! :)
1. не видно интервала отбора - сверху формы
2. В настройках формы - нет этого фильтра.
И как бы ни ставил период , сбрасывал настройки - отбор остается
Т.е. он устанавливается и жестко и все
У меня сработал вот этот код:
лНовыйПериод = Новый СтандартныйПериод(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()+24*60*60));
ЗаполнитьЗначенияСвойств(Элементы.Список.Период, лНовыйПериод);
Элементы.Список.Обновить();
При этом отбор показывается в панели быстрых отборов, как будто бы период задали руками. Решение почерпнуто по этой ссылке:http://1000and1c.blogspot.com/2016/11/1.html
лНовыйПериод = Новый СтандартныйПериод(НачалоДня(ТекущаяДата()), КонецДня(ТекущаяДата()+24*60*60));
ЗаполнитьЗначенияСвойств(Элементы.Список.Период, лНовыйПериод);
Элементы.Список.Обновить();
При этом отбор показывается в панели быстрых отборов, как будто бы период задали руками. Решение почерпнуто по этой ссылке:
У меня подобная проблема возникла в ЗиКГУ в Журналах документов, особенно кадровых.
Там важна дата события, а не дата создания документа, т.е. нужны отборы по полям типа "ДатаСобытия", "ДатаНачала", "ПериодРегистрации"...
Можно, конешно, сделать в настройках два отбора по больше-меньше, но как-то фе.
Я кинул в реквизиты формы СтандартныйПериод и обрабатываю события
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
........
ПериодСобытий.ДатаНачала = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя());
ПериодСобытий.ДатаОкончания = КонецДня(ОбщегоНазначения.ТекущаяДатаПользователя());
УстановитьПараметрыОтбораПоПериоду();
...................
КонецПроцедуры
//////////////////////////////////////////////////////////// /////////////////////////////
#Область ОтборПоПериодуДатыСобытий
&НаКлиенте
Процедура Подключаемый_ВыбратьПериод(Команда)
ВыбратьПериод(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ПериодСобытийДатаНачалаПриИзменении(Элемент)
Если ПериодСобытий.ДатаОкончания < ПериодСобытий.ДатаНачала Тогда
ПериодСобытий.ДатаОкончания = ПериодСобытий.ДатаНачала;
КонецЕсли;
УстановитьПараметрыОтбораПоПериоду();
КонецПроцедуры
&НаКлиенте
Процедура ПериодСобытийДатаОкончанияПриИзменении(Элемент)
Если ПериодСобытий.ДатаНачала > ПериодСобытий.ДатаОкончания Тогда
ПериодСобытий.ДатаНачала = ПериодСобытий.ДатаОкончания;
КонецЕсли;
УстановитьПараметрыОтбораПоПериоду();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериод(Форма, ИмяКоманды) Экспорт
Путь = СтрЗаменить(ИмяКоманды, "ВыбратьПериод", "ПериодСобытий");
Контекст = Новый Структура("Форма, Путь", Форма, Путь);
Диалог = Новый ДиалогРедактированияСтандартногоПериода;
Диалог.Период = Форма[Путь];
Диалог.Показать(Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект, Контекст));
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериодЗавершение(ВыбранныйПериод, Контекст) Экспорт
Если ВыбранныйПериод = Неопределено Тогда
Возврат;
КонецЕсли;
Контекст.Форма[Контекст.Путь] = ВыбранныйПериод;
УстановитьПараметрыОтбораПоПериоду();
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыОтбораПоПериоду()
ДатаНачалаОтбора = НачалоДня(?(ЗначениеЗаполнено(ПериодСобытий.ДатаНачала), ПериодСобытий.ДатаНачала, НачалоГода(ОбщегоНазначения.ТекущаяДатаПользователя())));// '00010101'));
ДатаОкончанияОтбора = КонецДня(?(ЗначениеЗаполнено(ПериодСобытий.ДатаОкончания), ПериодСобытий.ДатаОкончания, ОбщегоНазначения.ТекущаяДатаПользователя()));
ПолеСобытия = Новый ПолеКомпоновкиДанных("ДатаСобытия");
Отборы = ЭтаФорма.Список.Отбор.Элементы;
Если Отборы.Количество() = 0 Тогда
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
Отбор.Использование = Истина;
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
Отбор.Использование = Истина;
Иначе
Для каждого Отбор ИЗ Отборы Цикл
Если Отбор.ЛевоеЗначение = ПолеСобытия Тогда
Если Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
Отбор.Использование = Истина;
ИначеЕсли Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
Отбор.Использование = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Там важна дата события, а не дата создания документа, т.е. нужны отборы по полям типа "ДатаСобытия", "ДатаНачала", "ПериодРегистрации"...
Можно, конешно, сделать в настройках два отбора по больше-меньше, но как-то фе.
Я кинул в реквизиты формы СтандартныйПериод и обрабатываю события
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
........
ПериодСобытий.ДатаНачала = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя());
ПериодСобытий.ДатаОкончания = КонецДня(ОбщегоНазначения.ТекущаяДатаПользователя());
УстановитьПараметрыОтбораПоПериоду();
...................
КонецПроцедуры
////////////////////////////////////////////////////////////
#Область ОтборПоПериодуДатыСобытий
&НаКлиенте
Процедура Подключаемый_ВыбратьПериод(Команда)
ВыбратьПериод(ЭтотОбъект, Команда.Имя);
КонецПроцедуры
&НаКлиенте
Процедура ПериодСобытийДатаНачалаПриИзменении(Элемент)
Если ПериодСобытий.ДатаОкончания < ПериодСобытий.ДатаНачала Тогда
ПериодСобытий.ДатаОкончания = ПериодСобытий.ДатаНачала;
КонецЕсли;
УстановитьПараметрыОтбораПоПериоду();
КонецПроцедуры
&НаКлиенте
Процедура ПериодСобытийДатаОкончанияПриИзменении(Элемент)
Если ПериодСобытий.ДатаНачала > ПериодСобытий.ДатаОкончания Тогда
ПериодСобытий.ДатаНачала = ПериодСобытий.ДатаОкончания;
КонецЕсли;
УстановитьПараметрыОтбораПоПериоду();
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериод(Форма, ИмяКоманды) Экспорт
Путь = СтрЗаменить(ИмяКоманды, "ВыбратьПериод", "ПериодСобытий");
Контекст = Новый Структура("Форма, Путь", Форма, Путь);
Диалог = Новый ДиалогРедактированияСтандартногоПериода;
Диалог.Период = Форма[Путь];
Диалог.Показать(Новый ОписаниеОповещения("ВыбратьПериодЗавершение", ЭтотОбъект, Контекст));
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьПериодЗавершение(ВыбранныйПериод, Контекст) Экспорт
Если ВыбранныйПериод = Неопределено Тогда
Возврат;
КонецЕсли;
Контекст.Форма[Контекст.Путь] = ВыбранныйПериод;
УстановитьПараметрыОтбораПоПериоду();
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыОтбораПоПериоду()
ДатаНачалаОтбора = НачалоДня(?(ЗначениеЗаполнено(ПериодСобытий.ДатаНачала), ПериодСобытий.ДатаНачала, НачалоГода(ОбщегоНазначения.ТекущаяДатаПользователя())));// '00010101'));
ДатаОкончанияОтбора = КонецДня(?(ЗначениеЗаполнено(ПериодСобытий.ДатаОкончания), ПериодСобытий.ДатаОкончания, ОбщегоНазначения.ТекущаяДатаПользователя()));
ПолеСобытия = Новый ПолеКомпоновкиДанных("ДатаСобытия");
Отборы = ЭтаФорма.Список.Отбор.Элементы;
Если Отборы.Количество() = 0 Тогда
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
Отбор.Использование = Истина;
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
Отбор.Использование = Истина;
Иначе
Для каждого Отбор ИЗ Отборы Цикл
Если Отбор.ЛевоеЗначение = ПолеСобытия Тогда
Если Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
Отбор.Использование = Истина;
ИначеЕсли Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
Отбор.Использование = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Вообще-то, в ЗиКГУ в механизме Установить период есть возможность
выбрать Показать стандартные периоды и установить Сегодня
В Вашей ситуации, если нет потребности в последующем изменении периода, достаточно:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
........
УстановитьПараметрыОтбораПоПериоду(ПолеСобытия, ДатаНачалаОтбора, ДатаОкончанияОтбора);
//ГДЕ:
//ПолеСобытия = Новый ПолеКомпоновкиДанных("Дата");
//ДатаНачалаОтбора = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя());
//ДатаОкончанияОтбора = КонецДня(ОбщегоНазначения.ТекущаяДатаПользователя());
//Ускорит процесс открытия формы - отключить стандартную установку периода
...................
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыОтбораПоПериоду(ПолеСобытия, ДатаНачалаОтбора, ДатаОкончанияОтбора)
Отборы = ЭтаФорма.Список.Отбор.Элементы;
Если Отборы.Количество() = 0 Тогда
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
Отбор.Использование = Истина;
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
Отбор.Использование = Истина;
Иначе
Для каждого Отбор ИЗ Отборы Цикл
Если Отбор.ЛевоеЗначение = ПолеСобытия Тогда
Если Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
ИначеЕсли Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
выбрать Показать стандартные периоды и установить Сегодня
В Вашей ситуации, если нет потребности в последующем изменении периода, достаточно:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
........
УстановитьПараметрыОтбораПоПериоду(ПолеСобытия, ДатаНачалаОтбора, ДатаОкончанияОтбора);
//ГДЕ:
//ПолеСобытия = Новый ПолеКомпоновкиДанных("Дата");
//ДатаНачалаОтбора = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя());
//ДатаОкончанияОтбора = КонецДня(ОбщегоНазначения.ТекущаяДатаПользователя());
//Ускорит процесс открытия формы - отключить стандартную установку периода
...................
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыОтбораПоПериоду(ПолеСобытия, ДатаНачалаОтбора, ДатаОкончанияОтбора)
Отборы = ЭтаФорма.Список.Отбор.Элементы;
Если Отборы.Количество() = 0 Тогда
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
Отбор.Использование = Истина;
Отбор = Отборы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = ПолеСобытия;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
Отбор.Использование = Истина;
Иначе
Для каждого Отбор ИЗ Отборы Цикл
Если Отбор.ЛевоеЗначение = ПолеСобытия Тогда
Если Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаНачалаОтбора;
ИначеЕсли Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно Тогда
Отбор.ПравоеЗначение = ДатаОкончанияОтбора;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот