Выбор периода на управляемой форме почти как на обычных формах



Простой механизм выбора периода на управляемой форме максимально похожий на аналог в обычных формах, тестировалось на платформах 8.3.8.ХХХ и выше.

Для начала создаем реквизиты формы с типом дата, например НачПериода (Заголовок: Период с) и КонПериода (Заголовок: по), СоставДаты — Дата и время, реквизит с типом СтандартныйПериод — ВыборПериода. На форме создаем группу с горизонтальной группировкой и размещаем наши реквизиты: НачПериода, КонПериода, ВыборПериода.Вариант, ВыборПериода. Чтобы элементы ВыборПериодаВариант и ВыборПериода выглядели как кнопки ниспадающего списка и выбора, делаем следующее: в свойствах устанавливаем АвтоМаксимальнаяШирина = Ложь (снимаем галку), МаксимальнаяШирина=1. Далее в модуле формы создаем обработчики на событии ПриИзменении для этих элементов

Примечание: если в периоде не нужно использовать время в составе даты, то можно в качестве элементов даты применить ВыборПериода.ДатаНачала, ВыборПериода.ДатаДатаОкончания, задав заголовки.

&НаКлиенте
Процедура ВыборПериодаВариантПриИзменении(Элемент)
ИзменитьПериод();
КонецПроцедуры

&НаКлиенте
Процедура ВыборПериодаПриИзменении(Элемент)
ИзменитьПериод();
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьПериод()
НачПериода=НачалоДня(ВыборПериода.ДатаНачала);
КонПериода=КонецДня(ВыборПериода.ДатаОкончания);
КонецПроцедуры

Собственно, и все.

6 Comments

  1. nestokay

    Можно и без реквизитов на форме создавать диалог выбора периода, с передачей дат в нужные реквизиты.

    &НаКлиенте
    Процедура ОткрытьСписокПодбора(Команда)
    Диалог = Новый ДиалогРедактированияСтандартногоПериода();
    Диалог.Период = Новый СтандартныйПериод(Объект.ДатаН, Объект.ДатаК);
    Диалог.Показать(Новый ОписаниеОповещения(«ВыборПериодаЗавершение», ЭтотОбъект, Новый Структура(«Диалог», Диалог)));
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ВыборПериодаЗавершение(Период, ДополнительныеПараметры)
    Диалог = ДополнительныеПараметры.Диалог;
    Объект.ДатаН = Период.ДатаНачала;
    Объект.ДатаК = Период.ДатаОкончания;
    КонецПроцедуры
    
    

    Показать

    Reply
  2. independ

    (1) можно, здесь основная фишка в том, как просто сделать кнопки списка и выбора периода без лишней информации

    Reply
  3. nestokay

    (2) я понял Вас:) добавил свои пять копеек, вдруг тоже кому-то пригодится, не создавать же вторую статью:)

    Reply
  4. acsent

    можно еще просто кинутьтип стандартный период на форму

    Reply
  5. Stanislav0505

    (4) Ага, только усложнил зачем-то всё

    Reply
  6. rpgshnik

    (4)тоже не понял, чем удобнее стандартного периода

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *