[Механизм интерфейса] Свой флажок (чекбокс)

Публикация № 1106063

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

UX UI дизайн интерфейс флажок чекбокс checkbox программное создание элемента формы

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

Добрый день, Коллеги!

Проблема

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

Согласитесь это некрасиво. Нужно искать решение.

Решение

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

Описание решения

Алгоритм использует некую зашифрованную логику в названии элементов и в их количестве, обо всём по порядку. Рассмотрим на примере ответа на вопрос (работа которого, продемонстрирована выше).

 
 Развернуть описание

 

Варианты

Теперь понятно, что мы не ограничены в стиле флажка от платформенной версии. Теперь мы можем самостоятельно определять дизайн будущего интерфейса. Варианты использования не ограничиваются примером выше, это может быть и привычный флажок, может быть переключатель, да что угодно, что принимает состояние ДА и НЕТ – пусть хоть смайл.

Пример

К публикации прилагаю конфигурацию с готовым исполнением алгоритма и как бонус – полностью программное создание элементов формы. Все элементы формы генерируются в момент запуска. Результат таких форм показан выше в публикации. А ниже демонстрирую, что есть в конфигурации.

Для работы примера скачиваемого из публикации необходима платформа не ниже 8.3.14.1694

PS:

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

Всем удачного кодинга!

 

 

//+++ Обновление публикации от 31.08.2020 г.

//     Посмотрите новую статью "Динамическое формирование интерфейса"

//--- Обновление публикации от 31.08.2020 г.

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

Наименование Файл Версия Размер
[Механизм интерфейса] Свой флажок (чекбокс):

.cf 108,25Kb
09.08.19
22
.cf 108,25Kb 22 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Rustig 1558 09.08.19 12:56 Сейчас в теме
(0) круто! интересно!
DrAku1a; TreeDogNight; Interrupted; rpgshnik; +4 Ответить
4. rpgshnik 2338 09.08.19 13:19 Сейчас в теме
2. Serg_Tangatarov 09.08.19 12:59 Сейчас в теме
Очень неплохо, спасибо за идею, возьмем на вооружение
DrAku1a; Interrupted; rpgshnik; +3 Ответить
5. rpgshnik 2338 09.08.19 13:20 Сейчас в теме
3. m_aster 88 09.08.19 13:04 Сейчас в теме
Красиво! Только нравится и нравятся пишутся без мягкого знака.
DrAku1a; PLAstic; товарищ Ын; TreeDogNight; WellMaster; Interrupted; maksa2005; Lapitskiy; papche; Comrade88; shard; CyberCerber; user883423; chebser; Fragster; Kirill_K; rpgshnik; +17 2 Ответить
6. rpgshnik 2338 09.08.19 13:20 Сейчас в теме
Ок, позже поправлю
DrAku1a; Interrupted; +2 Ответить
12. m_aster 88 09.08.19 16:56 Сейчас в теме
(6)
Чтобы было уже все красиво и по взрослому)
Interrupted; rpgshnik; +2 Ответить
13. rpgshnik 2338 09.08.19 17:17 Сейчас в теме
7. DTS2014 09.08.19 13:21 Сейчас в теме
8. vik070777 245 09.08.19 13:28 Сейчас в теме
Спасибо весьма интересно
Interrupted; rpgshnik; +2 Ответить
9. Fragster 1020 09.08.19 14:22 Сейчас в теме
10. Fragster 1020 09.08.19 14:33 Сейчас в теме
Ну и да, у меня получилось с реквизитом, элементом типа картинка и картинкой-коллекцией в пару строк (код для обычного флажка и трех состояний):

&НаКлиенте
Процедура РеквизитБулевоНажатие(Элемент, СтандартнаяОбработка)
	РеквизитБулево = Не РеквизитБулево;
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура РеквизитЧислоНажатие(Элемент, СтандартнаяОбработка)
	РеквизитЧисло = (РеквизитЧисло + 1) % 3;
	СтандартнаяОбработка = Ложь;
