gifts2017

v8.2 Управляемые формы: добавляем произвольное пользовательское меню в основное меню 1С без модификации конфигурации.

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

Часто ли Вы задумывались о возможности создания собственного подменю в основном меню 1С?
Часто ли Вам приходилось отказываться от "красивого" решения Вашей задачи без вышеупомянутой возможности?
Вашему вниманию предлагается технология, дающая возможность добавить подменю в главное меню 1С 8.2 УФ, полностью сформированное "обычным" способом.

Отступление.

Более 7 лет назад я эксперементировал над 1С 7.7 в части объединения нескольких форм в одну. Как оказалось достаточно было переназначить родителя "подложки" (окна, на котором расположены элементы) одной формы на гравное окно другой, чтобы обе формы заработали в одном окне без потери функционала и "вылетов" системы. Мысли о том, что что-то подобное можно сделать в 8.2 натолкнули меня на экперименты в этой области. 

Как это работает?

К статье прикреплена обработка, в которой есть 2 формы. Первая форма "Форма" - основная. Она вызывает форму, на которой располагается меню, и при помощи ВК, выполненной на технологии NativeAPI (спасибо большое Александру Соломатину за его труды и статью "ВК NativeAPI на Delphi и FreePascal", на базе которой и была написана компонента), переопределяет родителя для подменю в ФормаМеню на командную панель главного окна 1С, после этого скрывает (делает невидимым) окно обработки. Для поиска подменю я использовал опыт, опубликованный уважаемым Abadonna в статье "Иерархия окон в 1С 8.2", которая сэкономила кучу времени на решении поставленной задачки.

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

Обработку можно встроить в конфигурацию. Для этого:

  1. Добавляем обработку в конфигурацию.
  2. В основной форме вместо "ФормаМеню = ПолучитьФорму("ВнешняяОбработка.Меню.Форма.ФормаМеню",,,,ВариантОткрытияОкна.ОтдельноеОкно);" пишем "ФормаМеню = ПолучитьФорму("Обработка.Меню.Форма.ФормаМеню",,,,ВариантОткрытияОкна.ОтдельноеОкно);"
  3. В модуле управляемого приложения в процедуру "ПриНачалеРаботыСистемы" добавляем "Форму("Обработка.Меню.Форма",,,,ВариантОткрытияОкна.ОтдельноеОкно);"

 

Существующие ограничения и неудобства

  1. Не совсем красиво отображается кнопка подменю  (частично накрывает вторую иконку и серый фон).
  2. На форме "ФормаМеню" нельзя менять ничего, кроме состава группы "Подменю". По сути, ничего другого и не нужно.  
  3. Окно формы видно в списке окон 1С и его можно закрыть.
  4. При инициализации меню возможно будет заметно открытие формы обработки.

   

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

Наименование Файл Версия Размер
Пользовательское меню в главном окне. 66
.epf 44,57Kb
24.03.13
66
.epf 44,57Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Марченко (MarSeN) 25.03.13 12:40
Странно, что нет никаких отзывов. Мне показалось что возможность добавить свои пункты меню в главное меню 1С как минимум должна была вызвать дискуссию хорошо это или плохо.
2. Аркадий Кучер (Abadonna) 25.03.13 17:16
(1) MarSeN,
Странно, что нет никаких отзывов

Ха! Привыкай. Вот если бы ВПФ, подздравлялка или отчет по дням рождения сотрудников - тогда бы плюсами да откликами засыпали :))))))))))))))
3. Сергей Марченко (MarSeN) 25.03.13 17:33
4. Сергей Марченко (MarSeN) 26.03.13 17:51
(2) Abadonna
Ты как в воду глядел ))
http://infostart.ru/public/179730/ отчет по д.р. сотрудников для зуп. Интересно будет сколько статья наберет
5. Аркадий Кучер (Abadonna) 27.03.13 11:56
Интересно будет сколько статья наберет

