Universal Extensions (UE) - Совершенствуй 1С, не меняя конфигурацию (Безлимитная лицензия)

Программирование - Внешние компоненты

1С 8.2 Управляемый интерфейс – ИМХО лучшее, что воплотила в жизнь компания 1С: динамическое размещение элементов, зависящее от прав и функциональных опций, параметризируемые команды, отборы в настройках реквизитов и при создании форм …. Всего не перечислить. Чего же все-таки не хватает в текущей реализации УФ?

ПРИКРЕПИЛ БЕЗЛИМИТНУЮ ЛИЦЕНЗИЮ

Новая версия 3.1

Реализована работа с буфером обмена Windows.

Подробне в статье //infostart.ru/public/269875/

 

Вступление

Платформа 1С 8.2 в режиме «Управляемых форм» шагнула далеко вперед по отношению к более ранним платформенным решениям благодаря универсальности, простоты разработки, и понятного и логически ожидаемого поведения интерфейса в зависимость от связки роли, подсистемы, функциональные опции. Радуют механизмы команд с их «готовностью подключиться» к любой из указанных в типе параметра форм, возможность в пользовательском режиме полностью перестроить форму под себя, динамические списки, в которых пользователь может без помощи программиста добавить новые колонки «из ссылки».  Проделана титаническая работа, для того чтобы нам, программистам 1С, было удобно, быстро и интуитивно понятно разрабатывать свои решения на новой платформе. Конечно, платформа еще находится в стадии совершенствования, но уже очевидно, что есть некоторые недоработки, и потери удобного функционала из предыдущих версий:

  1. Динамические списки утратили механизм быстрого поиска «по первым символам». Видимо разработчики платформы считают нагрузку, создаваемую этим механизмом неоправданно высокой.
  2. Внешние обработки не имеют в своем составе команд, что в принципе логично, так как команда «цепляется» к объекту метаданных, а внешние обработки/отчеты не могут быть привязаны к какой-то конфигурации.
  3. В «Тип параметра» команды можно указать либо ссылочные объекты, либо вообще ничего. Это лишает возможность подключить команду, скажем к общей форме, обработке, или совсем экзотическое – к форме «все действия» (не удивляйтесь -  это тоже «Управляемая форма», так же как и форма поиска в динамических списках).

Кто-то скажет, что типовых механизмов хватает «за глаза», чтобы покрыть все прихоти программистов и пользователей.

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

    

Universal Extensions – новый подход к созданию универсальных решений без модификации конфигурации

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

К примеру, если мы говорим о механизме буфера обмена, то он должен работать по всей конфигурации, и давать возможность, скопировав таблицу товаров с количеством из любой печатной формы/табличной части, вставить их в табличную часть ЛЮБОГО объекта, имеющего необходимые колонки, будь то документ, справочник, общая форма, обработка и т.п.  Встав на строку в списке документов, или открытом документе, иметь возможность поместить документ в буфер обмена, и вставить из буфера в любой другой открытый документ находящиеся в буфере данные.

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

Какие технические новшества UE могут помочь придать решению универсальность в полном смысле этого слова?

Помимо механизма QuickSearch, который дает возможность организовать быстрый поиск по первым символам в во всех таблицах (V8Grid – динамические списки (в текущем релизе), многострочные части, таблицы значений, списки значений, выведенные на форму (в новом релизе)), UE предоставляет доступ к текущей (активной) форме посредством главного меню 1С.

Фактически, UE предоставляет контекстное меню для конкретной активной формы, повторяя механизм команд 1С, но для всех возможных форм, открываемых в 1С, даже форм внешний отчетов и обработок. Состав контекстного меню определяется набором Расширений, включенных в состав UE и экспортирующих список команд для конкретных форм.

Используя UE, Вы можете сделать решение, которое будет действительно универсальным.  

 

Лучше один раз увидеть, чем сто раз услышать

 

Быстрый поиск в типовой УТ11

Вставка печати

 

Автозапуск. Использовать стоит лишь если у вас обработка прописана в стоке запуска или внедрена в конфигурацию.

Буфер обмена

Запуск UE

 

Техническая информация

В текущий состав обработки входят следующие формы:

