Универсальный диалог выбора периода, даты, времени в заданных границах, для любого стандарта даты и на любом языке. Управляемые формы.

05.08.16

Разработка - Работа с интерфейсом

Задуман, как диалог "от простейшего" (визуальный выбор с двойным щелчком), до насыщенного функционала ''на все случаи жизни"- всякие там меню, вводы, листания, индивидуальная настройка. Всё это в заданных абсолютных и условных границах даты , для заданных доступных реквизитов даты, для любых международных стандартов представления даты и на любом языке.

Скачать файлы

Наименование Файл Версия Размер
ВыборПериодаДатыВремениНаУФ_Демо
.epf 90,61Kb
8
.epf 90,61Kb 8 Скачать

Диалог предназначен отнюдь не для замены добротного встроенного, "красивого" Диалога 1с. Применение данного Диалога видится для случаев, когда необходимо то, чего нет  в официальном Диалоге. А именно:  границы, любой язык, любой стандарт даты, расширенные возможности выбора периода, "тонкости" выбора  даты, выбор времени.

Основная логика  Диалога построена на моей библиотеке 1с- методов  Даты, существенно переработанной,  дополненной   - самый последний вариант .

Библиотека расширения методов даты включена в данную обработку.

Сразу отвечу на вопросы, которые обязательно возникнут:

  1. Почему использованы табличные поля ?

      Есть начальные "красивые" варианты на кнопках,   ( с оттенками,  с эмуляцией выделения , с выделением текущей даты)   - работают на порядок (ки)   медленнее . Вывести на экран 200 кнопок для "движка" 1с - жуткая проблема.

  2.Почему не использовано условное оформление?

     а) Самое главное - невозможно управлять оформлением текущих строк  табличных полей  (раскраска и т.п.) - теряется смысл использования.

     б) Достаточно пункта (а).  Ещё - серьезный довесок в коде, объеме передаваемых данных,  существенное понижение скорости исполнения. Пробовал...

В надежде, что это  будет  читать кто-нибудь "заинтересованный", не могу не поделиться горечью, накопленной в процессе разработки. 

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

заголовков, на изменения ячеек других табличных полей, изменение  видимости, доступности  - не всегда и не предсказуемо - сплошной  кошмар! Заставить согласованно работать с десяток взаимосвязанных табличных  полей - еще та задача. А отсюда - затраченное время, шаманство, объем программы, скорость.

                Весьма не хватает обработчика: "ПриУстановкеНаЭлементФормы(Элемент)".

Во первых была бы решена проблема текущих строк-ячеек табличных полей, табличных документов. Сейчас при установке на них курсора - никакой реакции.  Во вторых тогда можно забыть (когда это мешает) про "гиперчувствительность" некоторых обработчиков (как и про сами эти обработчики). По сути, это был бы очень даже универсальный обработчик для затычки дыр! Конечно, если  будет реализован тщательно...

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

                Не радует "навязанность" заголовка формы , недоступность оформления,

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

Верю:  Боги-Web-Такси  когда-нибудь взглянут на  "землю". 

"...Жаль только жить в эту пору прекрасную уж не придется..."

Коротко о диалоге.

На форме диалога организованы все необходимые подсказки на выбранном  языке формы. Хороший диалог должен быть интуитивно понятным - на это надеюсь. Работает так:  "визуальная" установка даты - один щелчок на табличных полях выбора;   двойной щелчок или нажатие кнопки "Ок" - выбор и выход. Для программиста  - в процедурах и функциях масса комментариев.

О кодах реквизитов даты

Введено понятие числовых кодов реквизитов даты:

       1 - Год;  2 - Полугодие;  3 - Квартал;  4 - Месяц;  5 - Декада;  6 - Неделя; 

      7 - День(Сутки);  8 - Час;  9 - Минута;  10 - Секунда;  11 - Миллисекунда;

     12 - Микросекунда;  и т.д.

Функции из библиотеки расширения методов даты теперь работают как с кодами , так и с именами реквизитов на любом языке.  Коды более универсальны, не требуется параметра  "ИменаРеквизитов" с переводами  имен .

 

О многоязычности.

