Подмена рабочего стола

13.03.11

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

Несколько слов о рабочем столе в 1С 8.2, о том, что нельзя открыть произвольную форму при переключении подсистемы, а так же простой способ "обмануть" это ограничение (с примером).

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

Наименование Файл Версия Размер
DesktopReplacement.zip
.zip 7,83Kb
317
.zip 7,83Kb 317 Скачать

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

Когда мне понадобилось несколько рабочих столов по подсистемам, я решил так: добавлю на рабочий стол одну форму, сделаю у нее закладок по количеству подсистем и на каждой закладке нарисую все, что мне нужно. А отображение стандартных закладок подсистем можно будет и вовсе отключить.
Сначала все было в порядке. Но, с увеличением количества элементов появились проблемы. Во-первых оно начало прилично тормозить. Во-вторых в дереве элементов и в модуле формы стало сложно ориентироваться. Не связанные по сути элементы для разных подсистем валились в "одну кучу". И еще напрягало то, что нужно соблюдать уникальность имен в пределах формы. Вместо того, чтобы на разных вкладках сделать две диаграммы с именем "Диаграмма" у каждой, приходилось писать что-то вроде "ДиаграммаОстатки" и "ДиаграммаВзаиморасчеты". Когда у меня стали появляться монстры, вроде "ГруппаПанелейСозданияДокументовОстатковНижняя" (...ОрденоноснаяКрасногоЗнамениИмениБорисаНуралиева ;-) я решил - хватит. Нужно было разносить разные рабочие столы на разные формы.

Тогда я применил простое решение и сейчас поделюсь им с вами. Суть способа проста. Я сделал несколько общих форм, по количеству необходимых мне рабочих столов. При создании формы на сервере я добавляю в форму панель с кнопками, которых ровно столько, сколько этих самых общих форм, и при нажатии на соответствующую кнопку открываю нужную форму (которая при создании опять добавляет себе эту панель).
В итоге, чтобы добавить новый рабочий стол, мне нужно сделать несколько простых действий:
1. Создать общую форму с именем "РабочийСтолНужноеИмя" (где вместо "НужноеИмя" можно подставить все, что угодно).
2. Поставить у этой формы заголовок "НужноеИмя" и отключить автозаголовок. (Это важный шаг, я по заголовку определяю текущую форму. Не совсем удачное решение, но работает).
3. Добавить форме событие "ПриСозданииНаСервере" и прописать там такой код:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    РабочийСтол.ПриСозданииНаСервере(ЭтаФорма);
КонецПроцедуры

(не удивляйтесь, "РабочийСтол" это у меня так называется общий модуль)

4. И добавить в модуль формы процедуру:

&НаКлиенте
Процедура РабочийСтолПереключить(Команда)
   
РабочийСтол.РабочийСтолПереключить(ЭтаФорма,Команда);
КонецПроцедуры

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

Одну из этих форм вы добавляете в рабочую область рабочего стола, установив в настройках ширину "Одна колонка". И вуаля - все работает.

Можете скачать и посмотреть сами. В принципе, это базовый шаблон, который можно еще наворотить, например, добавить на кнопки картинок. А можно оставить так.

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

А я хочу пожелать вам хорошего дня и хорошего вам кода. Спасибо за внимание.

Оригинал статьи в блоге автора.

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

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

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

6000 руб.

16.01.2015    61797    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54403    16    21    

42

Управление дашбордами

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

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

2400 руб.

29.06.2020    16698    21    4    

35

Новогоднее оформление для 1С

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

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

27.12.2023    10738    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

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

2 стартмани

10.04.2023    9615    151    acces969    31    

118

Модель состояния для MVC

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

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12080    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 13.03.11 19:08 Сейчас в теме
По ссылке
>>> может быть существуют какие либо явные причины не реализовывать данный обработчик, которых я не вижу.

