.Net Framework Elisy .Net Bridge 1CSOFTWARE.COM
Elisy Software Design
Руководство по использованию продукта Elisy .Net Bridge

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С:Предприятие
  1. private SeriesCollection getVolumeData()
  2. {
  3.     SeriesCollection SC = new SeriesCollection();
  4.     Random myR = new Random(1);
  5.     for(int i = 0; i < 1; i++)
  6.     {
  7.         Series s = new Series();
  8.         s.Name = "Volume";
  9.         double startPrice = 50;
  10.         DateTime startDT = new DateTime(2000,1,1);
  11.         for(int b = 0; b < 75; b++)
  12.         {
  13.             Element e = new Element();
  14.             e.XDateTime = startDT;
  15.             startDT = startDT.AddDays(1);
  16.             e.YValue = myR.Next(100);
  17.             s.Elements.Add(e);
  18.         }
  19.         SC.Add(s);
  20.     }
  21.     return(SC);
  22. }
  1. Function getVolumeData()
  2.     SC = net.New("dotnetCHARTING.WinForms.SeriesCollection");
  3.     myR = net.New("System.Random", 1);
  4.     for a = 0 to 0 do
  5.         s = net.New("dotnetCHARTING.WinForms.Series");
  6.         s.Name = "Volume";
  7.         startPrice = 50;
  8.         startDT = net.New("System.DateTime", 2000, 1, 1);
  9.         for b = 0 to 74 do
  10.             e = net.New("dotnetCHARTING.WinForms.Element");
  11.             e.XDateTime = startDT;
  12.             startDT = startDT.AddDays(1);
  13.             e.YValue = myR.Next(100);
  14.             s.Elements.Add(e);
  15.         enddo;
  16.         SC.Add(s);
  17.     enddo;
  18.     return SC;
  19. 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.

  1. УстановитьВнешнююКомпоненту("ОбщийМакет.ElisyNetBridge4");

Пример файла MANIFEST.xml при добавлении файлов Elisy.NetBridge.dll и Elisy.NetBridge.cab в 1С-макет

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <bundle xmlns="http://v8.1c.ru/8.2/addin/bundle">
  3.     <component path="Elisy.NetBridge.dll" os="Windows" arch="i386" ClientType="1C:Enterprise" type="native" />
  4.     <component path="Elisy.NetBridge.cab" os="Windows" arch="i386" client="MSIE" type="plugin" object="Elisy.NetBridge4" />
  5. </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
  1. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  2. AddIn = New("AddIn.ElisyNetBridge4");
  3. net = AddIn.GetNet();

Для "толстого" клиента существует нерекомендуемый вызов по пути к файлу, оставшийся для обратной совместимостьи с предыдущими версиями 1С:Предприятие (до 8.2):

  1. ЗагрузитьВнешнююКомпоненту("C:\Program Files\Elisy .Net Bridge 4 SDK\Elisy.NetBridge.dll");
  2. AddIn = Новый("AddIn.ElisyNetBridge4");
  3. net = AddIn.GetNet();
Веб-клиент 8.2
Примечание: В текущей версии Elisy .Net Bridge нет поддержки веб-клиента. В будущем планируется добавить поддержку веб-браузера Internet Explorer.

Для веб-браузера подключение происходит из макета с ZIP-содержимым таким образом:

  1. ПодключитьВнешнююКомпоненту("ОбщийМакет.ElisyNetBridge4", "ElisyNetBridge", ТипВнешнейКомпоненты.Native);
  2. AddIn = Новый("AddIn.ElisyNetBridge.ElisyNetBridge4");
  3. net = AddIn.GetNet();
При работе с веб-клиентом может потребоваться включение настройки "Разрешить сценарии".
Сервер 8.2

Единственным способом подключения компонента на сервере 1С 8.2 является подключение в качестве Com-компонента. В этом режиме доступны не все режимы лицензирования.

  1. net = Новый COMОбъект("Elisy.NetBridge4");