КонецПроцедуры
Показать
Прикрепленные файлы:
TreeDogNight; Bessondo; Rustig; acanta; rpgshnik; CyberCerber; +6 Ответить
16. rpgshnik 2338 09.08.19 18:49 Сейчас в теме
(10) если один к одному то да. А если заранее не известно сколько вариантов ответов будет... Один или одиннадцать. После ещё нужно получить результат ответа. Тут уже двух строчек мало будет 🙂
Interrupted; Rustig; +2 Ответить
37. Fragster 1020 14.08.19 16:39 Сейчас в теме
(16)
) если один к одному то да. А если заранее не известно сколько вариантов ответов будет... Один или одиннадцать. После ещё нужно получить результат ответа. Тут уже двух строчек мало будет 🙂

Ну, генерация по одному элементу управления на реквизит всяко проще групп страниц (или что там предлагается)
11. Synoecium 700 09.08.19 15:22 Сейчас в теме
Оригинально и просто. Спасибо за статью
Interrupted; rpgshnik; +2 Ответить
23. Yashazz 3419 11.08.19 10:14 Сейчас в теме
(11) Оригинально? Хм. Очевидная же вещь.
26. Synoecium 700 11.08.19 17:51 Сейчас в теме
(23) оригинально в том плане, что вместо борьбы с типовым флажком используется обходной механизм. В 1с многое приходится делать неочевидным образом, чтобы выглядело и работало по-человечески, поэтому я одобряю такие заметки - они расширяют возможности.
PLAstic; TreeDogNight; SergeyTerentyev; kuzyara; fd13; Interrupted; rpgshnik; +7 Ответить
14. mvxyz 264 09.08.19 17:55 Сейчас в теме
Красиво. Спасибо за статью.
Interrupted; rpgshnik; +2 Ответить
15. Brawler 472 09.08.19 17:58 Сейчас в теме
Надеюсь это не будет применяться на практике.
Почему?
Боюсь зоопарка интерфейсов.
17. Craig 265 09.08.19 22:41 Сейчас в теме
(15) У меня был заказчик, которых хотел с нуля свою конфигурацию. Но от платформы 1с отказался по причине - "Стремно, один интерфейс на все, даже дизайнер не поможет..."
TreeDogNight; rpgshnik; +2 Ответить
18. Brawler 472 09.08.19 23:31 Сейчас в теме
(17) Вам шашечки нужны или ехать?
В плане интерфейса 1С очень удачно сделана и все в ней унифицировано выглядит, функционально, что есть огромный плюс.
8.3.15 так вообще еще краше стала, ну или по крайней мере новый свежий глоток воздуха.
Да есть к чему стремиться и 1С вносит все больше, и больше изменений, но все это не так просто и всегда нужно держать баланс чтобы можно было все возможности мультиплатформенно реализовать и везде одновременно, отсюда и черепаший темп разработок, но так ли нужна гонка?
Потом, если дикую расцветку хочется сделать, так уже анонсированы возможности по корпоративным стилям, можно желтое превратить в зеленое и радоваться.
Умиляют те же программисты Delphi, которые без огромных библиотек разных кнопочек жить не могут, и понимаешь, что люди сидят кнопочки рисуют на формочках, а не бизнес логику пишут.
Кнопочки разноцветные нужны ну допустим в программе проведения тестирования к примеру или в игрушках разных (это уже не тема 1С), да и там свои подходы к рисованию GUI имеются и свои фраймворки.

Зоопарк кнопочек в интерфейсе ЗЛО, пользователи и так не шибко квалифицированные, ко всему привыкают сложно, а если каждое окно будет "произведением искусства", то бедолаги вообще ноги протянут.
TreeDogNight; tsmult; Yashazz; bulpi; +4 Ответить
19. rpgshnik 2338 10.08.19 03:50 Сейчас в теме
(18)
а если каждое окно будет "произведением искусства"

