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. 

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

 

38 Comments

  1. artbear

    ОФФ. подписался.

    Reply
  2. iov

    подписался

    Reply
  3. higs

    Аналогично, интересная разработка. Вышеупомянутые ExtEventsFrm и QiuckSearch как -то не попались, а вот эта зацепила. Столкнулся не нахваткой пары моментов в УФ.

    Reply
  4. zahar33

    Если если речь об УТ 11, то это не всегда актуально там могут один компонент удалить вставить другой аналогичный но с другими свойствами и назначением. К прим. справочник физ лица в УТ 11.0, серийные номера.

    Reply
  5. MarSeN

    (4) zahar33,

    Речь не идет о какой — то конкретной конфигурации….

    Reply
  6. MarSeN

    (3) higs,

    С какими именно. Думаю что сейчас самое время о них написать )

    Reply
  7. Alex1Cnic

    Очень интересненько… особенно с буфером обмена

    Reply
  8. MarSeN

    (7) Alex1Cnic,

    Если обстоятельно подойти к реализации буфера обмена то получится действительноуниверсальный продукт

    Reply
  9. MarSeN

    Объявляю вознаграждение за лучшую реализацию расширения + статью к нему в 50sm. Остальным участникам, если расширение будет собрано не на коленке по 5sm. Бюджет примерно 100sm.

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

    Reply
  10. Kamikadze

    Попробую поработать, однозначно плюс.

    Reply
  11. MarSeN

    (10) Kamikadze,

    Пишите, если какие вопросы появятся. Помогу разобраться.

    Reply
  12. KonstB

    подписался

    Reply
  13. DitriX

    У меня вот вопрос:

    Динамические списки утратили механизм быстрого поиска «по первым символам». Видимо разработчики платформы считают нагрузку, создаваемую этим механизмом неоправданно высокой.

    Если я не ошибаюсь, то в случае более 1000 элементов — 1С подгружает только то, что на экране и +/-20% вверх и вниз. Как же тогда работает поиск? Или эта функция не работает при динамическом считывании? Или вы как-то нативно считываете?



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


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

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

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

    Общей командой удобно делать, например, регистрацию объекта к выгрузке, удалить из таблично части товар, который пометили на удаление. Печать документов и т.д.

    Какой смысл перемешивать эти понятия?

    Это то же самое, что сравнить общий реквизит, и реквизит объекта. Т.е. объясните область применения?

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

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

    Reply
  14. DitriX

    Да, и что то я не понял как она работает 🙂 Можете на пальцах объяснить логику подключения ее к базе? Может создать демо конфу с 2 доками и показать как там все работает, а то попробовал на 3 конфигурациях, включая УТ11, ничего не взлетело 🙂

    Reply
  15. MarSeN
    Reply
  16. MarSeN

    (14) DitriX,

    Логика простая, открываете как внешнюю обработку. ))

    возьмите типовую демку УТ11 и проделайте все что показано на гифках.

    запускайте в режиме закладок.

    Reply
  17. Yashazz

    Как любая внешняя приблуда во времена быстро и непредсказуемо меняющейся платформы — ненадёжно и потому нежелательно. 100%-я работоспособность доверия не вызывает.

    Reply
  18. MarSeN

    (17) Yashazz,

    Вы в курсе что пока 8.2 в режиме УФ развивалась, то никто не мог поручиться за то что его код будет работать в след. релизе. К примеру автоматически сформированные наименования команд формы вдруг изменилось и в их имя стали включать имя родительского объекта. И это было отнюдь не в вета версии. Нет стабильности в этом мире.

    Reply
  19. sournk

    Подписался. Интересно

    Reply
  20. MarSeN

    Вышло обновление UE. В версии 3.1 добавлена возможность работы с буфером обмена Windows. Подробнее в статье http://infostart.ru/public/269875/

    Reply
  21. kot30688

    С буфером обмена очень интересная вещь получается. Не планируется ли работа в обычном приложении? вообще интересует вопрос: использование управляемой формы ue в обычном приложении возможна? Иными словами, насколько эта форма ориентирована на управляемой приложение?

    Reply
  22. MarSeN

    (21) kot30688,

    Нет, ue не может работать на обычных формах так как 1С в неуправляемом режиме не реализует метод ПолучитьОкна()

    Reply
  23. kot30688

    Понятно, спасибо

    Reply
  24. sytkosa

    (0) при помощи данного решения можно ли в произвольной форме менять и добавлять свои реквизиты

    Reply
  25. MarSeN

    (24) 8SiriuS8,

    К сожалению нет, так как UE получает доступ к форме с клиента.

    Reply
  26. Stas-ch

    Скачал, открыл в УТ-11.1.2 В доп.кнопке только два меню — справка и Закрыть. Над полосой-разделителем нет ни одной строки меню. Права не админские на данном компе.

    Как быть? Просить у администратора дополнительные права?

    Какие права должны быть?

    Reply
  27. MarSeN

    (26) Stas-ch,

    Пункты меню появляются только когда есть активная форма. Рабочий стол не является таковой. Прав кроме открытия внешних обработок не требуется. Попробуйте повторить примеры в статье. Если не получается — обязательно пишите.

    Все должно быть просто.

    Reply
  28. mimv

    Прежде всего спасибо разработчикам

    Обнаружил некоторую особенность — разное поведение поиска в подборе, а именно поведение при удалении последнего искомого символа (по кнопке Backspase).

    В УТ 11.1.4.13 в поиске при нажатии на Backspace происходит удаление ТОЛЬКО последнего символа, затем можно писать слово поиска далее и происходит поиск с учетом корректировки.

    В УТ 11.1.5.16 при нажатии на Backspace удаляется ВСЯ строка поиска. Не очень удобно, т.к. каждый раз при опечатке необходимо писать строку поиска заново.

    Reply
  29. MarSeN

    (28) mimv,

    Спасибо за отзыв.

    Баг посмотрю.

    Какая версия винды стоит?

    Reply
  30. AGAMS

    на 8.3.12 перестала работать.

    Reply
  31. SkorikA

    (32) А можно чуть подробнее? Планировал попробовать использовать в одной конфигурации

    Reply
  32. AGAMS

    (33) на Платформе 8.3.12 обработка не запускается, соответсвенно весь заявленный функционал не работает, и при закрытии программы 1с вылетает с критической ошибкой. на 8.3.10 полет нормальный. Автор пока по всем е=мейлам и внутренним сообщения к сожалению тоже не откликается.

    Reply
  33. MarSeN

    (32) У меня есть предположение, что ошибка связана с новой политикой проверки лицензий 1С.

    Обработка использует перехват и переопределение оконных функций через WINAPI.

    Надо смотреть.

    Еще нужно понимать в какой версии интерфейса ошибка — в Такси или обычной

    Reply
  34. MarSeN

    (34) У меня на 8.3.11 и 8.3.12 тоже не загружается обработка, но без ошибки при закрытии

    Reply
  35. MarSeN

    (32) На 8.11 и 8.12 не загружается dll.

    На 8.3.10.2667 dll грузится, но функционал не работает (не показывается менюха)

    на каком релизе у вас работает?

    Reply
  36. AGAMS

    (37) 8.3.10.2699 внедрена в ут 11.1.4.13.Интерфейс обычный (не Такси)

    Reply
  37. SkorikA

    (35) (38) Платформа 8.3.11.3034, интерфейс формы в закладках — работает. Только ощущение что формы стали открываться с задержкой. Связано это с обработкой или какими-либо еще факторами — пока сказать не могу.

    upd: та же версия платформы — интерфейс такси — не работает. Точнее работает о-очень странно. При «ОповещатьОбАктивныхОкнах» = Истина — может показать оповещение, а может нет. Сам быстрый поиск ни разу не появился.

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

    Сценарий: пользователь вводит данные в поле поиска, понимает что ошибся и хочет закрыть поле ввода данных (без поиска). Нажимает Esc.

    Текущее поведение: закрывается вся форма.

    Ожидаемое поведение: закроется только поле поиска данных.

    Reply
  38. AGAMS

    (35) Решение будет искаться или поддержки

    для новых версий платформы не будет?

    Reply

Leave a Comment

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