Тот самый Рабочий стол. Возрождение легенды

Программирование - Работа с интерфейсом

75
Невероятный инструмент построения адаптивных интерфейсов.

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

Рабочий стол - это инструмент для построения адаптивных интерфейсов. В любой системе на платформе 1С:Предприятие версии 8.2 и выше.

Зачем и почему

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

А что не так тогда? Зачем городить какой-то рабочий стол?

Если не лень, перечитайте предыдущий абзац. Что видите? Что рисуют типовые интерфейсы 1С? Если лень, то я просто отвечу: они рисуют навигацию.

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

А если человек - не новый? Бухгалтер, например, или менеджер по продажам, диспетчер ПДО и т.д. Программа стоит давно, пользователи знают все, что им нужно, пользуются ограниченным количеством функциональности, и вряд ли что-то в ближайшее время поменяется. Им как быть?

В аэропорту такие люди - например, часто летающие бизнесмены или путешественники - вообще не смотрят на навигацию. Просто идут туда, куда им надо. Вы же бывали в аэропорту, и помните, как долго там надо идти? Это же процесс, иногда - весьма удручающий.

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

Если провести аналогию между 1С и аэропортом, то что получится? Купив ERP или УПП, вы получили в собственность аэропорт. Ну то есть не вы, наверное, а ваша компания, но не суть. Этот аэропорт спроектирован для всех, а пользуетесь только вы и ваши коллеги. Только представьте - корпоративный аэропорт!

Представили? Хорошо. Теперь вопрос: вам там все нравится? Нет желания, например, закрыть большинство терминалов, оставить один, чтобы не бегать по полчаса? Туалет разместить поближе к стойке регистрации? Не вплотную, а за углом, конечно. А напротив стойки поставить диванчики из ВИП-зала, чтобы не подниматься по лестнице.

И вообще, вместо огромного холодного здания, поставить маленький уютный домик, где все будет под рукой – регистрация, сдача багажа, диван для отдыха, табло с рейсами над головой, приятный ресторанчик, зарядка для телефона и wi-fi. Ну разве не прелесть?

Все, что вам нужно, уже есть в аэропорту. Только расположено не так, как надо вам, а так, как решили разработчики. Заодно натолкали кучу того, что вам не нужно. Поэтому неудобно и неуютно.

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

Общий обзор

Пора нарисовать несколько картинок. Мы нарисовали демонстрационный рабочий стол в Бухгалтерии предприятия 3.0, вот как он выглядит. image

Человек заходит в программу и сразу видит то, чего ему интересно. Сначала – ссылки на документы и отчеты, которыми он хочет пользоваться чаще всего. Нажал на ссылку – перешел в список документов или форму отчета.

Дальше человек, зачем-то, хочет видеть несколько последних отгрузок. Ну вот нравится ему следить за реализациями, и все тут. И чтобы они раскрашивались – до 10 000 рублей пусть красными будут, до 100 000 рублей – синими, свыше – зелеными. Сегодня вот не очень удачный день, нет зеленых отгрузок… Нажал на ссылку – открылся документ.

И остатки денег сразу видеть хочет, чтобы не рыться по отчетам. Пусть на рабочем столе пишутся – отдельно по расчетным счетам, сгруппированные по банкам, а касса – одной строкой.

Но надо ведь не только последние отгрузки понимать, а еще и динамику? Пусть продажи по дням рисуются в виде красивого графика! С начала месяца, допустим. Тогда не упустишь негативного тренда.

А если человек – толковый главбух или заместитель? Надо же присматривать за бухгалтерами, чтобы минусов в оборотке не наделали, а то знаю я их… Пусть прямо на рабочем столе отчетик рисуется простенький, по активным счетам, со всей необходимой аналитикой. Увижу минус – накажу…

Пойдем на вторую закладку рабочего стола. image

Что у нас тут? Быстрый просмотр поступлений. Слева – список поступлений, справа – маленький отчетик, который показывает состав документа (товары, услуги, тара). Ставишь курсор на любой документ – отчетик перерисовывается. Не надо проваливаться в документы, рыскать по закладкам и проматывать таблицы.

Перейдем на третью закладку.

image

Что видим? Счета на оплату, в виде дерева. Первый уровень – счет, второй – номенклатура, цена, сумма. А чуть выше дерева – кнопка «Согласовать». Так уж получилось, что в нашей компании нужно согласовывать счета на оплату. Зачем куда-то ходить, искать и проверять? На рабочем столе видим несогласованные счета, выбираем нужные, жмем кнопку – и вуаля! Согласование свершилось.

А что на четвертой закладке?

image

Большая кнопка, что же еще. Что она делает? А какая вам разница =514;. Секрет.

А в чем фишка?

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

Фишка в том, что все элементы рабочего стола нарисованы без использования конфигуратора. Знаете, как выглядит рабочий стол в конфигураторе? Вот так:

image

Рабочий стол не знает ничего о том, что ему придется нарисовать конкретному пользователю. Когда 1С запустится, тогда и узнает, и нарисует.