Примечание: Хотя в 1С:Предприятие 8.2 была анонсирована технология внешних компонент NativeAPI, но пока использовать ее не предоставляется возможным. Связано это с более ограниченной функциональностью по сравнению с COM-внешними компонентами и нестабильной работой .Net framework (см. Новая версия 1С:Предприятие 8.2 конфликтует с C# и .Net framework).
Обращение к внешнему компоненту

Внешний компонент реализует единственный метод GetNet()/ПолучитьДотНет(), который возвращает объект класса Elisy.NetBridge:

  1. net = AddIn.GetNet();

Далее работа ведется с объектом .Net-типа Elisy.NetBridge. Например, становится возможным вызов статического метода:

  1. image = net.CallStatic("System.Drawing.Image", "FromFile", "d:\SampleImage.jpg");

4.2.2. Подключение Elisy.HwndHost.dll

На управляемую форму 1С:Предприятие компонент HwndHost добавляется через Html-файл, который проигрывается через элемент формы Поле (Вид: поле Html документа).

  1. <object id="ElisyHwndHost" classid="clsid:B8369982-4974-4F9B-8F4E-1E7EA759A3C1">
  2.     <div>
  3.         <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>
  4.         <p>Для работы необходимо установить Elisy.Net Bridge. Более подробно - на сайте <a href="http://www.1csoftware.com/dotnet/" style="text-decoration: none;">www.1csoftware.com/dotnet</a></p>
  5.     </div>
  6. </object>

На неуправляемую форму 1С:Предприятие компонент Elisy HwndHost добавляется выбором в главном меню: Форма >> Вставить ActiveX...>> ElisyHwndHost class.

Неуправляемой форме о своей готовности Elisy HwndHost сообщит событием Created. В управляемых формах удобнее обрабатывать событие элемента формы 1С ДокументСформирован. С этого момента на элемент управления можно помещать WPF- или WinForms- содержимое.

5. Примеры использования

Работа с регулярными выражениями, например, для получения из текста URL и E-mail'ов. Следующий пример проверяет корректность e-mail адресов:

  1. //Подключение внешнего компонента
  2. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  3. AddIn = New("AddIn.ElisyNetBridge4");
  4. net = AddIn.GetNet();
  5. //Создать массив строк для проверки
  6. address = Новый Массив();
  7. address.Add("jay@southridgevideo.com");
  8. address.Add("barry@adatum.com");
  9. address.Add("treyresearch.net");
  10. address.Add("karen@proseware.com");
  11. //Создать шаблон регулярного выражения
  12. emailregex = net.New("System.Text.RegularExpressions.Regex", "(?<user>[^@]+)@(?<host>.+)");
  13. For i=0 To address.Count()-1 Do
  14.     //Проверить на соответствие шаблону
  15.     m = emailregex.Match(address[i]);
  16.     Сообщить(address[i]);
  17.     If m.Success Then
  18.         //В случае успеха
  19.         Сообщить(" Пользователь=" + m.Groups.get_Item("user").Value);
  20.         Сообщить(" Хост=" + m.Groups.get_Item("host").Value);
  21.     Else
  22.         Сообщить(" (Неправильный адрес эл.почты)");
  23.     EndIf
  24. EndDo;

Работа с графикой: рисование произвольных изображений из 1С, накладывание водяных знаков на фото номенклатуры, изменение формата и разрешения фото номенклатуры. Следующий пример рисует простой рисунок из 1С и сохраняет его на диск:

  1. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  2. AddIn = New("AddIn.ElisyNetBridge4");
  3. net = AddIn.GetNet();
  4. //Код показывает, как нарисовать простое изображение и записать его в файл
  5. drawing = net.LoadAssembly("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
  6. buffer = net.New("System.Drawing.Bitmap", 350, 350);
  7. bufferSurface = net.CallStatic("System.Drawing.Graphics", "FromImage", buffer);
  8. //Желтой кистью
  9. yellowBrush = net.New("System.Drawing.SolidBrush", net.New("System.Drawing.Color").Yellow);
  10. //Нарисовать круг
  11. bufferSurface.FillEllipse(yellowBrush, 25, 25, 187, 187);
  12. //Черной кистью
  13. blackBrush = net.New("System.Drawing.SolidBrush", net.New("System.Drawing.Color").Black);
  14. //Нарисовать эллипсы
  15. bufferSurface.FillEllipse(blackBrush, 70, 75, 22, 17);
  16. bufferSurface.FillEllipse(blackBrush, 140, 75, 22, 17);
  17. //Черным карандашом
  18. blackPen = net.New("System.Drawing.Pen", net.New("System.Drawing.Color").Black, 10);
  19. //Нарисовать дугу
  20. bufferSurface.DrawArc(blackPen, 65, 95, 102, 75, 0, 180);
  21. //Записать в формате Jpg
  22. buffer.Save("d:\Smile.jpg");

Организация простейшего Http-сервера напрямую из 1С. На некоторых операционных системах может потребоваться запуск с правами администратора. Следующий пример кода 1С прослушивает порт 8080 и формирует html в ответ на запрос:

  1. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  2. AddIn = New("AddIn.ElisyNetBridge4");
  3. net = AddIn.GetNet();
  4. Если НЕ net.GetStatic("System.Net.HttpListener","IsSupported") Тогда
  5.     Сообщить("Для использования класса HttpListener нужна ОС Windows XP SP2 или Server 2003.");
  6.     Возврат;
  7. КонецЕсли;
  8. listener = net.New("System.Net.HttpListener");
  9. listener.Prefixes.Add("http://*:8080/");
  10. listener.Start();
  11. Сообщить("Прослушивание...");
  12. //Метод GetContext блокирует выполнение программы пока ждет запрос.
  13. context = listener.GetContext();
  14. request = context.Request;
  15. // Получить объект ответа
  16. response = context.Response;
  17. // Создать ответ - HTML-строку
  18. responseString = "Ответ от HttpListener";
  19. buffer = net.GetStatic("System.Text.Encoding", "UTF8").GetBytes(responseString);
  20. // Получить поток ответа и записать ответ в него.
  21. response.ContentLength64 = buffer.Length;
  22. output = response.OutputStream;
  23. output.Write(buffer,0,buffer.Length);
  24. // Необходимо закрыть выходной поток.
  25. output.Close();
  26. listener.Stop();

Шифрование информации симметричными и ассиметричными методами и электронная подпись. Компонент позволяет из кода 1С выполнять шифрование строк и файлов следующим образом:

  1. //Код для инициализации компонента Elisy .Net Bridge
  2. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  3. AddIn = New("AddIn.ElisyNetBridge4");
  4. net = AddIn.GetNet();
  5. //Создание объекта, ослуживающего RSA-алгоритм
  6. rsa = net.New("System.Security.Cryptography.RSACryptoServiceProvider");
  7. //Получаем ключи. Генерируются автоматически при создании объекта RSACryptoServiceProvider и могут быть использованы многократно.
  8. открытыйКлюч = rsa.ToXmlString(Ложь);
  9. Сообщить("Открытый ключ: " + открытыйКлюч);
  10. секретныйКлюч = rsa.ToXmlString(Истина);
  11. Сообщить("Секретный ключ: " + секретныйКлюч);
  12. //Преобразовать данные для шифрования в массив byte
  13. исходнаяСтрока = "Какие-то данные для шифрования.";
  14. Сообщить("Строка для шифрования: " + исходнаяСтрока);
  15. данныеДляШифрования = net.GetStatic("System.Text.Encoding", "UTF8").GetBytes(исходнаяСтрока);
  16. ////////////////
  17. // Шифрование //
  18. ////////////////
  19. //Применить открытый ключ
  20. rsa.FromXmlString(открытыйКлюч);
  21. //Получить зашифрованный массив байт.
  22. зашифрованоМассив = rsa.Encrypt(данныеДляШифрования, false);
  23. зашифрованоСтрока = net.CallStatic("System.Convert", "ToBase64String", зашифрованоМассив);
  24. Сообщить("Зашифрованные данные: " + зашифрованоСтрока);
  25. /////////////////
  26. // Расшифровка //
  27. /////////////////
  28. //Применить секретный ключ
  29. rsa.FromXmlString(секретныйКлюч);
  30. //Расшифровать
  31. расшифрованныеДанные = rsa.Decrypt(зашифрованоМассив, false);
  32. расшифрованнаяСтрока = net.GetStatic("System.Text.Encoding", "UTF8").GetString(расшифрованныеДанные);
  33. Сообщить("Расшифрованная строка: " + расшифрованнаяСтрока);
  34. /////////////////////////////////
  35. // Вычисление цифровой подписи //
  36. /////////////////////////////////
  37. //Применить секретный ключ
  38. rsa.FromXmlString(секретныйКлюч);
  39. //Вычислить подпись
  40. цифроваяПодпись = rsa.SignData(данныеДляШифрования, net.New("System.Security.Cryptography.SHA1CryptoServiceProvider"));
  41. цифроваяПодписьСтрока = net.CallStatic("System.Convert", "ToBase64String", цифроваяПодпись);
  42. Сообщить("Цифровая подпись: " + цифроваяПодписьСтрока);
  43. ///////////////////////////////
  44. // Проверка цифровой подписи //
  45. ///////////////////////////////
  46. //Применить секретный ключ
  47. rsa.FromXmlString(открытыйКлюч);
  48. //Проверить цифровую подпись
  49. Если rsa.VerifyData(данныеДляШифрования, net.New("System.Security.Cryptography.SHA1CryptoServiceProvider"), цифроваяПодпись) Тогда
  50.     Сообщить("Цифровая подпись валидная");
  51. Иначе
  52.     Сообщить("Цифровая подпись невалидная");
  53. КонецЕсли

6. Описание свойств и методов Elisy .Net Bridge

6.1. Внешний компонент Elisy .Net Bridge

Внешний компонент Elisy .Net Bridge реализует следующие методы и свойства.

Подключить его к 1С:Предприятие вы можете следующим образом:

  1. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  2. AddIn = New("AddIn.ElisyNetBridge4");

или

  1. ЗагрузитьВнешнююКомпоненту("C:\Program Files\Elisy .Net Bridge 4 SDK\Elisy.NetBridge.dll");
  2. AddIn = New("AddIn.ElisyNetBridge4");
Примечание: Вызов ЗагрузитьВнешнююКомпоненту не рекомендуется, так как он остался для обратной совместимости с предыдущими версиями и возможен только на "толстом" клиенте.

GetNet()/ПолучитьДотНет()

Синтаксис:
  1. GetNet()
Параметры:
Нет
Возвращает:
COM-объект - объект типа класса Elisy.ElisyNetBridge
Описание:
Метод создает и возвращает .Net-объект класса Elisy.ElisyNetBridge. Дальнейшая работа ведется с этим объектом.
Пример:
  1. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  2. AddIn = New("AddIn.ElisyNetBridge4");
  3. net = AddIn.GetNet();

6.2. Класс Elisy.ElisyNetBridge

Основной .Net-класс, позволяющий использовать многие возможности .Net Framework, такие как: загрузка сборок, создание объектов (простых и типизированных), вызов статических методов, получение значений статических свойств и др.

Следующий код позволяет создать объект типа Elisy.ElisyNetBridge для последующего обращения к нему:

  1. ПодключитьВнешнююКомпоненту("Elisy.NetBridge4");
  2. AddIn = New("AddIn.ElisyNetBridge4");
  3. net = AddIn.GetNet();

Метод ActivateByCompany(серийныйНомер, названиеОрганизации, ключАктивации)

Синтаксис:
  1. ActivateByCompany(серийныйНомер, названиеОрганизации, ключАктивации)
Параметры:
серийныйНомер (Строка) - серийный номер, который выдается продукту при продаже;
названиеОрганизации (Строка) - Название организации в справочнике "Организации";
ключАктивации (Строка) - подпись, подтвержающая правомерность использования компонента;
Возвращает:
Булево - значение, показывающее успешно ли прошла активация
Описание:
Активирует компонент для одной организации, ориентируясь на справочник Организации.
Пример:
  1. net.ActivateByCompany("XXXXXXXXXXXXXXXXXX", "ООО ""Корпорация""",
  2.     "Zx5Ts0nYDuB9yXLtIjd");

Метод ActivateByLicenseFile(путьКФайлуЛицензий)

Синтаксис:
  1. ActivateByLicenseFile(путьКФайлуЛицензий)
Параметры:
путьКФайлуЛицензий (Строка) - путь к файлу лицензий, на основе которого нужно выполнить активацию. Если пусто, то принимается как путь_к_elisy_net_bridge_dll+".lic".
Возвращает:
Строка - журнал сообщений об обработке файла лицензий
Описание:
Активирует продукт, вызывая команды из файла лицензий, до первой успешной активации. Путь к файлу лицензий передается параметром. Если строка с путем к файлу лицензий пустая, то путь принимается равным <путь_к_elisy_net_bridge_dll>+".lic". Файл лицензий состоит из строк с командами (по одной команде на строку) в следующем формате:
  1. ActivateByMac("Серийный номер", "Мак-адрес", "Ключ активации");
  2. //Комментарий
  3. ActivateByCompany("Серийный номер","Организация","Ключ активации");
Пример:
  1. log = net.ActivateByLicenseFile("");
  2. if NOT net.IsActivated then
  3.     Сообщить(log);
  4. endif;

Метод ActivateByMac(серийныйНомер, MACАдрес, ключАктивации)

Синтаксис:
  1. ActivateByMac(серийныйНомер, MACАдрес, ключАктивации)
Параметры:
серийныйНомер (Строка) - серийный номер, который выдается продукту при продаже;
MACАдрес (Строка) - Уникальный MAC-адрес сетевой платы компьютера;
ключАктивации (Строка) - подпись, подтвержающая правомерность использования компонента;
Возвращает:
Булево - значение, показывающее успешно ли прошла активация
Описание:
Активирует компонент по уникальнмому адресу MAC сетевой платы компьютера.
Пример:
  1. net.ActivateByMac("XXXXXXXXXXXXXXXXXX",
  2.     "00:1A:4D:5C:3E:BC",
  3.     "DyAmVOPyNFTaddNK0jA9m");

Метод CallStatic(ИмяТипа, ИмяМетода, параметр1, параметр2, ..., параметрN)

Синтаксис:
  1. CallStatic(ИмяТипа, ИмяМетода, параметр1, параметр2, ..., параметрN)
Параметры:
ИмяТипа (Строка) - полное имя типа;
ИмяМетода (Строка) - имя статического метода;
параметр1, параметр2, ..., параметрN (Произвольные типы) - параметры, передаваемые в метод;
Возвращает:
Произвольное значение - результат обращения к статическому методу.
Описание:
Метод позволяет обратиться к статическому методу, передавая ему произвольные параметры.
Пример:
  1. tempVar = net.CallStatic("System.Environment", "GetEnvironmentVariable", "TEMP");

Метод GetObject(Объект)

Синтаксис:
  1. GetObject(Объект)
Параметры:
Объект (Объект) - COM-объект;
Возвращает:
Объект - значение совместимое с .Net Bridge.
Описание:
Метод конвертирует произвольный COM-объект в .Net Bridge совместимый объект с доступом ко всем свойствам и методам. Используется в обработчиках событий для организации обратной связи от .Net-сборок, возвращающих .Net-объекты в виде COM-объектов с ограниченным доступом.
Пример:
  1. context = net.GetObject(contextNative);

Метод GetStatic(ИмяТипа, ИмяСвойства)

Синтаксис:
  1. GetStatic(ИмяТипа, ИмяСвойства)
Параметры:
ИмяТипа (Строка) - полное имя типа;
ИмяСвойства (Строка) - имя статического свойства.
Возвращает:
Произвольный тип - значение статического свойства.
Описание:
Метод позволяет обратиться к статическому свойству произвольного типа и вернуть его значение.
Пример:
  1. zeroPtr = net.GetStatic("System.IntPtr", "Zero");

Метод GetTypeByName(имяТипа)

Синтаксис:
  1. GetTypeByName(имяТипа)
Параметры:
имяТипа (строка) - полное имя типа
Возвращает:
Объект типа System.Type, соответствующий полному имени имяТипа
Описание:
Метод пытается вернуть тип, вызывая метод Type.GetType. Если не получается, идет поиск типа перебором всех сборок домена приложения.
Пример:
  1. list = net.GetTypeByName("System.Collections.Generic.List`1");
  2. dictionary = net.GetTypeByName("System.Collections.Generic.Dictionary`2");

Свойство IsActivated

Синтаксис:
  1. IsActivated
Описание:
Свойство показывает, активирован ли компонент Elisy .Net Bridge. Возвращает Истина, если активирован.
Пример:
  1. v = net.IsActivated;

Метод LoadAssembly(полноеИмяСборки)

Синтаксис:
  1. LoadAssembly(полноеИмяСборки)
Параметры:
полноеИмяСборки (Строка) - полное имя сборки для поиска в GAC.
Возвращает:
System.Reflection.Assembly - загруженная сборка
Описание:
Метод загружает сборку из GAC для последующего использования его типов.
Пример:
  1. assembly = net.LoadAssembly("System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
  2. net.LoadAssembly("System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
  3. net.LoadAssembly("PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
  4. net.LoadAssembly("PresentationCore, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");

Метод LoadAssemblyFrom(путьКСборке)

Синтаксис:
  1. LoadAssemblyFrom(путьКСборке)
Параметры:
путьКСборке (Строка) - полный путь к сборке.
Возвращает:
System.Reflection.Assembly - загруженная сборка.
Описание:
Метод загружает сборку из файла dll для последующего использования его типов.
Пример:
  1. a1 = net.LoadAssemblyFrom("D:\MyProject.dll");

Метод New(имяТипа, параметр1, параметр2, ..., параметрN)

Метод New(имяТипа, тип1, тип2, ..., типN, параметр1, параметр2, ..., параметрN)

Синтаксис:
  1. New(имяТипа, параметр1, параметр2, ..., параметрN)
  2. New(имяТипа, тип1, тип2, ..., типN, параметр1, параметр2, ..., параметрN)
Параметры:
имяТипа (строка) - полное имя типа;
тип1, тип2, ..., типN (специальный тип T) - строки или названия, обозначающие типы в конструкторе универсального типа;
параметр1, параметр2, ..., параметрN (произвольный тип) - параметры произвольного типа, которые передаются в конструктор;
Возвращает:
Объект типа ИмяТипа или универсального типа ИмяТипа<тип1, тип2, ..., типN>
Описание:
Метод создает .Net-объект, передавая в его конструктор произвольные параметры и возвращает COM-объект-обертку, которую можно дальше использовать в 1C:Предприятие. Сборка, к которой принадлежит тип, должна быть предварительно загружена (например, вызовом LoadAssembly).
Пример:
  1. hwnd = net.New("System.IntPtr", 131724);
  2. color = net.New("System.Drawing.Color").Yellow;
  3. specialFolder = net.New("System.Environment+SpecialFolder").DesktopDirectory;
  4. client = net.New("System.Web.Services.Protocols.SoapHttpClientProtocol");
Пример:
  1. //List<Type>()
  2. list = net.New("System.Collections.Generic.List", net.T("System.Type"));
  3. //EnumerableDataSource<Day>(list)
  4. dataSource = net.New("Microsoft.Research.DynamicDataDisplay.DataSources.EnumerableDataSource", net.T("Elisy.NetBridge.Chart.Models.Day"), list);

Метод SetStatic(ИмяТипа, ИмяСвойства, Значение)

Синтаксис:
  1. SetStatic(ИмяТипа, ИмяСвойства, Значение)
Параметры:
ИмяТипа (Строка) - полное имя типа;
ИмяСвойства (Строка) - имя статического свойства;
Значение (Произвольный тип) - новое значение свойства;
Возвращает:
Ничего не возвращает.
Описание:
Метод позволяет установить значение статического свойства.

Свойство Version

Синтаксис:
  1. Version
Описание:
Свойство возвращает версию (System.Version) текущей сборки Elisy.NetBridge.
Пример:
  1. v = net.Version;
  2. if (v.CompareTo(net.New("System.Version", "4.0")) < 0) then
  3.     Message("Требуется версия Elisy .Net Bridge 4.0 и выше");
  4.     return;
  5. endif;

6.3. Класс Elisy.NetBridge.Environment

Свойство StrictMode

Синтаксис:
  1. StrictMode
Описание:
Свойство управляет режимом неявного преобразования типов. Если Ложь, то все возвращаемые .Net-типы будут автоматически преобразовываться в соответствующие 1С-типы. Если Истина, то все возвращаемые .Net-типы попадают в 1С:Предприятие как объекты. Чтобы явно получить 1С-значение простого типа (например, число, строка, булево, дата), нужно обратиться к свойству _1CValue каждого объекта.
Пример:
  1. net.SetStatic("Elisy.NetBridge.Environment", "StrictMode", true);
  2. double = net.CallStatic("System.Convert", "ToDouble", 10.1);
  3. Message(double.GetType().FullName._1CValue + double._1CValue);
  4. decimal = net.CallStatic("System.Convert", "ToDecimal", double);
  5. Message(decimal.GetType().FullName._1CValue + decimal._1CValue);
  6. int32 = net.CallStatic("System.Convert", "ToInt32", double);
  7. Message(int32.GetType().FullName._1CValue + int32._1CValue);
  8. float = net.CallStatic("System.Convert", "ToSingle", double);
  9. dateTime = net.CallStatic("System.Convert", "ToDateTime", Date('20110301125959'));
  10. net.SetStatic("Elisy.NetBridge.Environment", "StrictMode", false);