Да пипец какой-то, сам не понимаю, какая религия запрещает. Если пользователи два года просят сделать маленькую фичу, стоит прислушаться к гласу народа.
2. zfilin 2337 13.03.11 20:57 Сейчас в теме
Разработка штука хитрая. Может, им там половину проекта надо перелопатить, чтобы такую фичу добавить.
Мало ли... Но хорошо было бы, хорошо.
3. script 128 14.03.11 00:26 Сейчас в теме
Отлично! Я как раз любитель делать много панелей на панелях и шоб с закладками :D
4. Yashazz 4709 15.03.11 10:10 Сейчас в теме
И что тут нового и оригинального? Ровно тот же ход можно было хоть на 7.7 делать, что, собсно, и делалось. Я было понадеялся, это фича именно с использованием специфики 8.2, ан нет. :(
5. Nexux 16.03.11 09:32 Сейчас в теме
как бы так еще извратиться, чтобы дать юзверю возможность найстроки как в "нативном" рабочем столе, и распихать по ролям))
6. zfilin 2337 16.03.11 12:14 Сейчас в теме
Yashazz, Извините. =( Будет со спецификой 8.2 - обязательно напишу.

Nexux, Дык, а настройка формы? Включай/выключай! Ну, и с ролями можно придумать... Начиная от прав на открытие форм и анализа этого дела при добавлении кнопочек.
7. DrAku1a 1679 19.03.11 05:10 Сейчас в теме
Извратились бы лучше и интерфейс управляемого к виду обычного ("неуправляемого" :) ) приложения привели... Хотя это да... Это из ряда фантастики...
8. MSensey 49 22.03.11 08:53 Сейчас в теме
Извиняюсь за такую критику с моей стороны.
9. zfilin 2337 22.03.11 11:35 Сейчас в теме
Не нравится - ставьте минус, пишите администрации infostart, что на главную попадает всякая фигня.

Знаете, порой мне тоже кажется странным, что высший рейтинг получают обработки вроде "очередная новая универсальная загрузка из эксель" или "ура! я изобрел проверку орфографии вордом", но стараясь сохранять объективность я говорю себе: раз люди это оценили, значит им это действительно нужно и нечего тут придираться. Стараюсь подавлять в себе вот эту мелочность и снобизм. Чего и вам желаю.
neo-ti; susorov; AlekseiH34; Арчибальд; +4 Ответить
10. zfilin 2337 23.03.11 22:37 Сейчас в теме
(9) Простите за несколько резкий тон, я не бываю на главной (такая уж привычка, читаю в основном через еженедельный обзор из почты) и не знал что такое "выбор экспертов". Не могу не согласиться, что есть много замечательных публикаций более достойных того, чтобы попасть на этот главный баннер. Но все же с тем, что идея совсем недостойна внимания никак не соглашусь, вы тоже, знаете ли переборщили, мне кажется.

Не держите зла и давайте просто хорошо работать, чтобы нашим публикациям не стыдно было находиться в выборе экспертов.
11. ValeriVP 1303 24.03.11 09:33 Сейчас в теме
ничего не понял
приклей скриншоты
susorov; AlekseiH34; +2 Ответить
12. dimisa 135 15.12.11 12:42 Сейчас в теме
Хороший способ - но не понятн огде это нужно примменять
было бы интересно примеры применения этой фитчи
если у кого опыт использования в торговых конфигурациях
13. AZel84 51 20.12.11 15:02 Сейчас в теме
Сейчас если у вас общая форма называется, например, ОстаткиТоваров, то кнопка будет называться "ОстаткиТоваров", а хотелось бы "Остатки товаров".
Если заменить процедуру в общем модуле на ниже приведённую, то заголовок кнопок будет браться из синонима общих форм.