Окно должно быть таким, чтобы "бедолаги" не говорили "Вася, а где инструкция к этой чудесной 1С", по этому окно быть должно произведением дизайна.
TreeDogNight; +1 Ответить
21. Craig 265 10.08.19 12:06 Сейчас в теме
(18) Да в том то и дело, когда мне озвучил заказчик - что не хочет делать на 1с, я был полон возмещения и негодования. Зоопарк плохо, требования не правильные и вообще это не проектная технология 1с ...

Спустя год я поработал с битриксом 24, амосрм, джасткликом, клиент банками от Тинькова, Открытия, Альфыбанка и понял что 1с пока не может удовлетворить потребность заказчика. И та задача которая была у заказчика, лучше реализовать на другой платформе. К слову задача была создать управленческую программу для инфобизнеса (облако, красиво, просто). А так как с программой должны будут работать "творческие личности предприниматели" то и требования к программе были дизайнерские.

Пока у всех в головах 1С = Бухгалтерия, а бухгалтерия - это унылая стандартизация процессов.

P.S. Что касается "шашечки" - 1С это и есть шашечки. (Требование к оформлению НСИ, документов, отчетов, данных в системе, стандартизация кодирования, СППР и т.д.). А поехать можно и на другой платформе.
TreeDogNight; rpgshnik; +2 1 Ответить
20. Rustig 1558 10.08.19 09:17 Сейчас в теме
(17) если ребенок съел кошачью еду, это проблема кошки, а не ребенка :)
22. Craig 265 10.08.19 12:09 Сейчас в теме
(20) Первоисточник звучит немного по другому: "Третий ребёнок - если съел кошачий корм, то это проблемы кота"
24. Yashazz 3419 11.08.19 10:17 Сейчас в теме
Ровно ничего интересного и оригинального. Очевидно напрашивающиеся решения, такие, как эмулировать "красоту" декорациями или хтмл-формой внутри 1С-формы - были ещё хз когда. Я так ещё лет 8 назад делал "круглые кнопки" в УФ и обычных формах. А теперь, когда даже в типовых конфах проскальзывают попытки это делать (например, элементы контактной информации) - и вовсе скучно.
Разве что, могу отметить, сделано достаточно аккуратно.
25. Yashazz 3419 11.08.19 10:22 Сейчас в теме
А вообще, "детская" болезнь наворотить всяких бантиков и плюшек со временем проходит. Потому что есть стандарт, к которому люди привыкают; есть вопросы психологии восприятия, которые влияют, и есть приоритет важности разработки, где интерфейс на энном месте (ну если вам только не попался клиент-придурок, которому именно шашечки). Так что порисуют-порисуют такие, а потом возвращаются в нормальный штатный вариант.

Меня тут попросили воспользоваться стилями в "Такси", ну сделал, поработали месяца два и попросили вернуть всё обратно)
27. script 223 11.08.19 22:11 Сейчас в теме
Какой капец. В 2019 году чтобы сделать нормальный чек бокс в 1С, нужно писать кучу кода, и играться с видимость элементов и картинок. Это просто позор какой-то. И не нужно здесь писать про унифицированность. Унифицированность в интерфейсах должно быть личным делом дизайнера интерфейса, а не 1С.
Seaflame; PLAstic; weeff; TreeDogNight; apostal86; 7OH; rpgshnik; +7 Ответить
38. lmnlmn 63 21.01.20 13:19 Сейчас в теме
(27) Это вы еще с деревьями на управляемой форме не работали - тут очень мало кода))
28. dandykry 5 12.08.19 08:53 Сейчас в теме
Правильно ли я понимаю:
При изменении картинки, происходит контекстный серверный вызов?
Все картинки нужно хранить в конфигурации/расширении?

