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

15.05.12

Разработка - Работа с интерфейсом

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.

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

Наименование Файл Версия Размер
Простой пример WPF 1С 8.1
.epf 15,37Kb
215
.epf 15,37Kb 215 Скачать
Режим совместимости с устаревшей технологией WinForms на 1С 8.1
.epf 9,06Kb
28
.epf 9,06Kb 28 Скачать
WPF-панель, построенная в стиле Outlook
.epf 8,32Kb
38
.epf 8,32Kb 38 Скачать

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. Сборка может быть помещена внутрь конфигурации или внешней обработки.

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

 

См. также

1С:Фото номенклатуры 7.7 - решение для работы с фотографиями номенклатуры в 1С:7.7 (включая формат PNG)

Работа с интерфейсом Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Решение для разработчика и конечного пользователя для работы с фотографиями номенклатуры: систематизация, хранение, отображение, а также выгрузка на Яндекс-Диск и FTP (кроме версии лайт). Поддерживаются графические форматы: bmp, jpg, gif, tiff, а также png - не поддерживаемый штатными средствами 1С. Выполнено без использования внешних компонент (кроме функции выгрузки на FTP). Поставляется как в виде пустой конфигурации с набором объектов и модулей для работы с фото, так и в виде обновления к 1С:Торговля и склад 7.7. Выполнено в двух версиях: "полная" и "лайт".

5000 руб.

18.10.2022    5160    1    45    

3

WebЦвета для 1с77 FormEx

Инструментарий разработчика Работа с интерфейсом Платформа 1С v7.7 Абонемент ($m)

Обработка с фрагментами кода для программного использования набора цветов из коллекции WebЦвета 1с версии 8+ в 1с версии 77. Требуется предварительное подключение сторонней библиотеки FormEх. Будет полезно программистам 1с 77, 1с 8. Да и вообще при программировании на любом языке при потребности использовать коллекцию цветов WebЦвета.

1 стартмани

30.03.2022    4543    2    igor7777    4    

5

К привязкам элементов форм (1С 7.7, FormEx)

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Публикация имеет цель обратить внимание на возможность улучшения интерфейса.

15.12.2021    4465    62    Cерый    13    

6

Выбор цвета для 1С 7.7

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простая и удобная внешняя обработка для выбора цвета без применения внешних компонент.

1 стартмани

09.06.2020    7025    3    vap_pig    5    

3

Работа с журналом регистрации. Выходим за границы платформы

Журнал регистрации Бесплатно (free)

Работа с журналом регистрации нестандартными средствами. А также немного про использование платформы .NET в экосистеме 1С.

12.05.2020    18444    Infostart    32    

91

Производственный календарь для 1С 7.7

Учет рабочего времени Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка производственного календаря с возможностью импорта и экспорта xls для 1С 7.7 (7.70.027) без изменения конфигурации.

1 стартмани

18.09.2019    12580    6    Jill    8    

3

Альтернативная обработка "Выбор периода"

Работа с интерфейсом Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Альтернативная обработка ввода периода для 1С 7.7.

1 стартмани

