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

12.01.19

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

Небольшой лайфхак для повышения удобства редактирования пользователем полей с типом "Дата".

Возможно, о данном "приеме" известно многим, хотя сам случайно увидел его у коллеги при том, что уже 7 лет работаю 1С-программистом.

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

Самым очевидным и простым решением проблемы, как лично я считал до недавнего времени, является создание отдельных реквизитов формы для каждого реквизита объекта с типом "Дата" с форматами редактирования под необходимую часть даты. То есть при наличии у документа стандартного реквизита "Дата" на форме объекта можно создать реквизиты формы "ДатаДата" и "ДатаВремя", например, с форматами дат "dd.mm.yyyy" и "HH:mm" соответственно, причем у времени убрать кнопку выбора и добавить кнопку регулировки. Но при таком варианте помимо создания реквизитов форм под каждую нужную дату объекта необходимо ещё в модуле формы описать заполнение реквизитов формы при создании формы на сервере и заполнение реквизита объекта при изменении каждого элемента-части даты.

Как оказалось, проще всего вспомнить тот факт, что элемент формы отображает данные, указанные в свойстве "ПутьКДанным", но эта связь может иметь вид "Один ко многим" - одни и те же данные могут отображаться несколькими угодно элементами формы! Поэтому для решения задачи отдельного отображения и редактирования даты и времени достаточно создать два элемента формы, которые будут ссылаться на одну и ту же дату, установить для них различные форматы редактирования, а также установить свойства "КнопкаВыбора" в "Нет" и "КнопкаРегулирования" в "Да" для элементов отображения времени. Это даст возможность удобно для пользователя редактировать на форме дату и время раздельно без строчки кода для разработчика. Важно также, что необязательно разделять дату всего лишь на две части - можно, к примеру, выводить отдельно часы и минуты друг от друга и так далее.

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

Icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY

управляемые формы дата время

См. также

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

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

6000 руб.

16.01.2015    62986    44    59    

82

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

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

2400 руб.

29.06.2020    18855    26    6    

41

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

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

1500 руб.

06.10.2020    10224    7    7    

10

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

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

20.08.2024    16802    mrXoxot    43    

121

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

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

27.05.2024    7353    smielka    37    

100

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

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

27.12.2023    14789    913    elcoan    47    

117

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

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

2 стартмани

10.04.2023    11914    162    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. acanta 12.01.19 22:07 Сейчас в теме
Супер. Давно такую искала. Спасибо.
pavelpribytkin96; Jimbo; drmaxart; +3 Ответить
2. drmaxart 149 12.01.19 22:14 Сейчас в теме
(1)Спасибо, приятно слышать!
pavelpribytkin96; Jimbo; +2 Ответить
3. ltfriend 13.01.19 08:19 Сейчас в теме
Это самый очевидный и простой способ, а не создавать лишние реквизиты. Применимо и к обычным формам.
pavelpribytkin96; Jimbo; drmaxart; +3 Ответить
7. drmaxart 149 13.01.19 13:17 Сейчас в теме
(3) согласен! По этой причине я и уточнил, что именно лично я считал так до осознания описанного варианта
pavelpribytkin96; +1 Ответить
4. motorsoft 3 13.01.19 11:46 Сейчас в теме
Отлично, взял на заметку
pavelpribytkin96; drmaxart; +2 Ответить
5. rozer 311 13.01.19 12:11 Сейчас в теме
6. MCV 13.01.19 13:16 Сейчас в теме
8. acanta 13.01.19 13:29 Сейчас в теме
Вопрос: как должен выглядеть обработчик, чтобы при регулировании минут минуты были кратны, например 10?
9. drmaxart 149 13.01.19 14:33 Сейчас в теме
(8)Нужно реализовать обработчик события Регулирования у поля минут, в нём параметр Направление позволяет определить, какая из кнопок регулирования была нажата. При нажатии на увеличение (вверх) параметр равен 1, при нажатии на уменьшение (вниз) - равен -1. То есть ставим СтандартнаяОбработка в ЛОЖЬ и пишем Дата = Дата + 600 * Направление
pavelpribytkin96; programmer_87; DrAku1a; gradi; rpgshnik; acanta; +6 Ответить
10. kolosof 13.01.19 15:44 Сейчас в теме
11. kembrik 10 14.01.19 10:45 Сейчас в теме
Способ кстати прекрасно работает и на обычных формах, именно там я его и подсмотрел у предшественника, отлично мигрировал в управляемые. От кнопок выбора даты и переметки времени совсем отказались в итоге, данный функционал используется при таксировке путевых листов, там операторы обрабатывали путевые с клавиатуры с дикой скоростью, лишние контролы и мышка только замедляли процесс. Мы еще цветом подсвечиваем и шрифтами выделяем, совсем глазасто получается
Прикрепленные файлы:
drmaxart; +1 Ответить
12. dock 44 14.01.19 22:39 Сейчас в теме
Как оказалось, проще всего вспомнить тот факт, что элемент формы отображает данные, указанные в свойстве "ПутьКДанным", но эта связь может иметь вид "Один ко многим" - одни и те же данные могут отображаться несколькими угодно элементами формы!