А уж почти тебя догнала. Скоро перегонит :)))
6. Сергей Марченко (MarSeN) 27.03.13 12:13
(5) Abadonna
Думаю за 50 перевалит )
8. Алексей Ан (An-Aleksey) 27.03.13 17:24
(1) MarSeN, действительно странно...
Обычно заглядываю в комменты чтобы понять стоящая вещь или очередной фейлд.
А тут по теме нулю. Неужели придется качать и тестить? )))
Ставлю плюс авансом ;)
9. Сергей Марченко (MarSeN) 27.03.13 17:43
(8) An-Aleksey
Спасибо )
Я вот не понял - почему эта статья только пару часов побыла внизу в новых статьях и не попала "на вверхний этаж". Я такой реализации еще невидел. Неужели никому не интересно?
10. Алексей Ан (An-Aleksey) 27.03.13 17:54
Если ты про общую рассылку, то там статьи располагаются в обратном хронологическом порядке от даты первой публикации.
Т.е. чтобы попасть в топ, нужно было опубликовать вчера во второй половине дня :)
11. Сергей Марченко (MarSeN) 27.03.13 18:17
(10) An-Aleksey
Это дельный совет - спасибо.
Я про первую страницу сайта
12. unknown unknown (unknownN) 27.03.13 23:31
весьма интересно, спасибо
13. Кирилл Морозов (Volfy) 28.03.13 10:05
Классная вещь =) Оооочень полезная, сразу же воткнул туда кучку пунктов по настройке собственных доработок. Спасибо автору =)
14. zaebunga (1c-intelligence) 29.03.13 07:39
Забавно. А какой практический смысл?
Новиков; +1 Ответить 1
15. Сергей Марченко (MarSeN) 29.03.13 09:06
(14) zaebunga
в 13 Volfy слёту смысл нашел )
1 как быстрый запуск каких либо форм или обработок.
2 в обработке доступны все окна так что можно настноить обмен информацией м/у ними, как вариант буфер обмена. (замечу что это без модификации конфы)
это на вскидку
16. zaebunga (1c-intelligence) 29.03.13 09:18
(15) MarSeN, я имел в виду практический смысл для пользователей. Видите ли вы пути применения этой доработки как части системы? Для каких пользователей и задач?
17. Сергей Марченко (MarSeN) 29.03.13 09:31
(16) zaebunga
а чем буфер обмена не подходит? мне кажется что это как раз пользовательская фича.
пример в приложении.
тестил на УТ11 - работать будет на любой УФ конфе
1. открываете 2 документа с таб частями товары
2. меню - вн. буфер обмена
3. в форме - встаете в списке на один документ - копировать. Потом на другой - вставить.

это просто пример а не боевая обработка. делал тоб понять возможности и наметить пути развития
Прикрепленные файлы:
Меню3.epf
18. zaebunga (1c-intelligence) 29.03.13 09:43
(17) MarSeN, как направление развития оно понятно. Но вопрос сразу возникает - как это поможет пользователю, в решении каких задач. Поэтому и спросил - может вы уже нашли ответ, или примеры использования есть. Не разработчиком, а пользователем именно.
19. Сергей Марченко (MarSeN) 29.03.13 10:01
(18) zaebunga
я вроде бы уже объяснил....
мне кажется что вопрос какой-то некорректный. Это то же самое что спросить как "поможет" пользователю платформа 1С без конфы - да никак. Пока разработчик не придумает чего нибудь чтоб пользователю было "удобно".
Я же не готовое решение публикую а механизм при помощи которого Вы можете добавить в интерфейс сбои (1С не дает возможности добавить в главное меню свои пункты) "бантики"
20. zaebunga (1c-intelligence) 29.03.13 10:13
(19) MarSeN, Да нормальный вопрос, вы его в штыки просто восприняли.

Вы сделали нормальную штуку, но было бы еще интереснее, если бы дали рекомендации по использованию. Сказали, чем и кому она поможет.
21. Сергей Марченко (MarSeN) 29.03.13 10:22
(20) zaebunga
Вам показалось. Я п15 описал направления. в п17 даже выложил пример. Думаю когда у Вас появится определенная проблема которую Вы не сможете решить штатным способом - Вы вспомните про данный подход.
Если принять во внимание что данный механизм работает без изменения конфы, то это универсальное решение.
PS: если я Вас обидел - то сори
22. zaebunga (1c-intelligence) 29.03.13 10:56
(21) MarSeN, вы сами спрашивали выше "неужели никому не интересно?".

А оно как получается. Вы выложили инструмент, но не рассказали что с его помощью делать. Отсюда и реакция - "прикольно, и чо?".

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