27.03.2019    6588    3    v.a.n-    11    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. boozin 19.05.10 08:42 Сейчас в теме
А как саму компоненту скачать ? По ссылке из топика скачивание недоступно.
2. Elisy 948 19.05.10 08:45 Сейчас в теме
(1) Специально для Инфостарт компонент выложен в публикации:
Elisy .Net Bridge - подключите .Net Framework к 1C
В статьи дана ссылка на форум, где лежат все версии .Net Bridge и доступны для скачивания зарегистрированным пользователям.
3. tango 506 19.05.10 12:04 Сейчас в теме
можно было просто ссылку опубликовать :)
http://www.gotdotnet.ru/blogs/elisy/7859/
6. Elisy 948 19.05.10 12:26 Сейчас в теме
(3)В прошлый раз ссылку на Инфостарт опубликовал - получил 5 минусов :)
4. tango 506 19.05.10 12:22 Сейчас в теме
(0)
Зарегистрировать Elisy.HwndHost.dll в реестре (команда: regsvr32 Elisy.HwndHost.dll).
vs
Нет необходимости предварительной регистрации каждой сборки WPF. (Примечание: в ранних версиях требуется зарегистрировать Elisy.HwndHost.dll)
8. Elisy 948 19.05.10 12:35 Сейчас в теме
(4) Имеется ввиду следующее:
Elisy.HwndHost.dll не является сборкой - это ActiveX-компонент. Регистрация в реестре этой библиотеки необходимо, чтобы положить на форму 1С. Рассматривается в будущем вариант оформления ее в виде ВК для 1С. Тогда в случае ЗагрузитьВнешнююКомпоненту регистрацию выполнит 1С сама при загрузке.
Сборки, содержащие WPF-контролы, не требуют регистрации, как в случае традиционного подключения WinForms. Т.е. можно подключить бесконечное число сборок, зарегистрировав только Elisy.HwndHost.dll.
5. tango 506 19.05.10 12:24 Сейчас в теме
(0) SizeChanged событие вызывается каждый раз, когда размер окна изменяется для того, чтобы изменить размер WPF-контрола.

не возникнет ли коллизии между обработчиком этого события и отработкой привязок формы 1сом?
9. Elisy 948 19.05.10 12:51 Сейчас в теме
(5)Коллизии не заметил. Последовательность следующая:
1. Пользователь изменяет размер
2. Форма изменяет размер ActiveX Elisy.HwndHost.dll согласно привязке
3. Elisy.HwndHost.dll отправляет событие на форму
4. Форма изменяет размер элемента управления WPF, который "прикреплен" к ActiveX Elisy.HwndHost.dll
Цепь не замыкается
7. tango 506 19.05.10 12:28 Сейчас в теме
минус - это не по морде дали
10. Elisy 948 20.05.10 12:59 Сейчас в теме
Добавлен пример построения Wpf-панели в стиле Outlook. Внизу статьи смотрите, как он выглядит.
11. Душелов 4013 25.05.10 18:00 Сейчас в теме
Да, делал я подобное, только для винформс: http://infostart.ru/public/15912/
С отслеживанием всех событий. Только мало кому надо :)
12. Elisy 948 26.05.10 12:08 Сейчас в теме
(11) Время должно пройти, чтобы оценили .Net framework. Хотя уже начали появляться коммерческие проекты, дополняющие Нетом 1С. Например:
http://infostart.ru/public/70859/
13. CheBurator 3119 30.05.10 17:42 Сейчас в теме
Озвучьте самое главное: подключается/используется ПОЛНЫЙ ФУНКЦИОНАЛ? компонента - платная/бесплатная?
14. Elisy 948 31.05.10 07:10 Сейчас в теме
(13) Компонента платная. Демонстрационная версия включает весь функционал.
15. quick 583 09.06.10 10:49 Сейчас в теме
интересно как все это в терминале будет работать...
16. Душелов 4013 09.06.10 11:42 Сейчас в теме
(15) Нормально все будет работать.
17. Elisy 948 09.06.10 14:33 Сейчас в теме
(15) В случае работы с WPF в терминале может потребоваться дополнительная оптимизация. Она состоит в слеюующем:
Использовать как можно меньше анимации (особенно градиентной), специальных эффектов (BitmapEffects / Effects / ShaderEffects, blurs & drop shadows with large radii) и 3д-графики
18. Elisy 948 23.07.10 14:29 Сейчас в теме
19. deemaa 155 15.05.12 14:42 Сейчас в теме
(0).нет это хорошо, но в свете выхода клиента по линух как-то не очень "кроссплатформенно" (mono упоминать не будем)
20. Air777 16.05.12 17:05 Сейчас в теме
В табличном документе можно использовать эти красоты? В частности интересует наложение картинки с частичной прозрачностью на другую картинку
21. Elisy 948 17.05.12 07:31 Сейчас в теме
(20) Для табличного документа эксперименты не делались
22. пользователь 22.05.12 10:54
Сообщение было скрыто модератором.
...
23. пользователь 09.06.12 12:40
Сообщение было скрыто модератором.
...
Оставьте свое сообщение