ПРИКРЕПИЛ БЕЗЛИМИТНУЮ ЛИЦЕНЗИЮ
Новая версия 3.1
Реализована работа с буфером обмена Windows.
Подробне в статье //infostart.ru/public/269875/
Вступление
Платформа 1С 8.2 в режиме «Управляемых форм» шагнула далеко вперед по отношению к более ранним платформенным решениям благодаря универсальности, простоты разработки, и понятного и логически ожидаемого поведения интерфейса в зависимость от связки роли, подсистемы, функциональные опции. Радуют механизмы команд с их «готовностью подключиться» к любой из указанных в типе параметра форм, возможность в пользовательском режиме полностью перестроить форму под себя, динамические списки, в которых пользователь может без помощи программиста добавить новые колонки «из ссылки». Проделана титаническая работа, для того чтобы нам, программистам 1С, было удобно, быстро и интуитивно понятно разрабатывать свои решения на новой платформе. Конечно, платформа еще находится в стадии совершенствования, но уже очевидно, что есть некоторые недоработки, и потери удобного функционала из предыдущих версий:
- Динамические списки утратили механизм быстрого поиска «по первым символам». Видимо разработчики платформы считают нагрузку, создаваемую этим механизмом неоправданно высокой.
- Внешние обработки не имеют в своем составе команд, что в принципе логично, так как команда «цепляется» к объекту метаданных, а внешние обработки/отчеты не могут быть привязаны к какой-то конфигурации.
- В «Тип параметра» команды можно указать либо ссылочные объекты, либо вообще ничего. Это лишает возможность подключить команду, скажем к общей форме, обработке, или совсем экзотическое – к форме «все действия» (не удивляйтесь - это тоже «Управляемая форма», так же как и форма поиска в динамических списках).
Кто-то скажет, что типовых механизмов хватает «за глаза», чтобы покрыть все прихоти программистов и пользователей.
Но что если Вы хотите чтобы Ваши решения были максимально универсальными, не требовали изменения конфигурации, но в то же время визуально являлись частью существующей системы?
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 предоставляет следующие дополнительные механизмы
- Механизм автозапуска (открытия) формы при старте UE. Реализован через таблицу ОбъектыАвтозапуска (колонки ИмяФормы, Ссылка), которая сохраняется в настройках пользователя. При старте UE открывает все формы с параметром «Ключ» и значением «Ссылка», содержащимися в это таблице. Пример можно посмотреть в «Расширение_Автозапуск»
- Механизм глобальных переменных – это структура, расположенная в 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.
Я буду рад ответить на все интересующие Вас вопросы касательно представленного механизма и возможности решения с его помощью конкретных прикладных задач.