Если такие вещи приходят "сам случайно увидел его у коллеги ", то как же у нас всё плохо с обучением...
Или в 1С-ники приходят совсем не программисты...
З.Ы. автору благодарность за наставление юных подаванов на пусть истины ;)
13. drmaxart 149 14.01.19 22:44 Сейчас в теме
(12)Ну за чем так критично - этот факт все знают, просто лично я вот просто не задумывался о таком варианте применения, в голову не приходило. Бывает)
14. dock 44 14.01.19 23:04 Сейчас в теме
(13) :) вот в этом и есть отличие в образовании. Я открыл статью, думал реально "что-то"... Посмотрел свой код, вспомнил как писал: у меня просто даже мысли не было, что можно сделать как-то по другому :) Скорее были тесты на правильное поведение системы.
Лирика:
Когда ты ещё студент, очень многие принципы/методы/подходы просто закладываются чуть ли не на уровень подсознания.
Закладывается базис, который в дальнейшем вырабатывается в стиль - почерк. Одно дело, когда ты в 20 лет на курсе по базам данных выполняешь лабораторные работы по приведению БД к 6-й нормальной форме и к окончанию курса ты просто не можешь сделать базу менее чем в 3-й НФ (что и обещал преподаватель)... И совсем другое дело, когда ты в 30 лет узнаешь вообще о том, что БД оказывается-то реляционная...
С опытом только по коду начинаешь определять, из какой сферы пришёл человек в программисты 1С.
Yashazz; ZOMI; +2 Ответить
15. Danilov 15.01.19 09:19 Сейчас в теме
Отлично, взял на заметку
ValentinGushchin; drmaxart; +2 Ответить
16. suepifanov 1071 15.01.19 14:56 Сейчас в теме
дополнительно к этому можно сделать список быстрого выбора времени как, например, сделано в УНФ.
Кнопка выпадающего списка = да, и ПриСозданииНаСервере заполнить список нужными интервалами.

// Процедура заполняет список выбора времени.
// Параметры:
//  ПолеВводаФормы  - элемент-владелец списка,
//  Интервал        - интервал, с которым необходимо заполнить список, по умолчанию час.
Процедура ЗаполнитьСписокВыбораВремени(ПолеВводаФормы, Интервал = 3600, Начало = '00010101080000', Окончание = '00010101200000') Экспорт
	
	СписокВремен = ПолеВводаФормы.СписокВыбора;
	СписокВремен.Очистить();
	
	ВремяСписка = НачалоЧаса(Начало);
	
	Пока НачалоЧаса(ВремяСписка) <= НачалоЧаса(Окончание) Цикл
		
		Если НЕ ЗначениеЗаполнено(ВремяСписка) Тогда
			ПредставлениеВремени = "00:00";
		Иначе
			ПредставлениеВремени = Формат(ВремяСписка,"ДФ=ЧЧ:мм");
		КонецЕсли;
		
		СписокВремен.Добавить(ВремяСписка, ПредставлениеВремени);
		
		ВремяСписка = ВремяСписка + Интервал;
		
	КонецЦикла;
	
КонецПроцедуры
Показать
Прикрепленные файлы:
pavelpribytkin96; drmaxart; +2 Ответить
17. androgin 15.01.19 20:59 Сейчас в теме
я конечно извиняюсь, но это не лайфхак, а тупость, при чем всем известная еще стотыщ лет назад
PLAstic; Yashazz; proonec; ZOMI; +4 2 Ответить
18. drmaxart 149 15.01.19 21:16 Сейчас в теме
(17)ну не для всех. Я смотрю, у Вас ко всем публикациям есть претензии. На Инфостарте много статей о вещах, которые кто-то знает, а кто-то - нет. Им поможет, для такого обмена информацией ресурс и создан
MCV; pavelpribytkin96; Дон Кихот; snood; ivnik; +5 Ответить
20. androgin 16.01.19 15:24 Сейчас в теме
(18) то есть по факту вам сказать нечего. поперлись копаться и искать к чему бы в ответ прицепиться?
Это вас характеризует явно не в положительном ключе))))
Уверен, что этот ресурс создан не для дошкольных публикаций и очевидных вещей, которые должен знать каждый программист. Тут гораздо более сложные и ПОЛЕЗНЫЕ материалы публикуются, а не два элемента одного реквизита с разным форматированием
21. Yashazz 4790 27.08.21 15:31 Сейчас в теме
(20) к сожалению, похоже, что сложные и полезные нафиг никому не нужны, а вот дошкольно-пионерские "лайфхаки" подобно этому, что собрал более 70 плюсов, нужны. Увы. Если когда-то этот ресурс и был создан для профи, то после взятия курса на "капитализацию" единственная цель - раскрутка. А плюсики, они, как и деньги, не пахнут.
19. ZOMI 141 16.01.19 14:53 Сейчас в теме
Автору пора уже готовить доклад для Infostart Event. Так лаконично разжевал такую сложную тему.
PLAstic; Yashazz; ivnik; androgin; +4 Ответить
Оставьте свое сообщение