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

05.08.16

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ВыборПериодаДатыВремениНаУФ_Демо
.epf 90,61Kb
10
10 Скачать (1 SM) Купить за 1 850 руб.

Диалог предназначен отнюдь не для замены добротного встроенного, "красивого" Диалога 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 Платные (руб)

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

6000 руб.

16.01.2015    63020    44    59    

82

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

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

2400 руб.

29.06.2020    18895    26    6    

41

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

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

1500 руб.

06.10.2020    10262    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    17101    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7570    smielka    37    

100

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

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

27.12.2023    14908    927    elcoan    47    

117

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

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

2 стартмани

10.04.2023    11953    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kauksi 217 26.07.16 13:43 Сейчас в теме
А галактический год умеет показывать?
2. newold2 124 26.07.16 18:08 Сейчас в теме
(1) kauksi, Не-е-е... Для Вас могу сделать...
3. ValeriTim 21 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 Сейчас в теме
Форма получилась сложная поэтому не применимая
Оставьте свое сообщение