Перевод   для каждого языка реализован в виде  строки с тремя  уровнями разделителей (из-за стремления к  минимальному  размеру хранения). Строки переводов , на данный момент (в связи с отсутствием специального справочника перевода "статических" МетаОбъектов) создаются в Модуле обработки. Каждый язык представлен небольшим блоком внутри функции "ЯзыкиГруппыФорм()".  Перевод  для нового языка делается так: копируется блок известного Вам языка , заменяется код и наименование языка (если нужно- разделители) и переводятся правые подстроки ( Яндекс - Гугль и 30-40 минут).  Блоки с ненужными языками можно спокойно удалить (один должен остаться!).

 

О границах.

Определены 3 вида ограничений диалога.

    1. "Абсолютные" границы даты слева и справа. Области выбора даты  за данными  границами пользователю не доступны, цифры и слова в ячейках таблиц выбора заменены специальным символом  ( мною выбран  "-").

    2. "Условные" (или "предупреждающие") границы даты слева и справа (например, дата за границей запрета редактирования). Визуальные данные в ячейках таблиц выбора предваряются или заканчиваются, в зависимости перехода левой или правой границы специальном символом ( мною выбран  ".").

   3. Ограничения реквизитов даты. Выбор не возможен  для указанных недоступных кодов  реквизитов  даты.  Например, можно указать  коды недоступных реквизитов : "1,2,3,5,6,7,8,9,10",  будет возможен выбор только месяцев.  Недоступные реквизиты на форме выбора периода заменены специальным символом  ( мною выбран  "_"),  соответствующие подстроки маски ввода даты также заменяются этими символами; табличные поля визуального выбора даты для этих реквизитов становятся недоступными.

О поддержке стандартов представления Даты.

Введено понятие "ШаблонДаты":

Шаблон=(Префикс)(строка0)(кодР1)(строка1) ...(КодР10)(строка10)....

  Где  Префикс=(0 - ведущие нули у значений реквизитов даты)

                             (1 - только цифровые значения реквизитов с ведущими нулями)

                             (любой  другой символ - без ведущих нулей у значений реквизитов)

                КодР  - цифровой код реквизита даты (см.выше)

               Строка - любая строка без цифровых символов          

                               (нулевая и последняя строка  могут быть пустыми).             

Примеры шаблона: "07.4.1 8:9" =(0) (День).(Месяц).(Год) (Час):(Минута)

                                      "01,2,3" =(0) (Год),(Полугодие),(Квартал)

 В библиотеку добавлены 3 функции, позволяющие работать с шаблонами:  Дата_МаскаПоШаблону(...), Дата_ВСтрокуПоШаблону(...), Дата_ ИзСтрокиПоШаблону(...). Такой подход позволяет работать с любым чередованием реквизитов даты  и строковых разделителей , т.е. поддерживается любой стандарт представления даты. Не путать с форматом!  В некотором смысле Шаблон более универсален, так как дает возможность  вставлять между числовыми значениями реквизитов даты строки на любом языке; к тому же из строки даты гарантировано воссоздается дата. 

 

Особенности выбора Даты-Времени.

А)   Кроме поля ввода Даты-Времени по маске (согласно указанному международному стандарту-Шаблону),  добавлены три кнопки: Предыдущая, Текущая и Следующая даты. При нажатии - меню выбора реквизита Даты на текущем языке формы.

Б)   Предусмотрены три  режима Диалога с возможность выбора  (введено соответствующее поле выбора ):

       -  (0). Текущий.  При выборе значения текущего реквизита Даты значения всех последующих  остаются неизменными;  цвет текста в таблицах выбора - черный.   

       -  (1). Начальный.  При выборе значения текущего реквизита Даты значения всех последующих устанавливаются в начало; цвет текста  в таблицах - темно-красный.   

       -  (2).Конечный .  При выборе значения текущего реквизита Даты для всех последующих устанавливается конечное значение;  цвет текста в таблицах - темно-зеленый.

В)   Предусмотрен выбор текущего реквизита Даты  и "листание" его значений с любым шагом (количеством соответствующих этому реквизиту периодов).  Для этого введены

       два поля:

       -   выбора текущего реквизита Даты;

       -  ввода-выбора количества  периодов листания и самого листания.                   

      При выборе текущего реквизита  Даты становятся активными строка и ячейка соответствующей таблицы выбора . И наоборот - при активизации Таблицы-Строки-Ячейки устанавливается  имя текущего реквизита в вышеуказанное поле. К сожалению, поле выбора текущего реквизита Даты  пришлось ввести из-за трудности визуального определения , какая же Таблица-Строка-Ячейка на данный момент  является, так сказать "глобально- активной" на форме, а также невозможностью смены реквизита Даты путем  установки курсора на активную  ячейку другой таблицы выбора (ни какой реакции!). Таков уж интерфейс  1с...