Не воспринимайте это в штыки, это проблема большинства разработчиков, и моя тоже. Сделать инструмент, но не придумать назначение и методику использования. Попробуйте поразмыслить над областями применения и реальными задачами, тогда станет значительно интереснее. Представьте себя клиентом, в которому пришел разработчик и принес этот инструмент.
корум; MarSeN; +2 Ответить 1
23. Сергей Марченко (MarSeN) 29.03.13 11:11
(22) zaebunga
Я считаю что Вы правы "Сделать инструмент, но не придумать назначение и методику использования." поставил + за это.
но как я уже писал - это именно инструмент, а если сравнивать, то это не дрель а скорее мотор который потом надо вставить в дрель.
Спасибо за отзыв. Он ценен для меня
24. Сергей Начина (serg_gres) 29.03.13 12:32
Интересно.
За идею и подход - "+".
Может быть где-нибудь (когда-нибудь) и пригодилось, но "Окно формы видно в списке окон 1С и его можно закрыть." - заметно снижает ценность данной разработки.
25. Сергей Марченко (MarSeN) 29.03.13 12:45
(24) serg_gres
К сожалению на данный момент ничего с ним сделать не могу. Даже если у подложки переопределен родитель (не родное окно) то при закрытии родного окна закрываются все его элементы. буду думать что с этим сделать.
если бы в обработке перед закрытием можно было понять что главное окно 1С закрывается, тогда можно было бы отказ возвращать если 1С - работает а форму кто-то пытается закрыть
26. Алексей Новиков (Новиков) 29.03.13 15:33
Прикольная штука. Но бесполезная, да :)
27. Сергей Марченко (MarSeN) 29.03.13 15:51
(26) Новиков
Любое мнение для меня важно.
28. Филин (Филин) 30.03.13 17:32
Штука интересная, поставлю плюс.
В свое время искал способ воткнуть вызов обработки в стандартное меню (в раздел "Справка"), чтобы пользователь всегда с минимальным количеством кликов мог до нее добраться. В управляемом интерфейсе задача оказалась нерешаемой )

Но есть подозрение, что она нарушает лицензионное соглашение. Компания 1С крайне ревностно относится к работе с окном приложения и такие трюки, насколько я помню, запрещены ЛС.
29. Сергей Марченко (MarSeN) 30.03.13 18:01
(28) Филин
Да, это действительно трюк, но, надеюсь 1С не будет против... Конечно этот способ не "1С совместимо" но раз нам не дают всех возможностей для интерфейса - то мы их возьмем сами.
По крайней мере 1С может обратить внимание на такие вещи и будет дорабатывать интерфейс в нужном направлении. )
30. Alex Steiner (OrsoBear) 01.04.13 19:26
Не по теме, но, раз уж в описании об этом сказали.. можно чуть подробнее по 7.7, как формы объединяли?
31. Сергей Марченко (MarSeN) 01.04.13 20:16
(30) в форме приемнике создавал группу с определенным заголовком, потом в после открытия формы приемника открывал форму источник и подменял у подложки источника родителя на группу, найденную по заголовку . Форму источника убивал ч/з апи
32. PlatonovStepan (Jogeedae) 02.04.13 02:56
(1) MarSeN,
Добрый день, в своё время для обычного приложения выкладывал подобное самособирающееся меню http://infostart.ru/public/77388/ .
Отзывов было не густо :)
Есть мнение, что полезность инструмента смогут оценить только закоренелые педанты, те кто ведут ежедневники, фиксируя каждый чих. Это всё к сожалению, потому что потенциал, на мой взгляд, имеется.
33. Сергей Марченко (MarSeN) 02.04.13 09:25
(32) Jogeedae
Интересная разработка. В чем-то похожи. Ваша сделана как конструктор для пользователя и выполняет роль альтернативного пользовательского меню - навигация по конфигурации.
то что я хотел заложить в свою "модель" это взаимодействие ч/з меню с контекстами активных окон
(я в последнее время заморочился на минимизации изменений типовых конфигураций)
34. Юрий Осипов (yuraos) 02.04.13 13:11
Плюс за попытку сделать УИ чуть "управляемей" и привлекательней.

Как я понимаю, для управляемого интерфейса актуально
написание аналога ВК FormEx.dll для его ...
... мягко говоря улутшения.
---
PS:
На скриншотике "мнею" исправить бы на "меню"
:)
Прикрепленные файлы:
35. Евгений Кредько (kredko) 02.04.13 13:30
Ошибка в тексте "на гравное окно".
36. Сергей Марченко (MarSeN) 02.04.13 13:37
(34) yuraos
Спасибо за отклик и плюс.
Да, при всей управляемости УФ есть определенные недочеты.
Я на данном этапе развиваю компоненту и форма "меню" будет лишь как дополнение и точка входа для определенных действий над формами