Init – основная форма обработки. В ней располагается механизм настроек UE, QuickSearch, распаковка и инициализация внешней компоненты (выполнена по технологии Native API). 

ue– это форма самого механизма. Модуль формы обфусцирован. Изменять его не рекомендуется, так как можно сломать весь механизм.

about – форма с данными об авторе, контактах и сроке окончания текущей лицензии.

QuickSearch – это модуль, в котором, в качестве примера, реализован поиск и позиционирование в динамическом списке. Данный модуль  может быть изменен по Вашему усмотрению. Если эту форму удалить, то механизм QuickSearch буде полностью отключен на уровне внешней компоненты. Рекомендуется это сделать, если вы не планируете использовать быстрый поиск по первым символам.

Все формы с именем «Расширение_*» - примеры расширений. Это ни в коем случае не рабочие расширения. Они включены в состав UE чтоб дать самое общее представление об использовании расширений.

Макеты:

UniveraslExtensions – внешняя библиотека, которая сохраняется в временном каталоге пользователя, и удаляется при закрытии обработке или 1С.

LicenseKey  -лицензионный ключ.

Настройки UE

В механизме UE предусмотрены настройки. Они прописываются программистом в функции ПолучитьПользовательскиеНастройки формы init.

Для режима отладки предусмотрен параметр ОповещатьОбАктивныхОкнах. Если он равен истина, тогда при активации любой формы UE генерирует оповещение в котором указывается заголовок активного окна и, в случае, если активное окно не содержит управляемой формы, текст «Активизировано окно без управляемой формы».

ПодтверждениеЗакрытия – если равен истина, что при выборе в меню UE пункта «Закрыть» будет задан вопрос о закрытии модуля UE.

ЗадержкаПриПоискеПоПодстрокеВСекундах – задержка в секундах, после которой возникает событие в UE и передается набранный в строке быстрого поиска текст в метод (объявленный в настройках подключения быстрого поиска (см. ниже)) формы QuickSearch для обработки.

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

UE предоставляет следующие дополнительные механизмы

  1. Механизм автозапуска (открытия) формы при старте UE. Реализован через таблицу ОбъектыАвтозапуска (колонки ИмяФормы, Ссылка), которая сохраняется в настройках пользователя. При старте UE открывает все формы с параметром «Ключ» и значением «Ссылка», содержащимися в это таблице. Пример можно посмотреть в «Расширение_Автозапуск»
  2. Механизм глобальных переменных – это структура, расположенная в UE, и доступная из любого расширения. В нее можно сохранять любое значение, которое может храниться на клиенте. Пример можно посмотреть в «Расширение_БуферОбмена».

 

Лицензионная политика

UE распространяется по лицензии Adware (от англ. advertisement - «реклама» и software - «программное обеспечение»). Цель такого лицензирования – не заработать на рекламе, а  раз в 4 месяца вместе с очередной лицензией ознакомить пользователя с моими новыми разработками.  В текущем варианте исполнения UE рекламный текст будет приходить в виде ответа на Ваш запрос по электронной почте с вложением лицензии. В последующем будет реализован механизм получения лицензии через интернет.

В любом случае, в течения срока эксплуатации никаких рекламных материалов вы не увидите.

Лицензионная политика решения не будет меняться в сторону платности решения, либо уменьшения срока действия лицензии.

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

Вы можете создавать и распространять платные расширения, использующие механизмы UE, в том числе и модуль QuickSearch (форму UE). При этом какая либо плата со стороны разработчика расширения или пользователя расширения за использование UE не требуется. Единственное условие, Вы  не можете продавать UE как часть вашей разработки.

 

Дополнительная информация

UE – это полностью переработанный проект ExtEventsFrm. Внешняя компонента переписана на Visual Studio C++ Express. При разработке учтены ошибки проекта – родителя и проекта QiuckSearch, вылечены детские болячки. Благодаря новому подходу удалось добиться стабильности решения, и его работоспособности, как в режиме закладок, так и в режиме отдельных окон.

В отличие от ExtEventsFrm, UE не использует в своей работе контролов 1С и форма обработки не видна в списке форм.

UE - это внешня обработка, которую рекомендуется запускать при старте 1С. Для этого ее надо прописать в качестве парамерта в командной строке запуска 1С Предприятия. Для этого нужно использовать ключ "/Execute" и следом ч/з пробел указать путь к обработке: /Execute "D:\MarSeN_UniversalExtensions.3.epf" 