Думаю проще было сделать через ascii таблицу. Там куча галочек и квадратиков. Вышло бы просто текстом. 1с это ест. Цвет и стиль заменить не проблема.

Правда вроде изменение заголовка у элемента тоже вызывает контекстный вызов сервера (точно не помню)
Silenser; TreeDogNight; dabu-dabu; Yashazz; +4 Ответить
29. Yashazz 3419 12.08.19 10:47 Сейчас в теме
(28) вот, здравый подход. И насчёт вызова сервера - 1С к счастью этим наконец занялась и убирает ненужные вызовы, может, нет уже в новых релизах.
30. rpgshnik 2338 12.08.19 11:13 Сейчас в теме
(28) Картинка не меняется, выводиться - две картинки сразу. Управление происходит видимостью элементов.
32. dandykry 5 12.08.19 12:09 Сейчас в теме
(30) Идея хорошая, я не критикую)
Я писал библиотеку по динамическому изменению формы (реквизиты элементы команды) и прошелся по граблям) В простых формах работает на ура и сделать программно красиво получается, но когда форма содержит много данных, то все очень медленно.

Например даже такая вещь http://prntscr.com/oriuiv работает быстро, если это текст, и колоссально медленно, если к наименованию выводить картинки (почти одинаково, что получить все картинки сразу, что запрашивать их только для отображаемых)
33. rpgshnik 2338 12.08.19 18:02 Сейчас в теме
(32) спасибо проверю на практике
31. VmvLer 12.08.19 11:37 Сейчас в теме
я раньше(лет 10 назад) собирал всякие картинки и рюшки.
потом понял, что глупо соревноваться в фантазии с разработчиками и выбросил все.
юзаю типовые и наверняка они(головные) стырят идею и впилят че-нить подобное, если за это будут платить.
34. user621724_Dimav1979 301 12.08.19 21:59 Сейчас в теме
Красота! А администратор 1с понять не может, куда ресурсы сервера уходят и почему система однажды колом встала.
За творчество +
Silenser; sam271091_m; +2 1 Ответить
39. Silenser 527 21.01.20 16:58 Сейчас в теме
(34) Это да, изменение видимости приводит к серверному вызову и чем сложнее форма, тем больше будет загружен сервер :(
40. kalyaka 616 04.04.20 16:54 Сейчас в теме
(39) (29)
изменение видимости приводит к серверному вызову
У меня на платформе 8.3.16.1148 изменение видимости картинки не приводит к серверному вызову
35. user1202776 13.08.19 14:11 Сейчас в теме
только на управляемых форма работает?
36. rpgshnik 2338 14.08.19 04:14 Сейчас в теме
(35) представленный алгоритм да
41. kalyaka 616 04.04.20 17:03 Сейчас в теме
нет возможности фиксации на данных декорациях курсора
Если попробовать такой код:
&НаКлиенте
Процедура НажатьЧекБокс(НомерЧека)	
...
	//  Сохранение фокуса на декорации
	Если ТекущиеСостояние Тогда
		ЭтаФорма.ТекущийЭлемент = Элементы[ИмяЧека + Строка(НомерЧека)];
	Иначе
		ЭтаФорма.ТекущийЭлемент = Элементы[ИмяЧека + Строка(НомерЧека) + "а"];
	КонецЕсли; 
КонецПроцедуры
Показать
, то курсор останется на нажатой декорации. Вы про это писали?
rpgshnik; +1 Ответить
42. rpgshnik 2338 05.04.20 07:22 Сейчас в теме
43. ITSolncev 23.07.20 10:17 Сейчас в теме
Красивая наработка для интерфейса:) +
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

1 стартмани

14.02.2015    103607    98    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    4179    5    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    5015    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    8050    7    solaru    0    

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

Практика программирования v8 1cv8.cf Бесплатно (free)

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

26.08.2013    268364    Evil Beaver    271    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    29245    3    CheBurator    63