Новое в новом. Net framework 4.0 внутри 1С:Предприятие 8.2.

by Elisy 5. March 2011 06:10

Выпущена бета-версия Elisy .Net Bridge 4 для работы с .Net framework 4.0 из 1C 8.2.

.Net framework 4 включает в себя много нововведений. Большая часть функциональности доступна 1С-разработчикам через продукт .Net Bridge. Более подробно можно узнать из публикаций:

Что касается нововведений .Net 4.0 полезных для 1С 8.2, мне удалось поработать и оценить только DLR (Dynamic Language Runtime) и PLINQ (Parallel Extensions).

DLR вводит ключевое слово dynamic и позволяет принимать в .Net-метод любой объект 1С и элегантно обращаться к его свойствам и методам следующим образом:

public void ProcessRow1C(dynamic model, dynamic form, int i)
{
    var row = model.Клиенты.Получить(i);
    form.ОтправитьПисьмо(row);
}

Раньше это делалось через определение параметра как System.Object и обращение к свойствам и методам 1С-объекта через вызов InvokeMember.

PLINQ (Parallel LINQ) позволяет в один метод распараллелить вычисления. Делается это из C# примерно таким образом:

public void SendAll(dynamic model, dynamic form)
{
    int count = model.Клиенты.Количество();
    var indexes = Enumerable.Range(0, count);
    //Параллельная обработка через .Net
    indexes.AsParallel().ForAll((i) => ProcessRow(model, i));
}

По сравнению с альфа-версией .Net Bridge в 4й бета-версии появилась возможность включать «строгий» режим преобразования типов. Строгий режим позволяет управлять простыми типами .Net-объектов из кода 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);

Tags: , , , ,

1C.Net | C#

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

Richmedia.us

Добро пожаловать на сайт Richmedia.us

1 2 3 4 5 6 7 8

RecentComments

Comment RSS