UE может быть встроена в конфигурацию. Для этого достаточно ее добавить в обработки и в модуле управляемого приложения в процедуре "ПриНачалеРаботыСистемы" вставить текст "ОткрытьФорму("Обработка.MarSeN_UniversalExtensions.Форма");" 

 

Благодарности 

Хотелось бы поблагодарить Болсуна Михаила за ценные советы, помощь, оказанную  при тестировании и, несомненно, за замечательный обфускатор кода 1С, опубликованный на его сайте https://netlenka1c.ru

И всех кто дочитал статью до конца.

 

Заключение

Данная статья является началом цикла статей, в которых будут публиковаться законченные решения на основе UE, либо шаблоны решений, в которых будут демонстрироваться возможности UE. 

Я буду рад ответить на все интересующие Вас вопросы касательно представленного механизма и возможности решения с его помощью конкретных прикладных задач.

 

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

Наименование Файл Версия Размер
UE 3.1
.epf 392,85Kb
27.03.18
106
.epf 392,85Kb 106 Скачать
Безлимитная лицензия
.key 0,30Kb
27.03.18
2
.key 0,30Kb 2 Скачать

См. также

Комментарии
1. Артур Аюханов (artbear) 921 18.03.14 19:19 Сейчас в теме
2. Александр Зубцов (iov) 363 18.03.14 23:14 Сейчас в теме
3. Александр Удалов (higs) 19.03.14 06:31 Сейчас в теме
Аналогично, интересная разработка. Вышеупомянутые ExtEventsFrm и QiuckSearch как -то не попались, а вот эта зацепила. Столкнулся не нахваткой пары моментов в УФ.
6. Сергей Марченко (MarSeN) 959 19.03.14 09:03 Сейчас в теме
(3) higs,
С какими именно. Думаю что сейчас самое время о них написать )
4. Сергей Шульженко (zahar33) 19.03.14 06:34 Сейчас в теме
Если если речь об УТ 11, то это не всегда актуально там могут один компонент удалить вставить другой аналогичный но с другими свойствами и назначением. К прим. справочник физ лица в УТ 11.0, серийные номера.
5. Сергей Марченко (MarSeN) 959 19.03.14 09:02 Сейчас в теме
(4) zahar33,
Речь не идет о какой - то конкретной конфигурации....
7. Алекс Одинэсник (Alex1Cnic) 125 19.03.14 09:10 Сейчас в теме
Очень интересненько... особенно с буфером обмена
8. Сергей Марченко (MarSeN) 959 19.03.14 09:53 Сейчас в теме
(7) Alex1Cnic,
Если обстоятельно подойти к реализации буфера обмена то получится действительноуниверсальный продукт
9. Сергей Марченко (MarSeN) 959 19.03.14 11:05 Сейчас в теме
Объявляю вознаграждение за лучшую реализацию расширения + статью к нему в 50sm. Остальным участникам, если расширение будет собрано не на коленке по 5sm. Бюджет примерно 100sm.
Победитель будет определен народным голосованием, т.е. статья у которой будет больше всего плюсов
10. Игорь Дзеса (Kamikadze) 44 19.03.14 11:48 Сейчас в теме
Попробую поработать, однозначно плюс.
11. Сергей Марченко (MarSeN) 959 19.03.14 11:56 Сейчас в теме
(10) Kamikadze,
Пишите, если какие вопросы появятся. Помогу разобраться.
12. Konstantin Konstantin (KonstB) 169 19.03.14 12:00 Сейчас в теме
13. Дмитрий Шерстобитов (DitriX) 2736 19.03.14 13:21 Сейчас в теме
У меня вот вопрос:
Динамические списки утратили механизм быстрого поиска «по первым символам». Видимо разработчики платформы считают нагрузку, создаваемую этим механизмом неоправданно высокой.
Если я не ошибаюсь, то в случае более 1000 элементов - 1С подгружает только то, что на экране и +/-20% вверх и вниз. Как же тогда работает поиск? Или эта функция не работает при динамическом считывании? Или вы как-то нативно считываете?