Все настройки рабочего стола и его элементов выполняются в режиме Предприятие. Демонстрационный стол, картинки с которого вы видите в этом материале, нарисован за 2 часа.

Основные возможности

Пробежимся по основным возможностям, которые нам дает рабочий стол. Их так много, что главная проблема – не забыть бы чего. Ну и новых идей – тьма.

Компоновка

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

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

Вот так выглядит настройка рабочего стола: image

Объединение рабочих столов

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

Элементы рабочего стола

Элементы рабочего стола – это такой справочник. Нарисовали один раз, например – диаграмму или динамический список, все настроили, и можете использовать в произвольном количестве рабочих столов.

Принципиально видов элементов семь: ссылка на метаданные, отчет, диаграмма, набор ссылок, динамический список, дерево, кнопка.

Ссылка на метаданные

Это самый простой вид элемента рабочего стола. Указывается объект метаданных – например, документ «Реализация товаров и услуг» или отчет «Оборотно-сальдовая ведомость» - и все, он попадет на рабочий стол в виде гиперссылки.

image

Можно добавить картинку, переопределить заголовок, изменить шрифт. При нажатии откроется соответствующая форма – список документов, форма отчета и т.д.

Кнопка

Тоже очень простой элемент, но понятный только программистам. Рисует на форме кнопку, под которой лежит команда, а в ней – написанный вами код. Можно выполнять на клиенте, можно – на сервере.

Команды – это такой справочник. Он используется не только для кнопок, но и для обработки нажатий на элементы других типов (об этом - ниже).

image

Код команд рабочего стола, как правило, связан с данными информационной базы (в отличие от команд, создаваемых в конфигураторе). Например, кнопка может создавать элемент справочника и заполнять его реквизиты определенными значениями. Где взять эти значения?

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

Отчет

Обычно руки сразу чешутся вывести на рабочий стол какой-нибудь типовой отчет. Но это – плохая мысль.

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

Поэтому в качестве источника отчетов используются схемы компоновки, лежащие в одноименном справочнике. Зачем вываливать всю оборотку, если человеку надо видеть только минусы? Зовем программиста, он за 5 минут пишет запрос на 10 строк, и перед нами – только минусы.

image

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

Диаграмма

Настраивается примерно так же, как отчет. Просто пишется схема компоновки, результат которой выводится в диаграмму. А дальше происходит магия.

Обычная диаграмма, сформированная компоновкой в виде табличного документа, выглядит страшно. Она не подстраивается под размеры экрана, вообще в него не влезает, и ничего с этим сделать нельзя – только двигая объект типа «Рисунок» кодом после формирования. Но живые люди так не делают.

Намного лучше выглядит диаграмма, нарисованная прямо на форме. Это – нормальный элемент управления, который умеет масштабироваться, не выглядит чужеродным и, вообще, довольно приятен.

Покажу на картинке, чтобы было понятнее. Слева – стандартная диаграмма в табличном документе, справа – диаграмма на форме.

image

Разве можно себе позволить пользоваться диаграммой слева? Нет, конечно. Только нормальной, масштабируемой и встроенной в форму диаграммой справа. На первом скриншоте была та же диаграмма – видели, какая она там маленькая, но при этом – вполне читаемая?

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

Динамический список

Принцип тот же, что в отчетах и диаграммах. Программист пишет схему компоновки – что хочет видеть в динамическом списке. Поля выбирает, сортировку, оформление, отборы и т.д. – все, что нужно для комфортного представления данных.

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

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

Дерево

Почти один в один – динамический список. Тоже схема компоновки, тоже копирование отборов и оформления, только на форме рисуется дерево, а не динамический список. А данные можно вывести любые.

В дереве, соответственно, можно делать группировку. Количество уровней вложенности не ограничено.

К дереву можно подключать команды (из справочника «Команды», упомянутого выше). Каждая команда нарисует кнопку на панели дерева (как на скриншоте страницы «Согласование»). При нажатии на кнопку в ее код передается контекст – дерево. Соответственно, программист может сделать с ним и его данными все, что взбредет в голову. Например, изменить реквизиты объекта, на который указал пользователь в дереве.

Набор ссылок

Самый полезный и интересный, на мой взгляд, элемент. Он позволяет вывести на рабочий стол ссылки на конкретные данные - например, на реализации, задачи, заказы и т.д.

Например, на первом скриншоте у нас были 5 последних реализаций:

image

Так вот, это и есть набор ссылок. Под ним лежит все та же схема компоновки, которая собирает нужные конкретному человеку данные и выводит на экран. Никаких табличных документов, расшифровок, кучи колонок и двойных щелчков мыши. Просто гиперссылка на нужный объект.

Набор ссылок особенно полезен, когда надо человеку вывести объекты, с которыми он должен чего-то сделать. Например, согласовать договор или заявку на расход денег. Программист пишет запрос, который фильтрует объекты по текущему пользователю, и вуаля – никуда не надо ходить, ничего фильтровать, искать и разбираться. Щелкнул по ссылке, сразу попал в объект, сделал то, что надо – и объект исчез с рабочего стола.

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