Если коротко, то на данном этапе разработки (этого нет в данной, выложенной в статье обработке) "меню" уже контролирует активное окно и можно к примеру произвести манипуляцию именно над активным окном.

В течении недели или к началу новой планирую выложить триальную бетту для ознакомления с базовым функционалом.
в нем будет:
1. Пример реализации быстрого поиска в списках (на примере подбора номенклатуры) по первым символам как в 8.1 (или в окне сообщения 8.2 УФ)
2. Пример копи/паста из одного документа (текущей позиции списка документов) в другой (на примере таб. части товары)
3. Пример вставки печати в любую активную открытую печ. форму.

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

Собственно это планы на ближайшее будущее.

По скриншоту ) спасибо - это моя болезнь. но пока публикация на виду - не хочу редактировать ее так как она пропадет. Хотелось бы привлечь больше умов к открывающимся возможностям )
Спасибо
37. Сергей Марченко (MarSeN) 02.04.13 13:39
35. kredko
) спасибо, исправлю попозже. Причину описал в п36
38. Александр Северин (aseverin) 07.04.13 15:58
(37) MarSeN, Есть своя конфигурация. Поставил заказчик перед фактом - переносим сервера. Пришлось срочно допиливать тонкий клиент... Использовал твою публикацию для переноса неуправляемого "Запуска отчетности" (отчеты в справочнике, переносить в подсистемы нерентабельно, много пересечений по доступам...). За разработку респект, пригодилась и начинает работать.... Это к вопросам зачем...

PS По поводу глюков - иногда открывается отдельная управляемая форма (не подвязывается к задуманному месту) Причину не понял, сообщаю скорее для информации.
39. Сергей Марченко (MarSeN) 08.04.13 15:42
(38) aseverin
Спасибо за отзыв и боевое применение разработки.
странно, что меню не всегда цепляется. А когда открывается отдельная форма, там меню есть со стрелкой? или она без меню открывается.
И еще вопрос. Режим используете с закладками или отдельные окна?
40. Александр Северин (aseverin) 08.04.13 15:57
(39) MarSeN, Если не на месте, то форма открывается в правом нижнем углу в "свернутом" виде. Если ее развернуть - меню со стрелкой есть и работает. У себя использую режим закладок, глюк ловил, у одного из пользователей вроде бы режим окон, но не на 100% уверен.
41. Сергей Марченко (MarSeN) 08.04.13 16:04
(40) aseverin
странное поведение, а при открытии обработки есть еще какие-нить открытые "окна"?
у меня просто такой глюк не выскакивает, при том что я активно тестирую "продолжение" этой обработки (описал в п36)
42. Александр Северин (aseverin) 08.04.13 16:30
(41) MarSeN, нет. Только рабочий стол с двумя отчетами и списком документов. Кстати, почти у всех такое поведение отработало при первом старте обновленной конфигурации с "меню". Определил для себя как глюк при регистрации компоненты, но мало ли...
43. Сергей Марченко (MarSeN) 08.04.13 16:37
(42) aseverin
Спасибо, буду думать
44. Александр Северин (aseverin) 08.04.13 23:09
(43) MarSeN, Пришлось поработать дома, вот так выглядит первый запуск конфигурации с меню на свежем компе. Может я чего не так сделал...
Забыл развернуть, но кнопка там точно есть ;). находил ее ранее ;)
Прикрепленные файлы:
45. Сергей Марченко (MarSeN) 08.04.13 23:43
(44) aseverin
Спасибо за скриншот. я подумаю как можно отловить этот баг, потому что у меня его нет(.
46. Александр Северин (aseverin) 16.04.13 10:49
(45) MarSeN, привет. Дошли руки до проверки версии с задержкой. Вроде бы все работает без збоев ;)
47. Сергей Марченко (MarSeN) 16.04.13 10:59
(46) aseverin,
Спасибо огромное. Я обязательно к след. неделе учту эту ошибку и выложу обновление меню, и учту ее в разработке http://infostart.ru/public/182442/ "ExtEventsFrm: API для реализации быстрого (по первым символам) поиска в списках 1С 8.2 УФ и предоставления контроля над текущей формой (без модификации конфигурации)" так как основа у них одна.
48. Александр Северин (aseverin) 26.10.16 15:21
Добрый день. Пользуюсь данной разработкой уже года 3, реализовал вызов отчетов... мы как то списывались на эту тему.

Проблема в том, что при переходе на 8.3.9 компонента не подключается, не могли бы помочь...

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