Внешние обработки не имеют в своем составе команд, что в принципе логично, так как команда «цепляется» к объекту метаданных, а внешние обработки/отчеты не могут быть привязаны к какой-то конфигурации.

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

В «Тип параметра» команды можно указать либо ссылочные объекты, либо вообще ничего. Это лишает возможность подключить команду, скажем к общей форме, обработке, или совсем экзотическое – к форме «все действия» (не удивляйтесь - это тоже «Управляемая форма», так же как и форма поиска в динамических списках).
Вы путаете команду с кнопкой. Кнопку - размещайте в общей форме, а команду - нельзя, ее суть сводится к тому, что есть ряд схожих операций у разных ссылочных объектов, которые присущи только им, так как они являются хранилищем информации, а не внешняя форма.
Общей командой удобно делать, например, регистрацию объекта к выгрузке, удалить из таблично части товар, который пометили на удаление. Печать документов и т.д.
Какой смысл перемешивать эти понятия?
Это то же самое, что сравнить общий реквизит, и реквизит объекта. Т.е. объясните область применения?

Вывести во все функции? Какой резон, кто увидит? Я, как админ, так я и так знаю, что и где лежит, а пользователю только дай туда доступ.

З.Ы. Я не придераюсь, просто понять хочу.
15. Сергей Марченко (MarSeN) 959 19.03.14 14:09 Сейчас в теме
(13) DitriX,
Динамические списки утратили механизм быстрого поиска «по первым символам». Видимо разработчики платформы считают нагрузку, создаваемую этим механизмом неоправданно высокой.
Если я не ошибаюсь, то в случае более 1000 элементов - 1С подгружает только то, что на экране и +/-20% вверх и вниз. Как же тогда работает поиск? Или эта функция не работает при динамическом считывании? Или вы как-то нативно считываете?

Механизм быстрого поиска передает набранный вами текст в обработку QuickSearch для последующей обработки. В выложенном варианте обработки используется компановка данных с установкой отборов из динамического списка и получением первой, удовлетворяющей отборам и вхождением искомой строки. Потом ссылка на этот элемент указывается как значение ТекущаяСтрока динамического списка. Список должен спозиционироваться, даже если этих данных нет в кэше списка (но значение удовлетворяет отборам). Это логично. Я конечно не проверял на таких больших списках, но если это не работает - это уже глюк платформы. По крайней мере позиционирование происходит на данных, которые на момент поиска не видны в списке. Думаю тут глюков не будет.

Внешние обработки не имеют в своем составе команд, что в принципе логично, так как команда «цепляется» к объекту метаданных, а внешние обработки/отчеты не могут быть привязаны к какой-то конфигурации.
А какой смысл их делать? Вы можете прописать команды в конфигураторе, либо во встроенной обработке, а потом- при нажатии, отрабатывать функции из внешних обработок. так 1с в ут11 и делает. И это удобно, пару строк кода.

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

В «Тип параметра» команды можно указать либо ссылочные объекты, либо вообще ничего. Это лишает возможность подключить команду, скажем к общей форме, обработке, или совсем экзотическое – к форме «все действия» (не удивляйтесь - это тоже «Управляемая форма», так же как и форма поиска в динамических списках).
Вы путаете команду с кнопкой. Кнопку - размещайте в общей форме, а команду - нельзя, ее суть сводится к тому, что есть ряд схожих операций у разных ссылочных объектов

Я ничего не путаю: кнопка - это элемент формы который Вы выкладываете (ручками или программно на форму). Команда - это пункт меню, который автоматически добавляется в зависимости от своих настроек.
то что 1С привязывает команду к ссылочным объектам только загоняет программиста в определенные рамки. Но рамки - это не правила а ограничения.

Вывести во все функции? Какой резон, кто увидит? Я, как админ, так я и так знаю, что и где лежит, а пользователю только дай туда доступ.

Наверное никакого, я не имел ввиду что это стоит делать. Хотел лишь показать насколько универсален механизм.

З.Ы. Я не придераюсь, просто понять хочу.

