gifts2017

Вариант динамического интерфейса

Опубликовал Ivon (Ivon) в раздел Программирование - Работа с интерфейсом

Интерфейс представлен в виде прикрепленной формы с закладками и командными панелями, а заполняется динамически в зависимости от пользователя.

Интерфейс представлен в виде прикрепленной формы с закладками и командными панелями, а заполняется динамически в зависимости от пользователя. Когда и какими кнопками заполнять - уже Ваше дело. Не стоит заморачиваться с кучей интерфейсов. Выстраивайте интерфейс на лету. Пример показывает, как можно создавать закладки, панели, кнопки и подменю с кнопками.

Обработка "ОсновноеМеню" - выдернутая из конфы общая форма, которая открывается при старте системы.

Объекты в Конфигурации для обработки:
Добавить справочник "Интерфейсы":
 реквизитов справочника нет;
 добавить табличную часть "ИФ" в справочник "Интерфейсы":
  реквизиты табличной части "ИФ":
  "Страница" - Тип Строка(0);
  "Линия1" - Тип Строка(0);
  "Линия2" - Тип Строка(0);
  "Линия3" - Тип Строка(0);
  "Действие" - Тип Строка(0).

Добавить регистр сведений "ИнтерфейсыРисунки" непериодический, независимый.
 Измерения: "Элемент" - Тип Строка(200);
 Ресурсы: "Рисунок" - Тип Строка(0).
   
В справочник "Пользователи" добавить реквизит типа Булево "УзкийИнтерфейс"
В справочник "Пользователи" добавить табличную часть "Интерфейсы".
 Реквизиты табличной части "Интерфейсы":
  "Интерфейс" - Тип СправочникСсылка.Интерфейсы;
  "Активно" - Тип Булево (При добавлении новой строки в ТЧ должен устанавливаться на Истину);

Формы списков и элементов справичника и регистра накоплений есть в обработке, просто перетяните и назначте основными.

04.08.2009. Добавлен вертикальный вид интерфейса. Работает как дополнение к основному интерфейсу. Для того, чтобы он работал, необходимо в форме "ОсновноеМеню" ко всем процедурам добавить "Экспорт". В остальном сами решайте, кому какое меню включать. Я вот решил добавить в Пользователи булевый реквизит.

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

Наименование Файл Версия Размер
Демонстрация построения 188
.1245674842 6,39Kb
26.02.13
188
.1245674842 6,39Kb Скачать
Общая форма из рабочей конфы + описание внедрения + формы списков и элементов для регистра и справочника 88
.1247552583 22,07Kb
26.02.13
88
.1247552583 22,07Kb Скачать
- 52
.1249393898 7,91Kb
26.02.13
52
.1249393898 7,91Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. motherf 22.06.09 21:05
2. Ivon (Ivon) 23.06.09 09:34
(1). На новизну не претендую. Пример показывает саму возможность и как это реализовывается.
3. sound sound (sound) 23.06.09 10:24
Я кстати тоже когда стало надо такую штуку сначала хотел сделать панелькой с вкладками, но потом решил на хтмл-е сделать.
Глянь, может для себя что-нибудь за идею возьмешь
http://infostart.ru/projects/4559/
Не подумай, что пиарю :)
4. Ivon (Ivon) 23.06.09 10:29
(3). Как раз твой пример и натолкнул, но реализация в HTML мне не понравилась. Вообще ищу возможность добавлять стандартные контролы системы, вот тогда можно было бы развернуться. Пока не нашел.
5. sound sound (sound) 23.06.09 10:33
Ну это нормальная ситуация, не нравится чужое, пиши свое :)
Ну это уж как говорится на вкус и цвет :)
hame1e00n; +1 Ответить
6. sound sound (sound) 23.06.09 10:37
(4) Мне кстати и самому (да и юзерам моим) сначала казалось, что как-то неудобно и непривычно, а щас ничо, говорят: "придешь, запустишь и прям работать охота" :)
7. ut2k5 (ut2k5) 23.06.09 10:41
по поводу контролов, я вот сейчас пытаюсь разработать с помощью Flash ActiveX, может кто знает, что это такое, так вот флеш мне дает графическое расширение, которое в 1с естс не развито (хотя это и не надо)..., идея такая существует доп. справочник контролов, который может генерить даже пользователь (естс ответственнй пользователь), при активации панели с использованием flash компоненты при помощи протокола xml предаются данные, ну а по ним строится интерфейсная модель, идея доходит до того, что можно подгружать интерактивную карту, на которой размещены области и объекты (города, контрагенты), таким образом путем активации объекта (тупо клик) можно выписать счет или оформить доставку, что то я нафлудил....
короче вопрос такой, скажите будет ли это иметь решение?... принимаются любые мнения...
8. sound sound (sound) 23.06.09 10:50
Сейчас многие вещи частично или полностью делают с поддержкой веб интерфейса, ну и Flash там же. И вроде у 8.2 там тоже уже такой "вебный" интерфейс. Злые языки вообще поговаривают, что будущее за вебом :)
9. Ivon (Ivon) 23.06.09 18:23
(7). С флешом тоже идея хорошая. Надо будет подумать
10. Николай Войнов (nvoynov) 09.07.09 01:25
Очень полезная вещь, спасибо - сдеру завтра. Типовые интерфейсы конфигураций крайне перегружены, тогда как простым смертным пользователям 90% функций просто не нужны.
11. LavS 09.07.09 15:30
Эх, не забыть бы после завтра закачать... А то закачки на сегодня и завтра у меня уже запланированы, а как известно можно только 1 в день закачать, если рейтинг меньше 30...
13. Ivon (Ivon) 09.07.09 20:06
Интерфейс развился и теперь есть 2 варианта: изначальный и узкий, в котором вкладки заменены на обычное подменю. Это продиктовано просьбами пользователей с широкоэкранными ноутами, а у них, как правило, ширина экрана делается в ущерб высоте. Этот вариант выложу немного позже, так как его надо выдрать из конфы.
Теперь немного о самой реализации построения. Был создан справочник "Интерфейсы", состоящий изназвания и табличной части с колонками Страница, Линия1, Линия2, Линия3, Действие. Соответственно последняя линия являлась кнопкой с действием, а предыдущие линии (если они есть) - подменю. Действие = имя процедуры в модуле формы. В справочние "Пользователи" так же была добавлена табличная часть "Интерфейсы" с колонками "Интерфейс" и "Активность". Таким образом пользователю можно сделать сборный интерфейс, состоящий из нескольких. Так же у пользователя был добавлен флаг "Узкий интерфейс".
14. Ivon (Ivon) 14.07.09 10:30
Добавил форму из своей конфы и описание, что нужно для ее корректной работы. Соответственно изменил офисание.
15. Ivon (Ivon) 15.07.09 10:15
Может кто знает, как можно основную менюху програмно прятать и показывать?
16. airyashov (airyashov) 21.07.09 12:30
можно создать пустой интерфейс и переключатся на него
17. Ivon (Ivon) 22.07.09 13:04
Да я и так пустой интерфейс подставляю. Хочется просто программно прятать основное меню там где "Файл" и т.д. и обратно отображать.
18. Ivon (Ivon) 04.08.09 18:14
Добавлен вертикальный вид интерфейса.
19. Николай (betepon) 31.08.09 14:23
(18) Ivon, основываясь на вашем опыте и примере сделал собственную обработку и выложил ее сюда.
http://infostart.ru/projects/5781/
100 % совместима с Вашими обработками.
20. Николай (betepon) 10.09.09 12:31
В вашей обработке добавил возможность хранения процедур в общем модуле.
Для этого использовал подсказку.
Изменения в коде следующие:

