17

1C.Net:Предприятие – использование богатых графических возможностей .Net Framework

by Elisy 17. May 2010 06:56

Windows Presentation Foundation (WPF) – презентационная система нового поколения для построения клиентских приложений Windows с ошеломляющими возможностями. Технология WPF основана на независимой от разрешения системе визуализации, построенной на векторной графике и использующей преимущества современного графического оборудования. В составWPF входят следующие средства: язык описания Extensible Application Markup Language (XAML), элементы управления, механизм привязки данных, средства разметки, 2d- и 3d-графика, анимация, стили, шаблоны, документы, медиа-элементы, текст и средства оформления текста. Презентационная система входит в состав .Net framework и доступна для использования внутри 1С:Предприятие средствами Elisy .Net Bridge, начиная с версии 3.2. Windows Presentation Framework полностью заменяет и многократно превосходит устаревающую технологию WinForms.

1С:Предприятие содержит всё необходимое для реализации простейших интерфейсов для пользователя. Расширение возможностей происходило долгое время традиционно – через ActiveX. Кто разрабатывал ActiveX на C++ знают, насколько это долгое и неблагодарное дело. Со временем программисты научились эффективнее писать компоненты, пользуясь тем, что .Net-технология WinForms реализует все необходимые COM-интерфейсы для ActiveX. Но все традиционные подходы буквально меркнут по сравнению с технологией WPF, вошедшей в состав .Net framework 3.0. До этого момента использование WFP внутри 1С оставалось для нас несбыточной мечтой, ограничиваясь созданием отдельных окон параллельно с 1С-приложением. Сейчас есть возможность вставки WPF-контролов внутрь форм 1С.

Пример подключения WPF-контрола к 1С:Предприятие

WPF в 1С начинается традиционно – через вставку ActiveX Elisy.HwndHost на форму. Elisy.HwndHost.dll- это небольшая библиотека, реализующая 2 события Created, SizeChanged и 1 свойство Hwnd. Created событие срабатывает в момент создания ActiveX, и с этого момента становится доступным Hwnd – специальный указатель окна, который пригодится в дальнейшем. Дело в том, что указатель окна является единственным связующим звеном при состыковке обычных приложений с WPF-технологией. SizeChanged событие вызывается каждый раз, когда размер окна изменяется для того, чтобы изменить размер WPF-контрола.

Всю остальную работу по загрузке сборки, подготовке параметров инициализации, созданию WPF-контрола и управлению его размерами выполнит Elisy.NetBridge.dll. Код 1С подключения небольшой – всего 10 строк. На основе его можно подключить произвольный элемент управления WPF. Размер кода примера статьи немного больше, так как пример создавался еще для одной цели: показать, как можно поставлять сборки внутри конфигураций 1С и внешних обработок, сведя к минимуму файлы на диске. Но это отдельная тема, затрагивающая также защиту конфигураций 1С.

Как подключить WPF-контрол на форму 1С:Предприятие:

  1. Зарегистрировать Elisy.HwndHost.dll в реестре (команда: regsvr32 Elisy.HwndHost.dll).
  2. В обработчике Created в форме создать IntPtr-объект на основе значения Hwnd.
  3. Создать объект HwndSourceParameters на основе IntPtr и проинициализировать его другие свойства, если нужно.
  4. На основе HwndSourceParameters создать объект HwndSource, который отвечает за согласование формы 1С и элемента управления WPF.
  5. Создать WPF-контрол.
  6. Присвоить свойству RootVisual ссылку на WPF-контрол.

Достоинства WPF и описанного способа подключения:

  • WPF несет в себе наибольший набор возможностей из предоставляемых возможностей других средств разработки ActiveX. Доступны, например, анимация и 3d-графика.
  • Разработка элементов на основе .Net framework – это более экономичный способ (экономия кода и времени до 80%), чем, например, на основе С++.
  • Легкий способ подключения WPF к 1С в 10 строк кода.
  • Нет необходимости написания специальной «обертки» (враппера), как в случае с WinForms для установки атрибута ProgId или ClassInterface.
  • Передаваемые данные из/в WPF-контрол не ограничены простейшими (число, строка), как в случае с ActiveX. Типы – любые классы и перечисления из .Net framework.
  • Нет необходимости предварительной регистрации каждой сборки WPF. (Примечание: в ранних версиях требуется зарегистрировать Elisy.HwndHost.dll)
  • Нет необходимости в файле на диске со сборкой WPF. Сборка может быть помещена внутрь конфигурации или внешней обработки.