К набору ссылок можно подключать произвольное количество команд. Если команд нет, то по нажатию просто откроется объект, лежащий под ссылкой. Если команд несколько, то откроется выбор действия:

image

Что важно – в контекст выполнения команды передается не только ссылка, но и все поля, которые вернул запрос. На форме только ссылка, а запрос мог вернуть и состояние взаиморасчетов, и надежность контрагента, и наличие нужных товаров на складе – все, что угодно. И все это можно использовать внутри команды.

Прочие возможности

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

Для каждого рабочего стола можно включить автообновление с определенной периодичностью.

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

Варианты компоновки

Вариантов компоновки – бесчисленное множество, насколько хватит фантазии. Например, можно превратить рабочий стол в бешеный дашборд:

image

Диаграммы в платформе 8.3 выглядят очень симпатично, так что смотреть на такой рабочий стол весьма приятно, согласитесь. На рабочем столе они еще и на ощупь приятны – смотрите видео.

А если кто скажет, что все эти диаграммы – глупости для менеджеров, тому можно нарисовать простой, аскетичный рабочий стол, состоящий только из нужных документов, справочников и отчетов.

image

Развитие

У рабочего стола огромный потенциал развития. Там еще столько всего можно и нужно сделать, что хватит на несколько лет. И внутренняя оптимизация, и новые возможности, и фишки оформления.

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

75

См. также

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

Комментарии
Избранное Подписка Сортировка: Древо
1. user642070_seperblunt 30.11.18 14:36 Сейчас в теме
Хвастаться дак хвастаться.
Мой ответ чемберлену по вопросу рабочих столов.

https://www.youtube.com/watch?v=0pvjI32t13k
WellMaster; chebser; PLAstic; Lazio; Sla; lunjio; eeeio; muskul; Tavalik; triviumfan; Uncore; pm74; +12 Ответить
3. genayo 30.11.18 15:03 Сейчас в теме
(1) Ничто не ново под луной :)))
18. rovenko.n 05.12.18 11:24 Сейчас в теме
(3) накладная на отгрузку - это вы о чем? И ожно вопрос поконкретнее?
19. genayo 05.12.18 12:17 Сейчас в теме
(18) Вы похоже не тому и не в той теме ответили :)
20. rovenko.n 05.12.18 13:05 Сейчас в теме
(19) Да, а кнопки "удалить" я не вижу
4. pm74 130 30.11.18 15:08 Сейчас в теме
6. 1c-intelligence 6453 30.11.18 15:59 Сейчас в теме
(1) так чо, у кого круче?
7. user642070_seperblunt 30.11.18 16:04 Сейчас в теме
(6) тут и спорить нечего ;)
8. triviumfan 7 30.11.18 16:21 Сейчас в теме
(7) Так у кого все-таки больше?)
TreeDogNight; +1 Ответить
2. pm74 130 30.11.18 14:47 Сейчас в теме
(0) неплохо , идея с использованием ДЗ для компоновки интерфейса мне нравится
5. pm74 130 30.11.18 15:16 Сейчас в теме
самое смешное , что в настоящий момент тоже что то такое запиливаю ))
вобще заметил что похожие разработки появляются на ис почти одновременно
9. triviumfan 7 30.11.18 16:23 Сейчас в теме
Эээ... так а пример реализации будет?
11. 1c-intelligence 6453 30.11.18 17:48 Сейчас в теме
(9) да, на след.неделе, когда определимся с форматом. Пока просто хвастаюсь.
10. yyv-911 30.11.18 17:25 Сейчас в теме
хорошо когда кто то такое оплачивает. У нас не взлетает.
Нужно здесь и сейчас. нам это не нужно.
Сейчас по этому же принципу реализованы права доступа, некоторые отчеты и наполнение форм.
Но дорого блин.
palsergeich; +1 Ответить
12. acsent 1121 30.11.18 18:34 Сейчас в теме
Под обычные формы была такая поделка
https://infostart.ru/public/22288/
Обычному пользователю все равно такое не дашь. Он сам ничего не настроит.
А если программить, то не факт что через конфигаратор сложнее
JohnyDeath; CSiER; +2 Ответить
13. MarryJane 23 30.11.18 19:43 Сейчас в теме
Мне кажется мониторинг целевых показателей может выполнять тоже самое
14. insurgut 192 01.12.18 09:27 Сейчас в теме
(0)
Настройки рабочих столов хранятся в одноименном справочнике.

Конфигурацию необходимо снимать с поддержки для использования этой обработки? Сохранять/переносить/загружать настройки между однотипными конфигурациями можно?
15. 1c-intelligence 6453 01.12.18 10:25 Сейчас в теме
(14) снимать с поддержки надо.
Переносить можно - либо элементы целиком, либо схемы компоновки.
16. user1043867 03.12.18 18:50 Сейчас в теме
(15) Может расширением реализовать? Вообще круто будет)
17. 1c-intelligence 6453 03.12.18 19:00 Сейчас в теме
(16) далеко не всем подойдет
Оставьте свое сообщение