1. В процедуре "ПередОткрытием" заменяем
Новый Действие (Эл.Действие) на Новый Действие ("КнопкаНажата")


Процедура КнопкаНажата (Элемент)
Попытка
Выполнить (Элемент.Подсказка);
Исключение
КонецПопытки;
КонецПроцедуры;

Процедура ПередОткрытием (Отказ, СтандартнаяОбработка)
....
Для каждого Эл из Элементы Цикл
СтрокаКоманды = "СобытияИнтерфейса." + Эл.Действие + "();";
...
Лин3 = Лин2.Кнопки.Добавить ....
Лин3.Подсказка = СтрокаКоманды;
...
Лин2 = Лин1.Кнопки.Добавить ....
Лин2.Подсказка = СтрокаКоманды;
...
Лин1 = ЭлементыФормы[ ....
Лин1.Подсказка = СтрокаКоманды;
...
КонецПроцедуры

Соответственно все действия переносятся в общий модуль
"СобытияИнтерфейса" и к каждому действию добавляется "Экспорт"

Преимущества - возможность использовать в одной конфигурации несколько динамических интерфейсов, а действия изменять сразу для всех интерфейсов централизованно в одном месте.
21. Ivon (Ivon) 10.09.09 17:42
(20). У меня все процедуры по интерфейсу хранятся в одном месте - общая форма "ОсновноеМеню". Если используется вертикальный интерфейс, то он все-равно обращается к процедурам формы "Основное меню". Эти же процедуры можно открыть из любого места конфигурации, то есть использование любых других видов интерфейсов так же возможно.
22. Padonak-XXI (DMSDeveloper) 07.06.10 15:32
(7) Работа с Flash в 1С возможна! Постараюсь в ближайшие день - два выложить некий пример по работе с картами.
23. Андрей Иванов (Aydrey) 08.11.11 16:06
Большое спасибо. простой и ничего лишнего. спасибо за сэкономленное время.
24. Алекс Смирнов (goodwin12) 23.12.11 13:38
25. Ivon (Ivon) 23.12.11 13:39
(24) Он не предназначен для управляемых форм.
26. Алекс Смирнов (goodwin12) 23.12.11 14:20
Да нет формы обычные просто под 8.2 сконвертировал
27. Ivon (Ivon) 23.12.11 14:21
Странно. Мы конвертили - у нас все работало. Где ошибку выдает и какую?
28. Oleg Havrysh (Oleeeg) 22.03.13 13:14
Еще бы действия генерить прямо в справочнике интерфейсов, чтоб процедуры не дописывать при добавлении какого-то нового пункта меню. Тогда пользователи смогут делать менюшки сами без участия программиста
29. Ivon (Ivon) 10.10.13 11:41
(28) Oleeeg, у себя уже дописал. Просто вписываю в "Действие" код вызова нужной формы. Сделать это несложно.