Г)    При завершении  работы диалога в параметры выводятся Дата начала и Дата конца периода, соответствующего текущему выбранному реквизиту выбранной Даты.

      Таким образом диалог в режиме выбора  Даты, Времени  или Даты-Времени можно использовать  для выбора "простейшего"  периода.

 

Особенности выбора Периода.

А)  Для визуального выбора дат начала и конца Периода используются те же  табличные поля,  что и при выборе Даты (см. выше). Предусмотрены два режима их работы: выбор начала периода (РежимДиалога=1, цвет текста ="ТемноКрасный") и  выбор  конца периода (РежимДиалога=2, цвет текста ="ТемноЗеленый"). Переключение режимов осуществляется специальными кнопками :  "<" ,  ">"  или непосредственной "ручной" установкой Даты-Времени  в поле ввода даты начала или конца периода.  Для отображения выбора начала и конца периода предусмотрены две строки    заголовка вверху формы, для отображения и управления - две строки внизу формы  (с полями, кнопками).         

Б)  Для отображения и выбора имени текущего Периода и выбора-ввода количества Периодов  правее табличных полей выбора даты  на форму добавлены две колонки: с именами Периодов и соответственно, с их Количеством. Добавлен  флаг фиксации Периода - "Фиксировано".  При установленном флаге  выбранный  Период и его длина остаются неизменными при выборе даты начала или конца периода,  т.е. Период  становиться как бы "привязанным " к дате начала или конца.

В)   Несколько слов о выборе "не фиксированного" Периода  ("фиксированный" описан выше). 

       1. Режим выбора начала Периода.  При смене текущего реквизита Даты автоматически в колонке имен периодов становиться активной ячейка с именем, соответствующем текущему реквизиты Даты, количество этих периодов устанавливается в  1.

           При смене ЗНАЧЕНИЯ  текущего реквизита  Даты (текущий реквизит тот же )  ранее установленное количество периодов не изменяется. После выбора даты начала периода в колонке имен Периодов можно выбрать любой Период, в т.ч. и не соответствующий  текущему реквизиту Даты,  в колонке длины можно ввести-выбрать количество этих Периодов. Таким образом Период и его длину можно устанавливать  независимо от даты начала периода.  

        2. Режим выбора конца Периода. На основании установленной ранее Даты начала периода и выбранной Даты конца периода производиться поиск подходящего Периода и его длины (количества периодов), что и отражается  в соответствующих колонках Периода (если ничего подходящего не найдено - в секундах).  Выбор имени Периода мною заблокирован (не имеет смысла, лишнее это).  Зато есть возможность выбора-ввода длины (количества) любого Периода, которая прибавляется к Дате начала периода;  Дата конца периода и ее отображение в таблицах выбора изменяется соответствующим образом. Таким образом можно выбирать Дату конца периода - подбирается период и длина или вводить-выбирать длину периода (и соответственно, Период) - изменяется Дата конца периода и ее визуальное отображение.

 

О недостатках.

а)  Код  (да простят мне это слово гуру низких языков) далек от совершенства, как по скорости исполнения, так и по лаконичности. Конечно же, возможны ошибки. Единственное оправдание:  все-таки много чего охвачено.

б) Пока не реализован  реверсивный откат последнего действия.

в)  Пока не  реализованы  любые стандарты номера дня начала недели.

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61797    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54403    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

2400 руб.

29.06.2020    16698    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10738    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    9615    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12080    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kauksi 216 26.07.16 13:43 Сейчас в теме
А галактический год умеет показывать?
2. newold2 124 26.07.16 18:08 Сейчас в теме
(1) kauksi, Не-е-е... Для Вас могу сделать...
3. ValeriTim 20 27.07.16 17:25 Сейчас в теме
Как по мне, так форма слишком перегружена элементами ... может кому и нравится так ....
rpgshnik; +1 Ответить
4. newold2 124 27.07.16 23:37 Сейчас в теме
(3) ValeriTim, В объеме предоставляемого функционала старался сделать ее (форму) как можно более "спартанской". Если подскажите, что убрать - очень легко перенести в Настройки.
Надеюсь, против клавиши "Настройка" (она уже есть) Вы против не будете?
5. Gnevyshev_an 29.06.18 11:56 Сейчас в теме
Форма получилась сложная поэтому не применимая
Оставьте свое сообщение