Чем больше таких вопросов появится, тем лучше!
Спасибо за Ваши сомнения. Значит статья зацепила
14. Дмитрий Шерстобитов (DitriX) 2736 19.03.14 13:32 Сейчас в теме
Да, и что то я не понял как она работает :) Можете на пальцах объяснить логику подключения ее к базе? Может создать демо конфу с 2 доками и показать как там все работает, а то попробовал на 3 конфигурациях, включая УТ11, ничего не взлетело :)
16. Сергей Марченко (MarSeN) 959 19.03.14 14:14 Сейчас в теме
(14) DitriX,
Логика простая, открываете как внешнюю обработку. ))
возьмите типовую демку УТ11 и проделайте все что показано на гифках.
запускайте в режиме закладок.
17. Яков Коган (Yashazz) 2239 19.03.14 18:30 Сейчас в теме
Как любая внешняя приблуда во времена быстро и непредсказуемо меняющейся платформы - ненадёжно и потому нежелательно. 100%-я работоспособность доверия не вызывает.
18. Сергей Марченко (MarSeN) 959 19.03.14 19:35 Сейчас в теме
(17) Yashazz,
Вы в курсе что пока 8.2 в режиме УФ развивалась, то никто не мог поручиться за то что его код будет работать в след. релизе. К примеру автоматически сформированные наименования команд формы вдруг изменилось и в их имя стали включать имя родительского объекта. И это было отнюдь не в вета версии. Нет стабильности в этом мире.
19. sournk (sournk) 25 21.03.14 20:30 Сейчас в теме
20. Сергей Марченко (MarSeN) 959 31.03.14 08:50 Сейчас в теме
Вышло обновление UE. В версии 3.1 добавлена возможность работы с буфером обмена Windows. Подробнее в статье http://infostart.ru/public/269875/
21. Кот MOSKALYUK (kot30688) 3 07.04.14 03:39 Сейчас в теме
С буфером обмена очень интересная вещь получается. Не планируется ли работа в обычном приложении? вообще интересует вопрос: использование управляемой формы ue в обычном приложении возможна? Иными словами, насколько эта форма ориентирована на управляемой приложение?
22. Сергей Марченко (MarSeN) 959 07.04.14 10:01 Сейчас в теме
(21) kot30688,
Нет, ue не может работать на обычных формах так как 1С в неуправляемом режиме не реализует метод ПолучитьОкна()
23. Кот MOSKALYUK (kot30688) 3 07.04.14 16:23 Сейчас в теме
24. Сергей Сытько (8SiriuS8) 117 26.04.14 14:17 Сейчас в теме
(0) при помощи данного решения можно ли в произвольной форме менять и добавлять свои реквизиты
25. Сергей Марченко (MarSeN) 959 27.04.14 08:55 Сейчас в теме
(24) 8SiriuS8,
К сожалению нет, так как UE получает доступ к форме с клиента.
26. Stas Churkin (Stas-ch) 22 18.05.14 13:43 Сейчас в теме
Скачал, открыл в УТ-11.1.2 В доп.кнопке только два меню - справка и Закрыть. Над полосой-разделителем нет ни одной строки меню. Права не админские на данном компе.
Как быть? Просить у администратора дополнительные права?
Какие права должны быть?
Прикрепленные файлы:
27. Сергей Марченко (MarSeN) 959 18.05.14 14:14 Сейчас в теме
(26) Stas-ch,
Пункты меню появляются только когда есть активная форма. Рабочий стол не является таковой. Прав кроме открытия внешних обработок не требуется. Попробуйте повторить примеры в статье. Если не получается - обязательно пишите.
Все должно быть просто.
28. mimv mimv (mimv) 10 26.05.14 10:09 Сейчас в теме
Прежде всего спасибо разработчикам
Обнаружил некоторую особенность - разное поведение поиска в подборе, а именно поведение при удалении последнего искомого символа (по кнопке Backspase).
В УТ 11.1.4.13 в поиске при нажатии на Backspace происходит удаление ТОЛЬКО последнего символа, затем можно писать слово поиска далее и происходит поиск с учетом корректировки.
В УТ 11.1.5.16 при нажатии на Backspace удаляется ВСЯ строка поиска. Не очень удобно, т.к. каждый раз при опечатке необходимо писать строку поиска заново.
29. Сергей Марченко (MarSeN) 959 27.05.14 11:46 Сейчас в теме
(28) mimv,
Спасибо за отзыв.
Баг посмотрю.
Какая версия винды стоит?
Оставьте свое сообщение