Часто ли Вам приходилось отказываться от "красивого" решения Вашей задачи без вышеупомянутой возможности?
Вашему вниманию предлагается технология, дающая возможность добавить подменю в главное меню 1С 8.2 УФ, полностью сформированное "обычным" способом.
Отступление.
Более 7 лет назад я эксперементировал над 1С 7.7 в части объединения нескольких форм в одну. Как оказалось достаточно было переназначить родителя «подложки» (окна, на котором расположены элементы) одной формы на гравное окно другой, чтобы обе формы заработали в одном окне без потери функционала и «вылетов» системы. Мысли о том, что что-то подобное можно сделать в 8.2 натолкнули меня на экперименты в этой области.
Как это работает?
К статье прикреплена обработка, в которой есть 2 формы. Первая форма «Форма» — основная. Она вызывает форму, на которой располагается меню, и при помощи ВК, выполненной на технологии NativeAPI (спасибо большое Александру Соломатину за его труды и статью «ВК NativeAPI на Delphi и FreePascal», на базе которой и была написана компонента), переопределяет родителя для подменю в ФормаМеню на командную панель главного окна 1С, после этого скрывает (делает невидимым) окно обработки. Для поиска подменю я использовал опыт, опубликованный уважаемым Abadonna в статье «Иерархия окон в 1С 8.2», которая сэкономила кучу времени на решении поставленной задачки.
Для того чтобы сформировать собственное меню, достаточно в форме обработки «ФормаМеню» внести изменния в группу «Подменю». Обработка событий комманд, добавленных подменю, производится типовым способом, т.е. как в обычной форме. По сути, это и есть обычная форма с той лишь разницей, что ее подменю вынесено из формы.
Обработку можно встроить в конфигурацию. Для этого:
- Добавляем обработку в конфигурацию.
- В основной форме вместо «ФормаМеню = ПолучитьФорму(«ВнешняяОбработка.Меню.Форма.ФормаМеню»,,,,ВариантОткрытияОкна.ОтдельноеОкно);» пишем «ФормаМеню = ПолучитьФорму(«Обработка.Меню.Форма.ФормаМеню»,,,,ВариантОткрытияОкна.ОтдельноеОкно);»
- В модуле управляемого приложения в процедуру «ПриНачалеРаботыСистемы» добавляем «Форму(«Обработка.Меню.Форма»,,,,ВариантОткрытияОкна.ОтдельноеОкно);»
Существующие ограничения и неудобства
- Не совсем красиво отображается кнопка подменю (частично накрывает вторую иконку и серый фон).
- На форме «ФормаМеню» нельзя менять ничего, кроме состава группы «Подменю». По сути, ничего другого и не нужно.
- Окно формы видно в списке окон 1С и его можно закрыть.
- При инициализации меню возможно будет заметно открытие формы обработки.
Странно, что нет никаких отзывов. Мне показалось что возможность добавить свои пункты меню в главное меню 1С как минимум должна была вызвать дискуссию хорошо это или плохо.
(1)
Ха! Привыкай. Вот если бы ВПФ, подздравлялка или отчет по дням рождения сотрудников — тогда бы плюсами да откликами засыпали :))))))))))))))
(2) Abadonna
)))))))
(2) Abadonna
http://infostart.ru/public/179730/ отчет по д.р. сотрудников для зуп. Интересно будет сколько статья наберет
Ты как в воду глядел ))
А уж почти тебя догнала. Скоро перегонит :)))
(5) Abadonna
Думаю за 50 перевалит )
(1) действительно странно…
Обычно заглядываю в комменты чтобы понять стоящая вещь или очередной фейлд.
А тут по теме нулю. Неужели придется качать и тестить? )))
Ставлю плюс авансом 😉
(8) An-Aleksey
Спасибо )
Я вот не понял — почему эта статья только пару часов побыла внизу в новых статьях и не попала «на вверхний этаж». Я такой реализации еще невидел. Неужели никому не интересно?
Если ты про общую рассылку, то там статьи располагаются в обратном хронологическом порядке от даты первой публикации.
Т.е. чтобы попасть в топ, нужно было опубликовать вчера во второй половине дня 🙂
(10) An-Aleksey
Это дельный совет — спасибо.
Я про первую страницу сайта
весьма интересно, спасибо
Классная вещь =) Оооочень полезная, сразу же воткнул туда кучку пунктов по настройке собственных доработок. Спасибо автору =)
Забавно. А какой практический смысл?
(14) zaebunga
в 13 Volfy слёту смысл нашел )
1 как быстрый запуск каких либо форм или обработок.
2 в обработке доступны все окна так что можно настноить обмен информацией м/у ними, как вариант буфер обмена. (замечу что это без модификации конфы)
это на вскидку
(15) я имел в виду практический смысл для пользователей. Видите ли вы пути применения этой доработки как части системы? Для каких пользователей и задач?
(16) zaebunga
а чем буфер обмена не подходит? мне кажется что это как раз пользовательская фича.
пример в приложении.
тестил на УТ11 — работать будет на любой УФ конфе
1. открываете 2 документа с таб частями товары
2. меню — вн. буфер обмена
3. в форме — встаете в списке на один документ — копировать. Потом на другой — вставить.
это просто пример а не боевая обработка. делал тоб понять возможности и наметить пути развития
(17) как направление развития оно понятно. Но вопрос сразу возникает — как это поможет пользователю, в решении каких задач. Поэтому и спросил — может вы уже нашли ответ, или примеры использования есть. Не разработчиком, а пользователем именно.
(18) zaebunga
я вроде бы уже объяснил….
мне кажется что вопрос какой-то некорректный. Это то же самое что спросить как «поможет» пользователю платформа 1С без конфы — да никак. Пока разработчик не придумает чего нибудь чтоб пользователю было «удобно».
Я же не готовое решение публикую а механизм при помощи которого Вы можете добавить в интерфейс сбои (1С не дает возможности добавить в главное меню свои пункты) «бантики»
(19) Да нормальный вопрос, вы его в штыки просто восприняли.
Вы сделали нормальную штуку, но было бы еще интереснее, если бы дали рекомендации по использованию. Сказали, чем и кому она поможет.
(20) zaebunga
Вам показалось. Я п15 описал направления. в п17 даже выложил пример. Думаю когда у Вас появится определенная проблема которую Вы не сможете решить штатным способом — Вы вспомните про данный подход.
Если принять во внимание что данный механизм работает без изменения конфы, то это универсальное решение.
PS: если я Вас обидел — то сори
(21) вы сами спрашивали выше «неужели никому не интересно?».
А оно как получается. Вы выложили инструмент, но не рассказали что с его помощью делать. Отсюда и реакция — «прикольно, и чо?».
Это не обвинение и не попытка уменьшить значимость инструмента. Но сами понимаете, быстрый доступ к чему-то из меню или копирование товаров между разнородными документами — задачи не очень ценные, и они-то как раз уменьшают ценность вашего инструмента в глазах читателей. Это как выложить дрель и сказать, что с ее помощью можно дверь подпирать.
Не воспринимайте это в штыки, это проблема большинства разработчиков, и моя тоже. Сделать инструмент, но не придумать назначение и методику использования. Попробуйте поразмыслить над областями применения и реальными задачами, тогда станет значительно интереснее. Представьте себя клиентом, в которому пришел разработчик и принес этот инструмент.
(22) zaebunga
Я считаю что Вы правы «Сделать инструмент, но не придумать назначение и методику использования.» поставил + за это.
но как я уже писал — это именно инструмент, а если сравнивать, то это не дрель а скорее мотор который потом надо вставить в дрель.
Спасибо за отзыв. Он ценен для меня
Интересно.
За идею и подход — «+».
Может быть где-нибудь (когда-нибудь) и пригодилось, но «Окно формы видно в списке окон 1С и его можно закрыть.» — заметно снижает ценность данной разработки.
(24) serg_gres
К сожалению на данный момент ничего с ним сделать не могу. Даже если у подложки переопределен родитель (не родное окно) то при закрытии родного окна закрываются все его элементы. буду думать что с этим сделать.
если бы в обработке перед закрытием можно было понять что главное окно 1С закрывается, тогда можно было бы отказ возвращать если 1С — работает а форму кто-то пытается закрыть
Прикольная штука. Но бесполезная, да 🙂
(26) Новиков
Любое мнение для меня важно.
Штука интересная, поставлю плюс.
В свое время искал способ воткнуть вызов обработки в стандартное меню (в раздел «Справка»), чтобы пользователь всегда с минимальным количеством кликов мог до нее добраться. В управляемом интерфейсе задача оказалась нерешаемой )
Но есть подозрение, что она нарушает лицензионное соглашение. Компания 1С крайне ревностно относится к работе с окном приложения и такие трюки, насколько я помню, запрещены ЛС.
(28) Филин
Да, это действительно трюк, но, надеюсь 1С не будет против… Конечно этот способ не «1С совместимо» но раз нам не дают всех возможностей для интерфейса — то мы их возьмем сами.
По крайней мере 1С может обратить внимание на такие вещи и будет дорабатывать интерфейс в нужном направлении. )
Не по теме, но, раз уж в описании об этом сказали.. можно чуть подробнее по 7.7, как формы объединяли?
(30) в форме приемнике создавал группу с определенным заголовком, потом в после открытия формы приемника открывал форму источник и подменял у подложки источника родителя на группу, найденную по заголовку . Форму источника убивал ч/з апи
(1)
http://infostart.ru/public/77388/ .
Добрый день, в своё время для обычного приложения выкладывал подобное самособирающееся меню
Отзывов было не густо 🙂
Есть мнение, что полезность инструмента смогут оценить только закоренелые педанты, те кто ведут ежедневники, фиксируя каждый чих. Это всё к сожалению, потому что потенциал, на мой взгляд, имеется.
(32) Jogeedae
Интересная разработка. В чем-то похожи. Ваша сделана как конструктор для пользователя и выполняет роль альтернативного пользовательского меню — навигация по конфигурации.
то что я хотел заложить в свою «модель» это взаимодействие ч/з меню с контекстами активных окон
(я в последнее время заморочился на минимизации изменений типовых конфигураций)
Плюс за попытку сделать УИ чуть «управляемей» и привлекательней.
Как я понимаю, для управляемого интерфейса актуально
написание аналога ВК FormEx.dll для его …
… мягко говоря улутшения.
—
PS:
На скриншотике «мнею» исправить бы на «меню»
🙂
Ошибка в тексте «на гравное окно».
(34) yuraos
Спасибо за отклик и плюс.
Да, при всей управляемости УФ есть определенные недочеты.
Я на данном этапе развиваю компоненту и форма «меню» будет лишь как дополнение и точка входа для определенных действий над формами
Если коротко, то на данном этапе разработки (этого нет в данной, выложенной в статье обработке) «меню» уже контролирует активное окно и можно к примеру произвести манипуляцию именно над активным окном.
В течении недели или к началу новой планирую выложить триальную бетту для ознакомления с базовым функционалом.
в нем будет:
1. Пример реализации быстрого поиска в списках (на примере подбора номенклатуры) по первым символам как в 8.1 (или в окне сообщения 8.2 УФ)
2. Пример копи/паста из одного документа (текущей позиции списка документов) в другой (на примере таб. части товары)
3. Пример вставки печати в любую активную открытую печ. форму.
хочу лишний раз обратить внимание на то что весь функционал работает без модификации конфигурации
На данный момент пытаюсь определиться с политикой лицензирования и стоимостью. не хотелось бы чтоб продукт был дорогим.
Так же планирую сделать апи чтоб было удобно добавлять свои новые блоки)
Собственно это планы на ближайшее будущее.
По скриншоту ) спасибо — это моя болезнь. но пока публикация на виду — не хочу редактировать ее так как она пропадет. Хотелось бы привлечь больше умов к открывающимся возможностям )
Спасибо
35. kredko
) спасибо, исправлю попозже. Причину описал в п36
(37) Есть своя конфигурация. Поставил заказчик перед фактом — переносим сервера. Пришлось срочно допиливать тонкий клиент… Использовал твою публикацию для переноса неуправляемого «Запуска отчетности» (отчеты в справочнике, переносить в подсистемы нерентабельно, много пересечений по доступам…). За разработку респект, пригодилась и начинает работать…. Это к вопросам зачем…
PS По поводу глюков — иногда открывается отдельная управляемая форма (не подвязывается к задуманному месту) Причину не понял, сообщаю скорее для информации.
(38) aseverin
Спасибо за отзыв и боевое применение разработки.
странно, что меню не всегда цепляется. А когда открывается отдельная форма, там меню есть со стрелкой? или она без меню открывается.
И еще вопрос. Режим используете с закладками или отдельные окна?
(39) Если не на месте, то форма открывается в правом нижнем углу в «свернутом» виде. Если ее развернуть — меню со стрелкой есть и работает. У себя использую режим закладок, глюк ловил, у одного из пользователей вроде бы режим окон, но не на 100% уверен.
(40) aseverin
странное поведение, а при открытии обработки есть еще какие-нить открытые «окна»?
у меня просто такой глюк не выскакивает, при том что я активно тестирую «продолжение» этой обработки (описал в п36)
(41) нет. Только рабочий стол с двумя отчетами и списком документов. Кстати, почти у всех такое поведение отработало при первом старте обновленной конфигурации с «меню». Определил для себя как глюк при регистрации компоненты, но мало ли…
(42) aseverin
Спасибо, буду думать
(43) Пришлось поработать дома, вот так выглядит первый запуск конфигурации с меню на свежем компе. Может я чего не так сделал…
Забыл развернуть, но кнопка там точно есть ;). находил ее ранее 😉
(44) aseverin
Спасибо за скриншот. я подумаю как можно отловить этот баг, потому что у меня его нет(.
(45) привет. Дошли руки до проверки версии с задержкой. Вроде бы все работает без збоев 😉
(46) aseverin,
http://infostart.ru/public/182442/ «ExtEventsFrm: API для реализации быстрого (по первым символам) поиска в списках 1С 8.2 УФ и предоставления контроля над текущей формой (без модификации конфигурации)» так как основа у них одна.
Спасибо огромное. Я обязательно к след. неделе учту эту ошибку и выложу обновление меню, и учту ее в разработке
Добрый день. Пользуюсь данной разработкой уже года 3, реализовал вызов отчетов… мы как то списывались на эту тему.
Проблема в том, что при переходе на 8.3.9 компонента не подключается, не могли бы помочь…
заранее благодарен, с ув. Северин Александр
Доброго времени суток. Можете поделиться исходниками вашей dll для создания меню? Заранее благодарен.