Файлы для скачивания

  • Бесплатная ознакомительная версия Elisy .Net Bridge 3.2 (бета)

    Внешняя обработка Wpf-ClockSample.epf (15.37 kb)

    (Необязательный) Исходный код элемента управления Wpf-ClockSampleSourceCode.zip (36.70 kb)

    Ссылки:

  • Tags: , , , , , ,

    1C.Net

    Comments

    Riesterrente
    Riesterrente United States
    5/26/2010 7:04:32 AM #

    Hi, I recently came to your blog and started reading alongyour articles. I decided I would leave my first comment. I dont know what to say except that I have enjoyed reading the articles. Nice blog. I will keep visiting this blog very often...

    Burton Haynes
    Burton Haynes United States
    5/29/2010 4:31:38 AM #

    Excellent read, I just passed this onto a colleague who was doing a little analysis on that. And he in fact bought me lunch because I found it for him.... smile.. So let me rephrase that: Thanks for lunch!But yeah Many thanks for taking the time to discuss this, I feel strongly about it and enjoy learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with more information? It is extremely helpful for me.

    chi flat iron
    chi flat iron People's Republic of China
    5/29/2010 10:41:21 AM #

    I agree with you, there are some things that you would love

    rep;ica watches
    rep;ica watches United States
    5/31/2010 11:32:48 AM #

    This is a nice blog i must say, usually i don't post comments on others' blogs but would like to say that this post really forced me to do so!

    hermes
    hermes United States
    6/8/2010 3:15:08 AM #

    my God, i thought you were going to chip in with some decisive insght at the end there, not leave it

    Greg2010
    Greg2010 Ukraine
    6/8/2010 7:09:25 PM #

    Дюже дякую!

    abercrombie
    abercrombie United States
    6/16/2010 12:58:45 AM #

    The theme is very attractive. Congratulations to the writer of the blog

    cooking lite
    cooking lite United States
    6/16/2010 12:18:01 PM #

    Good read

    abercrombie
    abercrombie United States
    6/19/2010 7:30:31 PM #

    I do not approve all, but I do congratulate the creator of the weblog for the topic.

    Sir Backgammon
    Sir Backgammon United States
    6/21/2010 9:01:15 AM #

    Very good. One of the best articles about this theme I ever read.

    cigarette
    cigarette United States
    6/22/2010 12:43:12 PM #

    I can not agree on all, but the theme is very exciting. Congratulations!

    Carlos Smith
    Carlos Smith United States
    6/22/2010 3:01:33 PM #

    Just in case you didn't know... your site looks really bizarre in Firefox on a mac

    Gina Esmiol
    Gina Esmiol United States
    6/25/2010 2:32:31 AM #

    Interesting piece, thanks. Would you expand on the first section in more detail please?

    dyslexia testing
    dyslexia testing United States
    6/27/2010 1:45:20 AM #

    found it on google. nice. ill come back to visit.

    Anna Mcglothlen
    Anna Mcglothlen United States
    6/27/2010 7:08:31 PM #

    Many bloggers are great leader; especially lead their own blog to become the most popular blog in the world. I wonder what you think about this. Many successful bloggers created or made jobs for other people. It is wise idea, I think. We agree that you can become this too. By commenting on your blog, I trust you because I had “blog-walked” to your blog intensively, especially see and check your analysis. It is fantastic! Wonderful thought that you gave to other readers, share the biggest idea, unique thought, and then debate them. For me as learner, it is the most important thing to you and us. I have spent many times, from time to come, and I am sure this is the right time to me to recruit you as a writer, hope you are responsible to your future job. Great time to comment on this page, I am looking forward to chatting or email with you

    Bailey Button Ugg Boots
    Bailey Button Ugg Boots People's Republic of China
    6/29/2010 9:20:17 AM #

    Was honored to see such a good article!

    Hassan Laverne
    Hassan Laverne United States
    6/29/2010 11:42:29 AM #

    Many bloggers are great leader; especially lead their own blog to become the most popular blog in the world. I wonder what you think about this. Many successful bloggers created or made jobs for other people. It is wise idea, I think. We agree that you can become this too. By commenting on your blog, I trust you because I had “blog-walked” to your blog intensively, especially see and check your analysis. It is fantastic! Wonderful thought that you gave to other readers, share the biggest idea, unique thought, and then debate them. For me as learner, it is the most important thing to you and us. I have spent many times, from time to come, and I am sure this is the right time to me to recruit you as a writer, hope you are responsible to your future job. Great time to comment on this page, I am looking forward to chatting or email with you

    Powered by BlogEngine.NET 1.6.0.0
    Original Design by Laptop Geek, Adapted by onesoft

    Wisata Semarang : News : Travelling : Used Stationary Bikes : Used Stationary Bikes : Used Stationary Bikes : Seo Services Company : Indonesia Furniture Handicraft Wholesale Marketplace : My Blogpost : My Blogpost : My Blogpost: Eiknujomorp : Google Ranking Master Gujarat : Wisata Dieng