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

31.08.20

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
[Механизм интерфейса] Свой флажок (чекбокс):
.cf 108,25Kb
35
35 Скачать (1 SM) Купить за 1 850 руб.

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

Проблема

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

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

Решение

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

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

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

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

 

Варианты

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

Пример

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

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

PS:

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

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

 

 

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

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

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

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

См. также

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

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

6000 руб.

16.01.2015    62980    44    59    

82

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

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

2400 руб.

29.06.2020    18846    26    6    

41

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

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

1500 руб.

06.10.2020    10219    7    7    

10

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

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

20.08.2024    16758    mrXoxot    43    

121

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

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

27.05.2024    7327    smielka    37    

100

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

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

27.12.2023    14773    913    elcoan    47    

117

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

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

2 стартмани

10.04.2023    11905    162    acces969    31    

124
Отзывы
41. kalyaka 1105 04.04.20 17:03 Сейчас в теме
нет возможности фиксации на данных декорациях курсора
Если попробовать такой код:
&НаКлиенте
Процедура НажатьЧекБокс(НомерЧека)	
...
	//  Сохранение фокуса на декорации
	Если ТекущиеСостояние Тогда
		ЭтаФорма.ТекущийЭлемент = Элементы[ИмяЧека + Строка(НомерЧека)];
	Иначе
		ЭтаФорма.ТекущийЭлемент = Элементы[ИмяЧека + Строка(НомерЧека) + "а"];
	КонецЕсли; 
КонецПроцедуры
Показать
, то курсор останется на нажатой декорации. Вы про это писали?
rpgshnik; +1 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1747 09.08.19 12:56 Сейчас в теме
(0) круто! интересно!
criptid; DrAku1a; TreeDogNight; Interrupted; rpgshnik; +5 Ответить
4. rpgshnik 3795 09.08.19 13:19 Сейчас в теме
2. Serg_Tangatarov 108 09.08.19 12:59 Сейчас в теме
Очень неплохо, спасибо за идею, возьмем на вооружение
DrAku1a; Interrupted; rpgshnik; +3 Ответить
5. rpgshnik 3795 09.08.19 13:20 Сейчас в теме
(2) пожалуйста 👍
Interrupted; +1 Ответить
3. m_aster 114 09.08.19 13:04 Сейчас в теме
Красиво! Только нравится и нравятся пишутся без мягкого знака.
UnashevRM; Maxanamoon; DrAku1a; PLAstic; товарищ Ын; TreeDogNight; WellMaster; Interrupted; maksa2005; Lapitskiy; papche; Comrade88; shard; CyberCerber; d_neon; chebser; Fragster; Kirill_K; +18 3 Ответить
6. rpgshnik 3795 09.08.19 13:20 Сейчас в теме
Ок, позже поправлю
DrAku1a; Interrupted; +2 Ответить
12. m_aster 114 09.08.19 16:56 Сейчас в теме
(6)
Чтобы было уже все красиво и по взрослому)
Interrupted; rpgshnik; +2 Ответить
13. rpgshnik 3795 09.08.19 17:17 Сейчас в теме
7. DTS2014 09.08.19 13:21 Сейчас в теме
8. vik070777 273 09.08.19 13:28 Сейчас в теме
Спасибо весьма интересно
Interrupted; rpgshnik; +2 Ответить
9. Fragster 1151 09.08.19 14:22 Сейчас в теме
10. Fragster 1151 09.08.19 14:33 Сейчас в теме
Ну и да, у меня получилось с реквизитом, элементом типа картинка и картинкой-коллекцией в пару строк (код для обычного флажка и трех состояний):

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

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

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

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

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

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

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

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

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

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

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

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