Чего же все-таки не хватает в текущей реализации УФ?
ПРИКРЕПИЛ БЕЗЛИМИТНУЮ ЛИЦЕНЗИЮ
Новая версия 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.
Я буду рад ответить на все интересующие Вас вопросы касательно представленного механизма и возможности решения с его помощью конкретных прикладных задач.
ОФФ. подписался.
подписался
Аналогично, интересная разработка. Вышеупомянутые ExtEventsFrm и QiuckSearch как -то не попались, а вот эта зацепила. Столкнулся не нахваткой пары моментов в УФ.
Если если речь об УТ 11, то это не всегда актуально там могут один компонент удалить вставить другой аналогичный но с другими свойствами и назначением. К прим. справочник физ лица в УТ 11.0, серийные номера.
(4) zahar33,
Речь не идет о какой — то конкретной конфигурации….
(3) higs,
С какими именно. Думаю что сейчас самое время о них написать )
Очень интересненько… особенно с буфером обмена
(7) Alex1Cnic,
Если обстоятельно подойти к реализации буфера обмена то получится действительноуниверсальный продукт
Объявляю вознаграждение за лучшую реализацию расширения + статью к нему в 50sm. Остальным участникам, если расширение будет собрано не на коленке по 5sm. Бюджет примерно 100sm.
Победитель будет определен народным голосованием, т.е. статья у которой будет больше всего плюсов
Попробую поработать, однозначно плюс.
(10) Kamikadze,
Пишите, если какие вопросы появятся. Помогу разобраться.
подписался
У меня вот вопрос:
Динамические списки утратили механизм быстрого поиска «по первым символам». Видимо разработчики платформы считают нагрузку, создаваемую этим механизмом неоправданно высокой.
Если я не ошибаюсь, то в случае более 1000 элементов — 1С подгружает только то, что на экране и +/-20% вверх и вниз. Как же тогда работает поиск? Или эта функция не работает при динамическом считывании? Или вы как-то нативно считываете?
Внешние обработки не имеют в своем составе команд, что в принципе логично, так как команда «цепляется» к объекту метаданных, а внешние обработки/отчеты не могут быть привязаны к какой-то конфигурации.
А какой смысл их делать? Вы можете прописать команды в конфигураторе, либо во встроенной обработке, а потом- при нажатии, отрабатывать функции из внешних обработок. так 1с в ут11 и делает. И это удобно, пару строк кода.
В «Тип параметра» команды можно указать либо ссылочные объекты, либо вообще ничего. Это лишает возможность подключить команду, скажем к общей форме, обработке, или совсем экзотическое – к форме «все действия» (не удивляйтесь — это тоже «Управляемая форма», так же как и форма поиска в динамических списках).
Вы путаете команду с кнопкой. Кнопку — размещайте в общей форме, а команду — нельзя, ее суть сводится к тому, что есть ряд схожих операций у разных ссылочных объектов, которые присущи только им, так как они являются хранилищем информации, а не внешняя форма.
Общей командой удобно делать, например, регистрацию объекта к выгрузке, удалить из таблично части товар, который пометили на удаление. Печать документов и т.д.
Какой смысл перемешивать эти понятия?
Это то же самое, что сравнить общий реквизит, и реквизит объекта. Т.е. объясните область применения?
Вывести во все функции? Какой резон, кто увидит? Я, как админ, так я и так знаю, что и где лежит, а пользователю только дай туда доступ.
З.Ы. Я не придераюсь, просто понять хочу.
Да, и что то я не понял как она работает 🙂 Можете на пальцах объяснить логику подключения ее к базе? Может создать демо конфу с 2 доками и показать как там все работает, а то попробовал на 3 конфигурациях, включая УТ11, ничего не взлетело 🙂
(14) DitriX,
Логика простая, открываете как внешнюю обработку. ))
возьмите типовую демку УТ11 и проделайте все что показано на гифках.
запускайте в режиме закладок.
Как любая внешняя приблуда во времена быстро и непредсказуемо меняющейся платформы — ненадёжно и потому нежелательно. 100%-я работоспособность доверия не вызывает.
(17) Yashazz,
Вы в курсе что пока 8.2 в режиме УФ развивалась, то никто не мог поручиться за то что его код будет работать в след. релизе. К примеру автоматически сформированные наименования команд формы вдруг изменилось и в их имя стали включать имя родительского объекта. И это было отнюдь не в вета версии. Нет стабильности в этом мире.
Подписался. Интересно
Вышло обновление UE. В версии 3.1 добавлена возможность работы с буфером обмена Windows. Подробнее в статьеhttp://infostart.ru/public/269875/
С буфером обмена очень интересная вещь получается. Не планируется ли работа в обычном приложении? вообще интересует вопрос: использование управляемой формы ue в обычном приложении возможна? Иными словами, насколько эта форма ориентирована на управляемой приложение?
(21) kot30688,
Нет, ue не может работать на обычных формах так как 1С в неуправляемом режиме не реализует метод ПолучитьОкна()
Понятно, спасибо
(0) при помощи данного решения можно ли в произвольной форме менять и добавлять свои реквизиты
(24) 8SiriuS8,
К сожалению нет, так как UE получает доступ к форме с клиента.
Скачал, открыл в УТ-11.1.2 В доп.кнопке только два меню — справка и Закрыть. Над полосой-разделителем нет ни одной строки меню. Права не админские на данном компе.
Как быть? Просить у администратора дополнительные права?
Какие права должны быть?
(26) Stas-ch,
Пункты меню появляются только когда есть активная форма. Рабочий стол не является таковой. Прав кроме открытия внешних обработок не требуется. Попробуйте повторить примеры в статье. Если не получается — обязательно пишите.
Все должно быть просто.
Прежде всего спасибо разработчикам
Обнаружил некоторую особенность — разное поведение поиска в подборе, а именно поведение при удалении последнего искомого символа (по кнопке Backspase).
В УТ 11.1.4.13 в поиске при нажатии на Backspace происходит удаление ТОЛЬКО последнего символа, затем можно писать слово поиска далее и происходит поиск с учетом корректировки.
В УТ 11.1.5.16 при нажатии на Backspace удаляется ВСЯ строка поиска. Не очень удобно, т.к. каждый раз при опечатке необходимо писать строку поиска заново.
(28) mimv,
Спасибо за отзыв.
Баг посмотрю.
Какая версия винды стоит?
на 8.3.12 перестала работать.
(32) А можно чуть подробнее? Планировал попробовать использовать в одной конфигурации
(33) на Платформе 8.3.12 обработка не запускается, соответсвенно весь заявленный функционал не работает, и при закрытии программы 1с вылетает с критической ошибкой. на 8.3.10 полет нормальный. Автор пока по всем е=мейлам и внутренним сообщения к сожалению тоже не откликается.
(32) У меня есть предположение, что ошибка связана с новой политикой проверки лицензий 1С.
Обработка использует перехват и переопределение оконных функций через WINAPI.
Надо смотреть.
Еще нужно понимать в какой версии интерфейса ошибка — в Такси или обычной
(34) У меня на 8.3.11 и 8.3.12 тоже не загружается обработка, но без ошибки при закрытии
(32) На 8.11 и 8.12 не загружается dll.
На 8.3.10.2667 dll грузится, но функционал не работает (не показывается менюха)
на каком релизе у вас работает?
(37) 8.3.10.2699 внедрена в ут 11.1.4.13.Интерфейс обычный (не Такси)
(35) (38) Платформа 8.3.11.3034, интерфейс формы в закладках — работает. Только ощущение что формы стали открываться с задержкой. Связано это с обработкой или какими-либо еще факторами — пока сказать не могу.
upd: та же версия платформы — интерфейс такси — не работает. Точнее работает о-очень странно. При «ОповещатьОбАктивныхОкнах» = Истина — может показать оповещение, а может нет. Сам быстрый поиск ни разу не появился.
(35) Кстати, если есть возможность доработки — а можно ли сделать опцию чтобы поле быстрого поиска обрабатывало кнопку Esc? Сейчас при этом закрывается вся форма..
Сценарий: пользователь вводит данные в поле поиска, понимает что ошибся и хочет закрыть поле ввода данных (без поиска). Нажимает Esc.
Текущее поведение: закрывается вся форма.
Ожидаемое поведение: закроется только поле поиска данных.
(35) Решение будет искаться или поддержки
для новых версий платформы не будет?