1. Состав продукта Elisy .Net Bridge
Elisy .Net Bridge - это внешний компонент для 1C:Предприятие. Библиотека
Elisy.NetBridge.dll обеспечивает бесшовную и гармоничную интеграцию с .Net Framework
посредством взаимодействия с Common Language Runtime (CLR). Облегчает обращение
к .Net из 1С-скриптов и отладку 1С-конфигураций. Позволяет "на лету" компилировать
исходные коды C# и VB.Net и сразу обращаться к скомпилированным модулям из кода
1С. Поддерживается 1С:Предприятие 8.2 (ограниченная поддержка 8.1/8.0/7.7).
Elisy Hwnd Host расширяет возможности интерфейса пользователя 1С:Предприятие
и позволяет на формах 1С использовать богатые графические возможности из .Net framework.
К богатым графическим возможностям относятся: большое количество элементов управления,
возможность создания своих элементов управления, 3d, анимация, градиенты, стили.
Для создания и обращения к визуальным объектам необходимо использовать Elisy .Net
Bridge.
2. Системные требования
- Операционная система (Архитектура x86): Windows 7/Vista SP1/XP SP3/2008/2003 SP2
- Версия .Net-платформы: .Net framework 4.0
- Версия 1С: 1С:Предприятие 8.2 (ограниченная поддержка 1С:Предприятие 8.1/8.0/7.7)
- Клиенты 1С: тонкий, толстый, веб-клиент MS Internet Explorer
- Формы: управляемые и неуправляемые
Примечание: Продукт Elisy .Net Bridge работает только на 32-битных приложениях.
Ограниченная поддержка 64-битных приложений (например, 64-разрядного сервера 1С:Предприятие)
осуществляется
через расширение COM+.
3. Основные возможности
Библиотекой проекта является Elisy.NetBridge.dll. Она предоставляет следующие преимущества:
- Поддерживает создание объектов .Net из GAC и по полному пути к сборке;
- Поддерживает обращение к свойствам и методам объектов .Net;
- Не требует атрибута ComVisible=true, назначенного классам .Net;
- Поддерживает типы Enum и производные;
- Обеспечивает развернутую информацию об ошибках;
- Свойства объектов .Net видны при отладке из конфигуратора 1C;
- Содержит логику для обращения к специфическим возможностям .Net framework: работа
с универсальными типами, вызов статических методов, обращение к статическим свойствам,
обращение к индексным свойствам;
- Позволяет "на лету" компилировать исходные коды C# и VB.Net;
Ниже сравнивается код C# и соответствующий ему код скрипта 1С с использованием Elisy
.Net Bridge:
Код C#
|
Код 1С:Предприятие
|
- private SeriesCollection getVolumeData()
- {
- SeriesCollection SC = new SeriesCollection();
- Random myR = new Random(1);
- for(int i = 0; i < 1; i++)
- {
- Series s = new Series();
- s.Name = "Volume";
- double startPrice = 50;
- DateTime startDT = new DateTime(2000,1,1);
- for(int b = 0; b < 75; b++)
- {
- Element
e = new Element();
- e.XDateTime
= startDT;
- startDT
= startDT.AddDays(1);
- e.YValue
= myR.Next(100);
- s.Elements.Add(e);
- }
- SC.Add(s);
- }
- return(SC);
- }
|
- Function getVolumeData()
- SC = net.New("dotnetCHARTING.WinForms.SeriesCollection");
- myR = net.New("System.Random", 1);
- for a = 0 to 0 do
- s = net.New("dotnetCHARTING.WinForms.Series");
- s.Name = "Volume";
- startPrice = 50;
- startDT = net.New("System.DateTime",
2000, 1, 1);
- for b = 0 to 74 do
- e = net.New("dotnetCHARTING.WinForms.Element");
- e.XDateTime
= startDT;
- startDT
= startDT.AddDays(1);
- e.YValue
= myR.Next(100);
- s.Elements.Add(e);
- enddo;
- SC.Add(s);
- enddo;
- return SC;
- EndFunction
|
4. Взаимодействие с 1С:Предприятие
Внешний компонент Elisy.NetBrdige.dll написан в соответствие с "Технологией создания
внешних компонент" с применением технологий Native API и COM. Реализует интерфейсы:
IAddInServiceEx, IInitDone, ILanguageExtender, IDispatch.
Библиотека Elisy.HwndHost.dll написана по технологии создания ActiveX-объектов и
доступна для использования на неуправляемых 1С-формах и в веб-браузере MS Internet
Explorer
4.1. Установка компонентов
Перед установкой компонентов удостоверьтесь, что на компьютере установлен .Net Framework
4.0. Рекомендуемая установка компонентов – через запуск с правами администратора
приложения setup.exe, поставляемого совместно с инстлляцией Elisy.NetBridge.Setup.msi.
Только такая установка гарантирует проверку необходимой версии .Net framework и
обеспечивает регистрацию COM-компонентов в реестре.
В отдельных случаях допустима установка компонентов вызовом команды глобального
контекста 1С УстановитьВнешнююКомпоненту. Этот метод не рекомендуется, так как установка
не сопровождается установкой другой важной библиотеки Elisy.HwndHost.dll.
- УстановитьВнешнююКомпоненту("ОбщийМакет.ElisyNetBridge4");
Пример файла MANIFEST.xml при добавлении файлов Elisy.NetBridge.dll и Elisy.NetBridge.cab
в 1С-макет
- <?xml version="1.0" encoding="utf-8"?>
- <bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
- <component path="Elisy.NetBridge.dll" os="Windows" arch="i386"
ClientType="1C:Enterprise" type="native" />
- <component path="Elisy.NetBridge.cab" os="Windows" arch="i386"
client="MSIE" type="plugin" object="Elisy.NetBridge4" />
- </bundle>
При этом может потребоваться добавление веб-сервера 1С в «надежные узлы» и дополнительная
настройка браузера Internet Explorer через Сервис >> Свойства обозревателя
>> Безопасность >> Необходимая зона >> Другой... >> Элементы
ActiveX и модули подключения.
4.2. Подключение компонентов
Всегда необходимо подключать компонент Elisy.NetBridge.dll. Если необходимо задействовать
визуальные возможности .Net framework, то необходимо дополнительно подключить библиотеку
Elisy.HwndHost.dll. Если же работу планируется вести в рамках консольного приложения,
подключение Elisy.HwndHost.dll можно пропустить.
4.2.1. Подключение Elisy.NetBridge.dll
Способы подключения внешнего компонента зависят от режима работы (сервер, толстый,
тонкий или веб- клиент), а также от поддерживаемых режимов лицензирования.
Примечание: На некоторых компьютерах под управлением Windows 7/Vista с включенным
UAC при подключении Elisy .Net Bridge наблюдаются странные проблемы. Например, вызов
Новый COMОбъект("Elisy.NetBridge4") выдает ошибку «Класс не зарегистрирован» или
вызов ПодключитьВнешнююКомпоненту("Elisy.NetBridge4") возвращает ложь, хотя в реестре
можно увидеть соответствующую запись. Решаются проблемы удалением инсталляции Elisy
.Net Bridge и установкой этой же инсталляции с правами администратора или запуском
тонкого клиента 1С или веб-браузера с правами администратора.
Примечание: На компьютерах с ранними версиями (до RTM) операционной системы
Windows 7 невозможно запускать приложения .Net framework 4. В этой связи компонент
Elisy .Net Bridge 4 работать не будет. Следует обновить Windows 7 до RTM-версии
и выше.
"Тонкий" и "толстый" клиент
Максимальные функциональные возможности на "тонком" и "толстом" клиентах предоставляет
подключение по технологии COM с использованием COM ProgID. Такое подключение выполняется
следующим образом:
Примечание: Если приведенный ниже код выдает ошибку, то необходимо зарегистрировать
в реестре библиотеки проекта через вызов Regsvr32 Elisy.NetBridge.dll
и Regsvr32 Elisy.HwndHost.dll
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
Для "толстого" клиента существует нерекомендуемый вызов по пути к файлу, оставшийся
для обратной совместимостьи с предыдущими версиями 1С:Предприятие (до 8.2):
- ЗагрузитьВнешнююКомпоненту("C:\Program Files\Elisy .Net Bridge 4 SDK\Elisy.NetBridge.dll");
- AddIn = Новый("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
Веб-клиент 8.2
Примечание: В текущей версии Elisy .Net Bridge нет поддержки веб-клиента.
В будущем планируется добавить поддержку веб-браузера Internet Explorer.
Для веб-браузера подключение происходит из макета с ZIP-содержимым таким образом:
- ПодключитьВнешнююКомпоненту("ОбщийМакет.ElisyNetBridge4", "ElisyNetBridge", ТипВнешнейКомпоненты.Native);
- AddIn = Новый("AddIn.ElisyNetBridge.ElisyNetBridge4");
- net = AddIn.GetNet();
При работе с веб-клиентом может потребоваться включение настройки "Разрешить сценарии".
Сервер 8.2
Единственным способом подключения компонента на сервере 1С 8.2 является подключение
в качестве Com-компонента. В этом режиме доступны не все режимы лицензирования.
- net = Новый COMОбъект("Elisy.NetBridge4");
Примечание: Хотя в 1С:Предприятие 8.2 была анонсирована технология внешних
компонент NativeAPI, но пока использовать ее не предоставляется возможным. Связано
это с более ограниченной функциональностью по сравнению с COM-внешними компонентами
и нестабильной работой .Net framework (см.
Новая версия 1С:Предприятие 8.2 конфликтует с C# и .Net framework).
Обращение к внешнему компоненту
Внешний компонент реализует единственный метод GetNet()/ПолучитьДотНет(), который
возвращает объект класса Elisy.NetBridge:
Далее работа ведется с объектом .Net-типа Elisy.NetBridge. Например, становится
возможным вызов статического метода:
- image = net.CallStatic("System.Drawing.Image", "FromFile", "d:\SampleImage.jpg");
4.2.2. Подключение Elisy.HwndHost.dll
На управляемую форму 1С:Предприятие компонент HwndHost добавляется через Html-файл,
который проигрывается через элемент формы Поле (Вид: поле Html документа).
- <object id="ElisyHwndHost" classid="clsid:B8369982-4974-4F9B-8F4E-1E7EA759A3C1">
- <div>
- <p>To proceed further you
should install Elisy .Net Bridge. See more at <a href="http://www.1csoftware.com/dotnet/"
style="text-decoration: none;">www.1csoftware.com/dotnet</a></p>
- <p>Для работы необходимо установить
Elisy.Net Bridge. Более подробно - на сайте <a href="http://www.1csoftware.com/dotnet/"
style="text-decoration: none;">www.1csoftware.com/dotnet</a></p>
- </div>
- </object>
На неуправляемую форму 1С:Предприятие компонент Elisy HwndHost добавляется выбором
в главном меню: Форма >> Вставить ActiveX...>> ElisyHwndHost class.
Неуправляемой форме о своей готовности Elisy HwndHost сообщит событием Created.
В управляемых формах удобнее обрабатывать событие элемента формы 1С ДокументСформирован.
С этого момента на элемент управления можно помещать WPF- или WinForms- содержимое.
5. Примеры использования
Работа с регулярными выражениями, например, для получения из текста URL и E-mail'ов.
Следующий пример проверяет корректность e-mail адресов:
- //Подключение внешнего компонента
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
- //Создать массив строк для проверки
- address = Новый Массив();
- address.Add("jay@southridgevideo.com");
- address.Add("barry@adatum.com");
- address.Add("treyresearch.net");
- address.Add("karen@proseware.com");
- //Создать шаблон регулярного выражения
- emailregex = net.New("System.Text.RegularExpressions.Regex", "(?<user>[^@]+)@(?<host>.+)");
- For i=0 To address.Count()-1 Do
- //Проверить на соответствие шаблону
- m = emailregex.Match(address[i]);
- Сообщить(address[i]);
- If m.Success Then
- //В случае успеха
- Сообщить(" Пользователь="
+ m.Groups.get_Item("user").Value);
- Сообщить(" Хост=" + m.Groups.get_Item("host").Value);
- Else
- Сообщить(" (Неправильный адрес
эл.почты)");
- EndIf
- EndDo;
Работа с графикой: рисование произвольных изображений из 1С, накладывание водяных
знаков на фото номенклатуры, изменение формата и разрешения фото номенклатуры. Следующий
пример рисует простой рисунок из 1С и сохраняет его на диск:
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
- //Код показывает, как нарисовать простое изображение и записать его в файл
- drawing = net.LoadAssembly("System.Drawing, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a");
- buffer = net.New("System.Drawing.Bitmap", 350, 350);
- bufferSurface = net.CallStatic("System.Drawing.Graphics", "FromImage",
buffer);
- //Желтой кистью
- yellowBrush = net.New("System.Drawing.SolidBrush", net.New("System.Drawing.Color").Yellow);
- //Нарисовать круг
- bufferSurface.FillEllipse(yellowBrush, 25, 25, 187, 187);
- //Черной кистью
- blackBrush = net.New("System.Drawing.SolidBrush", net.New("System.Drawing.Color").Black);
- //Нарисовать эллипсы
- bufferSurface.FillEllipse(blackBrush, 70, 75, 22, 17);
- bufferSurface.FillEllipse(blackBrush, 140, 75, 22, 17);
- //Черным карандашом
- blackPen = net.New("System.Drawing.Pen", net.New("System.Drawing.Color").Black,
10);
- //Нарисовать дугу
- bufferSurface.DrawArc(blackPen, 65, 95, 102, 75, 0, 180);
- //Записать в формате Jpg
- buffer.Save("d:\Smile.jpg");
Организация простейшего Http-сервера напрямую из 1С. На некоторых операционных системах
может потребоваться запуск с правами администратора. Следующий пример кода 1С прослушивает
порт 8080 и формирует html в ответ на запрос:
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
- Если НЕ net.GetStatic("System.Net.HttpListener","IsSupported")
Тогда
- Сообщить("Для использования класса HttpListener нужна ОС
Windows XP SP2 или Server 2003.");
- Возврат;
- КонецЕсли;
- listener = net.New("System.Net.HttpListener");
- listener.Prefixes.Add("http://*:8080/");
- listener.Start();
- Сообщить("Прослушивание...");
- //Метод GetContext блокирует выполнение программы пока ждет запрос.
- context = listener.GetContext();
- request = context.Request;
- // Получить объект ответа
- response = context.Response;
- // Создать ответ - HTML-строку
- responseString = "Ответ от HttpListener";
- buffer = net.GetStatic("System.Text.Encoding", "UTF8").GetBytes(responseString);
- // Получить поток ответа и записать ответ в него.
- response.ContentLength64 = buffer.Length;
- output = response.OutputStream;
- output.Write(buffer,0,buffer.Length);
- // Необходимо закрыть выходной поток.
- output.Close();
- listener.Stop();
Шифрование информации симметричными и ассиметричными методами и электронная подпись.
Компонент позволяет из кода 1С выполнять шифрование строк и файлов следующим образом:
- //Код для инициализации компонента Elisy .Net Bridge
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
- //Создание объекта, ослуживающего RSA-алгоритм
- rsa = net.New("System.Security.Cryptography.RSACryptoServiceProvider");
- //Получаем ключи. Генерируются автоматически при создании объекта RSACryptoServiceProvider
и могут быть использованы многократно.
- открытыйКлюч = rsa.ToXmlString(Ложь);
- Сообщить("Открытый ключ: " + открытыйКлюч);
- секретныйКлюч = rsa.ToXmlString(Истина);
- Сообщить("Секретный ключ: " + секретныйКлюч);
- //Преобразовать данные для шифрования в массив byte
- исходнаяСтрока = "Какие-то данные для шифрования.";
- Сообщить("Строка для шифрования: " + исходнаяСтрока);
- данныеДляШифрования = net.GetStatic("System.Text.Encoding", "UTF8").GetBytes(исходнаяСтрока);
- ////////////////
- // Шифрование //
- ////////////////
- //Применить открытый ключ
- rsa.FromXmlString(открытыйКлюч);
- //Получить зашифрованный массив байт.
- зашифрованоМассив = rsa.Encrypt(данныеДляШифрования, false);
- зашифрованоСтрока = net.CallStatic("System.Convert", "ToBase64String",
зашифрованоМассив);
- Сообщить("Зашифрованные данные: " + зашифрованоСтрока);
- /////////////////
- // Расшифровка //
- /////////////////
- //Применить секретный ключ
- rsa.FromXmlString(секретныйКлюч);
- //Расшифровать
- расшифрованныеДанные = rsa.Decrypt(зашифрованоМассив, false);
- расшифрованнаяСтрока = net.GetStatic("System.Text.Encoding", "UTF8").GetString(расшифрованныеДанные);
- Сообщить("Расшифрованная строка: " + расшифрованнаяСтрока);
- /////////////////////////////////
- // Вычисление цифровой подписи //
- /////////////////////////////////
- //Применить секретный ключ
- rsa.FromXmlString(секретныйКлюч);
- //Вычислить подпись
- цифроваяПодпись = rsa.SignData(данныеДляШифрования, net.New("System.Security.Cryptography.SHA1CryptoServiceProvider"));
- цифроваяПодписьСтрока = net.CallStatic("System.Convert", "ToBase64String",
цифроваяПодпись);
- Сообщить("Цифровая подпись: " + цифроваяПодписьСтрока);
- ///////////////////////////////
- // Проверка цифровой подписи //
- ///////////////////////////////
- //Применить секретный ключ
- rsa.FromXmlString(открытыйКлюч);
- //Проверить цифровую подпись
- Если rsa.VerifyData(данныеДляШифрования, net.New("System.Security.Cryptography.SHA1CryptoServiceProvider"),
цифроваяПодпись) Тогда
- Сообщить("Цифровая подпись валидная");
- Иначе
- Сообщить("Цифровая подпись невалидная");
- КонецЕсли
6. Описание свойств и методов Elisy .Net Bridge
6.1. Внешний компонент Elisy .Net Bridge
Внешний компонент Elisy .Net Bridge реализует следующие методы и свойства.
Подключить его к 1С:Предприятие вы можете следующим образом:
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
или
- ЗагрузитьВнешнююКомпоненту("C:\Program Files\Elisy .Net Bridge 4 SDK\Elisy.NetBridge.dll");
- AddIn = New("AddIn.ElisyNetBridge4");
Примечание: Вызов ЗагрузитьВнешнююКомпоненту не рекомендуется, так как он
остался для обратной совместимости с предыдущими версиями и возможен только на "толстом"
клиенте.
GetNet()/ПолучитьДотНет()
- Синтаксис:
-
- Параметры:
-
Нет
- Возвращает:
-
COM-объект - объект типа класса Elisy.ElisyNetBridge
- Описание:
-
Метод создает и возвращает .Net-объект класса Elisy.ElisyNetBridge. Дальнейшая работа
ведется с этим объектом.
- Пример:
-
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
6.2. Класс Elisy.ElisyNetBridge
Основной .Net-класс, позволяющий использовать многие возможности .Net Framework,
такие как: загрузка сборок, создание объектов (простых и типизированных), вызов
статических методов, получение значений статических свойств и др.
Следующий код позволяет создать объект типа Elisy.ElisyNetBridge для последующего
обращения к нему:
- ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
- AddIn = New("AddIn.ElisyNetBridge4");
- net = AddIn.GetNet();
Метод ActivateByCompany(серийныйНомер, названиеОрганизации, ключАктивации)
- Синтаксис:
-
- ActivateByCompany(серийныйНомер, названиеОрганизации, ключАктивации)
- Параметры:
-
серийныйНомер (Строка) - серийный номер, который выдается продукту при продаже;
названиеОрганизации (Строка) - Название организации в справочнике "Организации";
ключАктивации (Строка) - подпись, подтвержающая правомерность использования компонента;
- Возвращает:
-
Булево - значение, показывающее успешно ли прошла активация
- Описание:
-
Активирует компонент для одной организации, ориентируясь на справочник Организации.
- Пример:
-
- net.ActivateByCompany("XXXXXXXXXXXXXXXXXX", "ООО ""Корпорация""",
- "Zx5Ts0nYDuB9yXLtIjd");
Метод ActivateByLicenseFile(путьКФайлуЛицензий)
- Синтаксис:
-
- ActivateByLicenseFile(путьКФайлуЛицензий)
- Параметры:
-
путьКФайлуЛицензий (Строка) - путь к файлу лицензий, на основе которого нужно выполнить
активацию. Если пусто, то принимается как путь_к_elisy_net_bridge_dll+".lic".
- Возвращает:
-
Строка - журнал сообщений об обработке файла лицензий
- Описание:
-
Активирует продукт, вызывая команды из файла лицензий, до первой успешной активации.
Путь к файлу лицензий передается параметром. Если строка с путем к файлу лицензий
пустая, то путь принимается равным <путь_к_elisy_net_bridge_dll>+".lic". Файл
лицензий состоит из строк с командами (по одной команде на строку) в следующем формате:
- ActivateByMac("Серийный номер", "Мак-адрес", "Ключ активации");
- //Комментарий
- ActivateByCompany("Серийный номер","Организация","Ключ активации");
- Пример:
-
- log = net.ActivateByLicenseFile("");
- if NOT net.IsActivated then
- Сообщить(log);
- endif;
Метод ActivateByMac(серийныйНомер, MACАдрес, ключАктивации)
- Синтаксис:
-
- ActivateByMac(серийныйНомер, MACАдрес, ключАктивации)
- Параметры:
-
серийныйНомер (Строка) - серийный номер, который выдается продукту при продаже;
MACАдрес (Строка) - Уникальный MAC-адрес сетевой платы компьютера;
ключАктивации (Строка) - подпись, подтвержающая правомерность использования компонента;
- Возвращает:
-
Булево - значение, показывающее успешно ли прошла активация
- Описание:
-
Активирует компонент по уникальнмому адресу MAC сетевой платы компьютера.
- Пример:
-
- net.ActivateByMac("XXXXXXXXXXXXXXXXXX",
- "00:1A:4D:5C:3E:BC",
- "DyAmVOPyNFTaddNK0jA9m");
Метод CallStatic(ИмяТипа, ИмяМетода, параметр1, параметр2, ..., параметрN)
- Синтаксис:
-
- CallStatic(ИмяТипа, ИмяМетода, параметр1, параметр2, ..., параметрN)
- Параметры:
-
ИмяТипа (Строка) - полное имя типа;
ИмяМетода (Строка) - имя статического метода;
параметр1, параметр2, ..., параметрN (Произвольные типы) - параметры, передаваемые
в метод;
- Возвращает:
-
Произвольное значение - результат обращения к статическому методу.
- Описание:
-
Метод позволяет обратиться к статическому методу, передавая ему произвольные параметры.
- Пример:
-
- tempVar = net.CallStatic("System.Environment", "GetEnvironmentVariable", "TEMP");
Метод GetObject(Объект)
- Синтаксис:
-
- Параметры:
-
Объект (Объект) - COM-объект;
- Возвращает:
-
Объект - значение совместимое с .Net Bridge.
- Описание:
-
Метод конвертирует произвольный COM-объект в .Net Bridge совместимый объект с доступом
ко всем свойствам и методам. Используется в обработчиках событий для организации
обратной связи от .Net-сборок, возвращающих .Net-объекты в виде COM-объектов с ограниченным
доступом.
- Пример:
-
- context = net.GetObject(contextNative);
Метод GetStatic(ИмяТипа, ИмяСвойства)
- Синтаксис:
-
- GetStatic(ИмяТипа, ИмяСвойства)
- Параметры:
-
ИмяТипа (Строка) - полное имя типа;
ИмяСвойства (Строка) - имя статического свойства.
- Возвращает:
-
Произвольный тип - значение статического свойства.
- Описание:
-
Метод позволяет обратиться к статическому свойству произвольного типа и вернуть
его значение.
- Пример:
-
- zeroPtr = net.GetStatic("System.IntPtr", "Zero");
Метод GetTypeByName(имяТипа)
- Синтаксис:
-
- Параметры:
-
имяТипа (строка) - полное имя типа
- Возвращает:
-
Объект типа System.Type, соответствующий полному имени имяТипа
- Описание:
-
Метод пытается вернуть тип, вызывая метод Type.GetType. Если не получается, идет
поиск типа перебором всех сборок домена приложения.
- Пример:
-
- list = net.GetTypeByName("System.Collections.Generic.List`1");
- dictionary = net.GetTypeByName("System.Collections.Generic.Dictionary`2");
Свойство IsActivated
- Синтаксис:
-
- Описание:
-
Свойство показывает, активирован ли компонент Elisy .Net Bridge. Возвращает Истина,
если активирован.
- Пример:
-
Метод LoadAssembly(полноеИмяСборки)
- Синтаксис:
-
- LoadAssembly(полноеИмяСборки)
- Параметры:
-
полноеИмяСборки (Строка) - полное имя сборки для поиска в GAC.
- Возвращает:
-
System.Reflection.Assembly - загруженная сборка
- Описание:
-
Метод загружает сборку из GAC для последующего использования его типов.
- Пример:
-
- assembly = net.LoadAssembly("System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
- net.LoadAssembly("System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
- net.LoadAssembly("PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
- net.LoadAssembly("PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
Метод LoadAssemblyFrom(путьКСборке)
- Синтаксис:
-
- LoadAssemblyFrom(путьКСборке)
- Параметры:
-
путьКСборке (Строка) - полный путь к сборке.
- Возвращает:
-
System.Reflection.Assembly - загруженная сборка.
- Описание:
-
Метод загружает сборку из файла dll для последующего использования его типов.
- Пример:
-
- a1 = net.LoadAssemblyFrom("D:\MyProject.dll");
Метод New(имяТипа, параметр1, параметр2, ..., параметрN)
Метод New(имяТипа, тип1, тип2, ..., типN, параметр1, параметр2, ..., параметрN)
- Синтаксис:
-
- New(имяТипа, параметр1, параметр2, ..., параметрN)
- New(имяТипа, тип1, тип2, ..., типN, параметр1, параметр2, ..., параметрN)
- Параметры:
-
имяТипа (строка) - полное имя типа;
тип1, тип2, ..., типN (специальный тип T) - строки или названия, обозначающие типы
в конструкторе универсального типа;
параметр1, параметр2, ..., параметрN (произвольный тип) - параметры произвольного
типа, которые передаются в конструктор;
- Возвращает:
-
Объект типа ИмяТипа или универсального типа ИмяТипа<тип1, тип2, ..., типN>
- Описание:
-
Метод создает .Net-объект, передавая в его конструктор произвольные параметры и
возвращает COM-объект-обертку, которую можно дальше использовать в 1C:Предприятие.
Сборка, к которой принадлежит тип, должна быть предварительно загружена (например,
вызовом LoadAssembly).
- Пример:
-
- hwnd = net.New("System.IntPtr", 131724);
- color = net.New("System.Drawing.Color").Yellow;
- specialFolder = net.New("System.Environment+SpecialFolder").DesktopDirectory;
- client = net.New("System.Web.Services.Protocols.SoapHttpClientProtocol");
- Пример:
-
- //List<Type>()
- list = net.New("System.Collections.Generic.List", net.T("System.Type"));
- //EnumerableDataSource<Day>(list)
- dataSource = net.New("Microsoft.Research.DynamicDataDisplay.DataSources.EnumerableDataSource",
net.T("Elisy.NetBridge.Chart.Models.Day"), list);
Метод SetStatic(ИмяТипа, ИмяСвойства, Значение)
- Синтаксис:
-
- SetStatic(ИмяТипа, ИмяСвойства, Значение)
- Параметры:
-
ИмяТипа (Строка) - полное имя типа;
ИмяСвойства (Строка) - имя статического свойства;
Значение (Произвольный тип) - новое значение свойства;
- Возвращает:
-
Ничего не возвращает.
- Описание:
-
Метод позволяет установить значение статического свойства.
Свойство Version
- Синтаксис:
-
- Описание:
-
Свойство возвращает версию (System.Version) текущей сборки Elisy.NetBridge.
- Пример:
-
- v = net.Version;
- if (v.CompareTo(net.New("System.Version", "4.0")) < 0) then
- Message("Требуется версия Elisy .Net Bridge 4.0 и выше");
- return;
- endif;
6.3. Класс Elisy.NetBridge.Environment
Свойство StrictMode
- Синтаксис:
-
- Описание:
-
Свойство управляет режимом неявного преобразования типов. Если Ложь, то все возвращаемые
.Net-типы будут автоматически преобразовываться в соответствующие 1С-типы. Если
Истина, то все возвращаемые .Net-типы попадают в 1С:Предприятие как объекты. Чтобы
явно получить 1С-значение простого типа (например, число, строка, булево, дата),
нужно обратиться к свойству _1CValue каждого объекта.
- Пример:
-
- net.SetStatic("Elisy.NetBridge.Environment", "StrictMode", true);
- double = net.CallStatic("System.Convert", "ToDouble", 10.1);
- Message(double.GetType().FullName._1CValue + double._1CValue);
- decimal = net.CallStatic("System.Convert", "ToDecimal", double);
- Message(decimal.GetType().FullName._1CValue + decimal._1CValue);
- int32 = net.CallStatic("System.Convert", "ToInt32", double);
- Message(int32.GetType().FullName._1CValue + int32._1CValue);
- float = net.CallStatic("System.Convert", "ToSingle", double);
- dateTime = net.CallStatic("System.Convert", "ToDateTime", Date('20110301125959'));
- net.SetStatic("Elisy.NetBridge.Environment", "StrictMode", false);