Выбор периода и диапазонов для режимов "Управляемое приложение" и "Обычное приложение"


Форма выбора (одним действием) произвольного количества диапазонов с использованием элемента "Поле календаря"
В качестве бонуса: стандартный диалог "Настройка периода" из режима "Обычное приложение"

Форму «ВыборДаты» можно поместить в общие формы, пример вызова — команда «ВыбратьДиапазоны» в основной форме

Форма при закрытии с «ОК» возвращает структуру с ключами «ДатаНачала», «ДатаОкончания», закрытие с «Отмена» — возвращает Неопределено

 

 

В случае завершения выбора на первой закладке ключ «Интервалы» — массив, содержащщий массивы дат выбранных интервалов

«ДатаНачала», «ДатаОкончания» в этом случае содержат, соответственно, — первую дату первого диапазона и последнюю дату последнего диапазона

UPD_20130226: добавил обработку для обычного режима

UPD_20130715: для режима «Управляемое приложение»

доработал: yuraos  (обсуждение в комментариях)

15 Comments

  1. yuraos

    Люблю делать первый пост в статье!

    😀 😀 😀 😀 😀 😀 😀

    Reply
  2. yuraos

    (1),

    А знаете почему???



    Во первых,

    потому что смайликов можно в первом посте навставлять.

    А во вторых,

    потому что потом в рассылке на е-мэйл в сообщениях говорится,

    что Я — АВТОР СТАТЬИ !!!

    🙂

    Reply
  3. yuraos

    (2),

    ну а если серьезно,

    плюс автору за то, что реализовал традиционный диалог выбора периода для тонкого клиента.

    чесно говоря я уже запарился лазить по дурацкому списку выбора стандартного периода,

    который пришел в 1С с системой компоновки данных,

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

    Reply
  4. nnn

    (3)

    еще, -думаю, — интересно: диалог можно дорабатывать в отличие от системного

    к примеру: если привязать диалог к календарю, то пользователю можно выбирать периоды с учетом визуально отображенных праздников, выходных дней

    он там мышкой растягивается — хоть на год 🙂

    Reply
  5. yuraos

    (4) nnn,

    да безусловно.

    я уже тоже кое-что начал делать в этом направлении.

    правда я в основном «варюсь» под 8.1 и до управляемого интерфеса дело не дошло.

    и вообще до этого как-то руки не доходют — остановился на функционале закладки «Период» диалога выбора.

    так что вы меня опередили

    🙂

    Reply
  6. yuraos

    (5),

    Я правда изначально поставил усложненную задачу:

    сделать так,

    чтобы форма обработки полностью имитировала объект «НастройкаПериода»

    то есть имела бы те же экспортные методы и атрибуты.

    Это было бы удобно при использовании:

    получил форму и используй ее вместо объекта «НастройкаПериода».

    Вот вам еще хорошая идея, можете покапать и в этом направлении,

    заодно создать для общности и формы для обычного интерфейса.

    Reply
  7. yuraos

    (3),

    пара критических замечаний:

    1) в толстом клиенте в режиме управляемого приложения валятся ошибки времени выполнения

    из-за попытки присвоения значения атрибуту глобального контекста «РабочаяДата»,

    который обычно доступен только для чтения.

    2) при работе формы выбора дат выполняются серверные вызовы, которых с моей точки зрения,

    можно было избежать.

    Покрайней мере точно можно заменить на внеконтекстные серверные вызовы.

    Reply
  8. nnn

    yuraos, спасибо за замечания

    по поводу ошибки — обязательно проверю

    по поводу замены серверного вызова на внеконтекстсный серверный — если отправите обработку (d.n[]bk.ru) с рекомендуемыми Вами изменениями — выложу тут как новую версию с соотв. комментириями о Вашем участии

    я двумя руками «за» совместную разработку — самому времени не хватает довести до ума

    Reply
  9. yuraos

    (8) nnn,

    на всякий случай скачал последнюю версию обработки.

    подтверждаю дефект:

    в толстом клиенте (управляемое)

    если тычить по переключателям на закладках «Интервал» и «Период»

    вываливается ошибка времени выполнения:


    {Форма.ВыборДаты.Форма(632)}: Поле объекта недоступно для записи (РабочаяДата)

    РабочаяДата = Рабочая_Дата();
    Reply
  10. yuraos

    (9)

    можете как говорится не дожидаясь меня править код.





    в принципе я поправил обработку:

    осталось только одна функция, с вызовом сервера с клиента:

    &НаСервереБезКонтекста
    Функция РазностьДат(Дата1, Дата2, ЕдиницаИзмерения = Неопределено) Экспорт
    

    которую тоже можно заменить на арифметические действия с датами



    если отправите обработку (d.n[]bk.ru) с рекомендуемыми Вами изменениями

    адресок в скобках — ето что ???

    Reply
  11. nnn

    [] = @

    🙂

    Reply
  12. yuraos

    (11) nnn,

    подправленный файлец на указанный адресок

    отправил в порядке, так сказать, дружеского разбора реализации.

    всего я потратил на правку минут 20-30.

    больще всего пришлось повозиться с функцией ДО().



    что вы с ней перемудрили.

    лучше было-бы все действия с этой функцией

    выполнить в самом конце — при выборе в форме.

    Reply
  13. yuraos

    (8)

    PS,

    на счет сотруднечества:

    я наконец допилил до товарного вида свой вариант.

    в том виде, в каком я его задумал.

    Reply
  14. yuraos

    (13)

    Моя обработка просто имитирует системный диалог

    (+ режим выбора «Редактировать как стандартный период«).

    Сделана добротно, досконально и весьма концептуально.

    Было бы неплохо «прикрутить» к ней ваш режим выбора,

    обозвав его, например, «Редактировать как календарь«

    Reply
  15. psa247

    (14) кошак не в себе)))

    Reply

Leave a Comment

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