&НаСервере
Процедура ПриСозданииНаСервере(Форма) Экспорт
ПанельРабочиеСтолы = Форма.Элементы.Вставить("_ПанельРабочиеСтолы",Тип("ГруппаФормы"),,Форма.ПодчиненныеЭлементы[0]);
ПанельРабочиеСтолы.Вид = ВидГруппыФормы.КоманднаяПанель;
Для каждого ОбщаяФорма Из Метаданные.ОбщиеФормы Цикл
Если Лев(ОбщаяФорма.Имя,11) = "РабочийСтол" Тогда
ИмяРабочегоСтола = Сред(ОбщаяФорма.Имя,12);
ЗаголовокРабочегоСтола = СокрЛП(ОбщаяФорма.Синоним);
КомандаКнопки = Форма.Команды.Добавить("РабочийСтолПереключить"+ИмяРабочегоСтола);
КомандаКнопки.Действие = "РабочийСтолПереключить";
НоваяКнопка = Форма.Элементы.Добавить("_"+ИмяРабочегоСтола, Тип("КнопкаФормы"), ПанельРабочиеСтолы);
НоваяКнопка.ИмяКоманды = "РабочийСтолПереключить"+ИмяРабочегоСтола;
НоваяКнопка.Заголовок = ЗаголовокРабочегоСтола;
НоваяКнопка.Пометка = ?(Форма.Заголовок = ИмяРабочегоСтола,Истина,Ложь);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
14. zfilin 2337 20.12.11 15:13 Сейчас в теме
Да, я ее для себя и так дорабатывал и картинки подсистем на кнопки вставлял, и вообще.
Вообщем, это так - набросок, а докрутить можно как угодно.
15. Chif13 1248 14.03.12 13:28 Сейчас в теме
а нельзя было создать обработку, включенную в рабочий стол, которая имеет закладки и прочую там фитчу, настроить ее по ролям и все такое?
16. zfilin 2337 14.03.12 13:50 Сейчас в теме
Можно. А в статье описано почему именно это не самый удачный способ. Вы ее читали?
17. dimisa 135 27.03.12 15:37 Сейчас в теме
не понравилось
уж лучше переписать под эти нужды боковое окно сообщений
что бы там гипперссылки были на объекты метаданных
18. zfilin 2337 27.03.12 16:35 Сейчас в теме
Да, решение не идеальное. И ссылки конечно лучше, но тут немного о другом речь.
О том как сделать несколько рабочих столов на каждом из которых есть графики, списки, диаграммы и пр.
Увы, ссылки это несколько другая задача. =(
19. NittenRenegade 108 07.11.12 08:23 Сейчас в теме
Тюрьмы, как известно, в головах. Платформа меняется - способы работы остаются. Зачем совершать переход Сурового через Траблы, если есть такие замечательные вещи, как Общие формы и Функциональные опции?
Почитайте Руководство разработчика по этим разделам и всё поймете, там не сложно.
20. zfilin 2337 07.11.12 10:28 Сейчас в теме
(19) Спасибо за ценную рекомендацию.
25. yuraos 991 15.07.13 07:05 Сейчас в теме
(19) Ghost_W0lf,
новые платформы - это новые тюрьмы
и камеры в них все де...(пардон) хуже и хуже.
--
сколько раз не брался за управляемое приложение
столько же раз в этом убеждался.
26. yuraos 991 15.07.13 07:09 Сейчас в теме
(25)
те минимальные элементы ООП,
которые присутствуют в обычном приложении
(и к стати некоторые из них появились именно в платформе 8.2)
в управляемом практически - практически бесполезны,
поскольку их нельзя использовать на клиенте.
27. yuraos 991 15.07.13 07:16 Сейчас в теме
(26)
ну интерфейсные возможности управляемого интерфейса
просто сравнивать нечего с обычным...
в нем много чего нельзя:
- нельзя запретить максимизацию управляемой формы, открытой модально.
- нельзя изменить картинку в заголовке управляемой формы.
- нельзя запретить изменение размера управляемой формы.
- у надписей неразмещенных в табличных полях, почему-то нельзя задавать фон,
отличный от фона управляемой формы.
- у надписи (не в табличном поле) можно задать контекстное меню, оно системой выводится
но почему-то обработчик выбранной в меню команды не срабатывает
***
28. yuraos 991 15.07.13 07:18 Сейчас в теме
(27)
***
я думаю список можно продолжить.
21. NittenRenegade 108 07.11.12 10:34 Сейчас в теме
zfilin, мы, 1С-ники, должны помогать друг другу!

Наклепал статейку
статейка на infostart.ru
22. w-divin 11.03.13 21:22 Сейчас в теме
Реализация предполагает отключение отображения подсистем? а как реализовать чтобы в зависимости от режима запуска (веб-клиент, тонкий/толстыый клиент) использовались либо стандартные посдсистемы, либо данная реализация?
23. zfilin 2337 12.03.13 02:04 Сейчас в теме
(22) Ну, способ оставляет желать лучшего. Когда-то я его применял, в некоторых проектах.
Теперь я бы посоветовал не использовать его, использовать стандартные подсистемы.
А так, насколько я знаю, нет метода включить и выключить программно отображение подсистем.

(21) Конечно должны. Не думал, что публикация пригодится, но гляди ж ты. Спасибо. =)
24. w-divin 16.03.13 09:47 Сейчас в теме
(23) метода програмно включить/выключить нет, а нужен именно этот функционал - т.е. при заходе через браузер их не было вообще - только панель навигации (причем тоже сильно урезанная), через тонкий клиент 1-3 подсистемы, а через толстый все. Можно конечно вывернуться ролями ФО, но делать по 3 пользователя на каждого не есть гуд, особенно когда их больше 300 (((
29. luchyk007 23.10.13 11:57 Сейчас в теме
как раз столкнулся с необходимостью использовать рабочий стол, раздавать права доступа на каждый элемент долго, проще подменить рабочий стол целиком - спасибо.
30. zfilin 2337 23.10.13 18:12 Сейчас в теме
Оставьте свое сообщение