Имя: Пароль:
1C
1С v8
Программно установить период
0 Darkvaneker
 
26.09.23
10:23
Здравствуйте, в УФ есть стандартный отбор по периоду по кнопке "еще - установить период", как этот период можно задать при программном открытии формы? версия 8.3


На обычных формах это без проблем задавал и тут есть варианты сделать через "ФиксированныеНастройки" или "Список.КомпоновщикНастроек.Настройки.Отбор" но оба эти отбора не попадают в стандартный период, а накладываются дополнительно.
1 Мимохожий Однако
 
26.09.23
10:59
Расшифруй "накладываются дополнительно"
2 Darkvaneker
 
26.09.23
11:13
Настройки помещаются в отборы формы к примеру "дата больше 01.01.2023" а если нажать еще - установить период он пустой и если к примеру задать к примеру 01.12.2022 по 31.12.2022 то в результате не выйдет ничего.

ФиксированныеНастройки и вовсе нигде не отображаются, но работают также.

А хочется, чтоб это настройка попала в стандартный период и пользователь стандартными средствами мог поменять отображаемый период.
3 Darkvaneker
 
26.09.23
11:17
Наконец удалось это сделать.
Если кому будет нужно:
ПараметрыФормыОтбора = Новый Структура();
ПараметрыФормыОтбора.Вставить("Отбор", ОтборЗначения);        ПараметрыФормыОтбора.Вставить("ЗакрыватьПриВыборе", Ложь);        ПараметрыФормыОтбора.Вставить("РежимВыбора", Истина);
ПараметрыФормыОтбора.Вставить("ФиксированныеНастройки", НастройкиКомпоновки); ////работает, но пользователь не видет и не может изменить
        
формаВыбора = ПолучитьФорму("Документ.СтраховойПолис.ФормаВыбора", ПараметрыФормыОтбора, Элементы.СтраховыеПолиса);
        формаВыбора.Элементы.Список.Период.ДатаНачала = объект.ПериодНачала;        формаВыбора.Элементы.Список.Период.ДатаОкончания = КонецДня(Объект.ПериодКонец);
        формаВыбора.Открыть();
4 Darkvaneker
 
26.09.23
11:18
Не уверен что это самый правильный способ, но рабочий и единственный, который смог найти я
5 pinkycat
 
26.09.23
11:44
ДАТА МЕЖДУ
6 Darkvaneker
 
26.09.23
11:50
(5) можно подробнее?
7 pinkycat
 
26.09.23
12:52
(6)
Запрос = Новый Запрос(    
        "ВЫБРАТЬ
        |   Ссылка,
        |   ДОБАВИТЬКДАТЕ(Дата, Квартал, 1) КАК ПлюсКвартал,
        |   РАЗНОСТЬДАТ(Дата, &ВыбДата, Месяц) КАК РазностьВМесяцах,
        |   КВАРТАЛ(Дата) КАК Квартал,
        |   МЕСЯЦ(Дата) КАК Месяц,
        |   ДЕНЬ(Дата) КАК День
        |ИЗ
        |   Документ.ПродажаЕды
        |ГДЕ
        |   Дата МЕЖДУ
        |       НАЧАЛОПЕРИОДА(&НачалоПериода) И
        |       КОНЕЦПЕРИОДА(&КонецПериода)"
    );

Запрос.УстановитьПараметр("НачалоПериода",НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода",КонецПериода);

как то так чоле
8 Darkvaneker
 
26.09.23
13:04
(7) ну во первых пользователь это явно не сможет редактировать, а во вторых изменить запрос при получении управляемой формы еще сложнее, чем вариант выше.
9 sitex
 
naïve
26.09.23
16:12
(8) Имеешь ввиду выше списке отбор Периода не показывает ?!
10 azernot
 
26.09.23
16:45
(4) Нормально всё.

Расширение таблицы формы для динамического списка (Form table extension for dynamic list)
Период (Period)
Использование:
Чтение и запись.
Описание:
Тип: СтандартныйПериод.
Содержит период, используемый при отображении данных в динамическом списке.

Разве что, лучше период передавать параметрами, а в форме списка/выбора при создании ловить и устанавливать.
11 sitex
 
naïve
26.09.23
18:37
ПараметрыФормы = Новый Структура;
        КлючУникальности = Новый УникальныйИдентификатор;
        ФормаВыбора= ПолучитьФорму("Документ.ЗаказКлиента.Форма.ФормаВыбора",ПараметрыФормы,Этаформа,КлючУникальности);
            
        
        ПериодСтандартный = новый СтандартныйПериод;
        ПериодСтандартный.ДатаНачала = НачалоМесяца(ТекущаяДата());
        ПериодСтандартный.ДатаОкончания = КонецДня(ТекущаяДата());

        //_Форма = ОткрытьФОрму("Документ.ЗаказКлиента.Форма.ФормаВыбора",ПараметрыФормы,Этаформа,КлючУникальности,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
        
        ЗаполнитьЗначенияСвойств(ФормаВыбора.ТекущийЭлемент.Период,ПериодСтандартный);
        ЗаполнитьЗначенияСвойств(ФормаВыбора.Элементы.Список.Период,ПериодСтандартный);
        ФормаВыбора.Открыть();
        ФормаВыбора.Элементы.Список.Обновить();
12 sitex
 
naïve
26.09.23
18:39
ПараметрыФормы = Новый Структура;
        КлючУникальности = Новый УникальныйИдентификатор;        
        ПериодСтандартный = новый СтандартныйПериод;
        ПериодСтандартный.ДатаНачала = НачалоМесяца(ТекущаяДата());
        ПериодСтандартный.ДатаОкончания = КонецДня(ТекущаяДата());

        _Форма = ОткрытьФОрму("Документ.ЗаказКлиента.Форма.ФормаВыбора",ПараметрыФормы,Этаформа,КлючУникальности,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
        
        ЗаполнитьЗначенияСвойств(_Форма.ТекущийЭлемент.Период,ПериодСтандартный);
        ЗаполнитьЗначенияСвойств(_Форма.Элементы.Список.Период,ПериодСтандартный);
        _Форма.Элементы.Список.Обновить();
13 sitex
 
naïve
26.09.23
18:40
Выбере вариант который тебе нравиться
14 Darkvaneker
 
27.09.23
07:54
(12) спасибо, так примерно и сделал в итоге.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.