Имя: Пароль:
1C
1С v8
Net Core. Динамическая компиляция класса обертки для получения событий .Net объе
0 Serginio1
 
14.09.16
10:47
Выложил статьи
https://habrahabr.ru/post/309850/
http://catalog.mista.ru/public/548701/

В общем хотел обсудить
Так при создании Native API видны ноги из IDispatch. Но там использовались диспинтерфейсы для вызова только Invoke

1. Абсолютно не нужны методы FindMethod, FindProp, GetNParams, HasRetVal, GetParamDefValue
(IsPropReadable, IsPropWritable только для отладчика). Так как у методов bool CallAsProc, bool CallAsFunc, bool SetPropVal и bool GetPropVal есть возвращаемое значение об успешном выполнении. Информация об ошибке возвращается через AddError. Да и вызов по индексу это анахронизм от IDiapatch где было описание диспинтерфейсов для увеличения скорости вызова.
2. При возвращении методами SetPropVal и GetPropVal исключение не вызывается
3. Зачем то происходит установка свойств, там где в коде этого не требуется.
4. Вызывается метод как функция, там где метод вызывается как процедура.
5. Один из основных это нельзя вернуть и передать экземпляр ВК из методов ВК.

Я лично не вижу никаких проблем. Определить значение для такого типа и установить ссылку в поле pInterfaceVal.
В Native API есть структура


struct _tVariant
        {
.....
         _ANONYMOUS_STRUCT struct
            {
                void* pInterfaceVal;
               IID InterfaceID;
           }    
......
   TYPEVAR vt;
       };



В которой можно использовать void* pInterfaceVal; IID InterfaceID. А в vt; указать, что это ВК. С недавних пор можно передавать byte[]. Так можно пойти и дальше.

Подсчет ссылок происходит на стороне 1С. Передавать можно в том числе и объекты 1С только на время вызова метода. Так при использовании IDispatch в 1С нет проблем при передачи IDispatch в параметрах метода. Сейчас скорость вызова метода ВК почти в 15 раз медленнее вызова из С++ только

public static bool CallAsFunc(int Target, IntPtr ИмяМетодаPtr, IntPtr ReturnValue, IntPtr МассивПараметров, int РазмерМассива)

И медленнее в 5 раз аналогичного метода 1С. При этом вместо одного метода вызывается FindMethod, GetNParams, CallAsFunc. А если вызывать напрямую без ВК то и скорость будет аналогичной с использованием внутренних методов.

Сейчас при передаче в метод ВК через свойство метод(Объект.Свойство) или в метод по ссылке без знач. 1С пытается присвоить значение, даже если это значение не изменилось. Можно в ВК предустмотреть передачу измененных параметров.

Сейчас на Windows множество компонент на COM. Те же ADO,Excel итд. Можно легко создать свою COM библиотеку на любом языке.

Поэтому при опросе почему не используют Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент

Большинство отвечает, что не намерены использовать продукт неизвестно от кого. Эта ситуация аналогична с ЯП Nemerle. Язык который мощнее C#, но за которым стоят энтузиасты никому не нужен. Но при этом все соглашаются, что если бы эта компонента была интегрирована в 1С на подобии ComОбъект то все ею бы пользовались.

Что касается кроссплатформенности, то .Net Core дает эту возможность. При этом эта технология сейчас активно развивается .NET Core Roadmap

Как я показал можно использовать любые классы .Net Core только на языке 1С. Можно использовать динамическую компиляцию скриптов или написать свою Сборку на C#, что значительно проще чем писать ВК.
1 Кирпич
 
14.09.16
10:52
Избави мя, Господи, от обольщения богомерзкого и злохитрого антихриста, близгрядущего, и укрой меня от сетей его в сокровенной пустыне Твоего спасения. Даждь ми, Господи, крепость и мужество твердаго исповедания имени Твоего святого, да не отступлю страха ради дьявольского, да не отрекусь от Тебя, Спасителя и Искупителя моего, от Святой Твоей Церкви. Но даждь мне, Господи, день и ночь плачь и слезы о грехах моих, и пощади мя, Господи, в час Страшного Суда Твоего. Аминь.
2 Лефмихалыч
 
14.09.16
10:53
не хватает понятных примеров, на кой хер это все надо
3 Jija Grenkov
 
14.09.16
10:54
(1) В точку. Топикастер явно пергибает с продвижением своиз поделок.
4 DDwe
 
14.09.16
10:56
Активность ТС зашкаливает, а внятного ответа на вопрос зачем, не было.
5 Serginio1
 
14.09.16
10:58
(1) Ты же сам просил динамическую компиляцию. По твоей просьбе написал
http://catalog.mista.ru/public/547389/
https://habrahabr.ru/post/309340/
А ты тут какими то непонятными словами кидаешься.
(2) А что пример с изменений директорий, события Com порта, получение событий по Web Socket, WhatsApp разве не показательны.

(3) Я просто делюсь опытом. Ну и можно веди и не читатьесли так достает?
6 Agent ООЗ
 
14.09.16
10:58
(3) давай, рассказывай, как ты в режиме дежурного бота мисты 24/7, дошел до уровня java middle+, поделись так сказать бесценным опытом.
7 Лефмихалыч
 
14.09.16
11:00
(5) в статье я не вижу этих примеров. Ты вроде там намекаешь на что-то там про вацап, но каким конкретно образом это все должно - и что именно - с вацапом делать, я не понял.
8 DDwe
 
14.09.16
11:00
(6) +100500 )))
9 DDwe
 
14.09.16
11:00
(5) "А что пример с изменений директорий, события Com порта, получение событий по Web Socket, WhatsApp разве не показательны. " - Зачем?
10 Serginio1
 
14.09.16
11:02
(7) Делал для большого .Net. Но по сути с него и решил сделать динамическую компиляцию.
Вот аналог

1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp

http://catalog.mista.ru/public/434771/
11 Лефмихалыч
 
14.09.16
11:02
ну, и неадекватная реакция на конструктивную обратную связь несколько обескураживает
12 Лефмихалыч
 
14.09.16
11:03
(10) как это (0) связано с этим (10)?
13 xafavute
 
14.09.16
11:03
(10) а где кнопочка скачать?
14 Serginio1
 
14.09.16
11:03
(11) Например? Про конструктив и обратную связь.
15 DDwe
 
14.09.16
11:04
(10) Можно еще чайник подцепить к 1С и включать по кнопке из РТиУ. Но зачем?
16 Лефмихалыч
 
14.09.16
11:04
(14) я тебе написал, чего не хватает в статье, чтобы она стала понятной. Ты мне ответил какую-то хуергу
17 Loky9
 
14.09.16
11:04
v8: v8: Elisy .Net Bridge 4 для 1С:Предприятие 8.2 (платное ПО)
Не учатся ничему некоторые и учиться не хотят.
18 Serginio1
 
14.09.16
11:04
19 Кирпич
 
14.09.16
11:05
(5) я ничего не просил. у меня и так всё прекрасно работает, без твоих чудесных изобретений.
20 Serginio1
 
14.09.16
11:06
(16) Мне тебя сложно понять. В 10 как раз используется динамичекая компиляция событий.
21 Serginio1
 
14.09.16
11:06
(19) Но у тебя без объектов.
22 Кирпич
 
14.09.16
11:06
(17) вот там второй ненормальный, который C# к 1С прикручивает. Их двое таких, но тот, первый, вроде успокоился давно.
23 Serginio1
 
14.09.16
11:07
21 И не кроссплатформенно
24 Лефмихалыч
 
14.09.16
11:07
Кстати, третий каммент по ссылке из (10) просто гениален:

"Makushimo 06.05.2016 05:37
а что нужно прочитать, чтобы понять то, что тут написано?"

Автор, нужны понятные примеры. Пока что ты решаешь несуществующие ни у кого проблемы, способом, которого ни кто не понимает. Ты или продаешь хрень, или хреново продаешь, или продаешь не тем...
25 Serginio1
 
14.09.16
11:07
(17,22) Оно платное. И не кроссплатформенно.
26 Serginio1
 
14.09.16
11:08
(24) Я никому ничего не продаю. Кому нужно помогаю, иногда за вознаграждение.
27 Loky9
 
14.09.16
11:09
(25) Были бы деньги, была бы кроссплатформа.
28 Serginio1
 
14.09.16
11:09
26+ Но люди сами предлагают. Многие сами разбираются
29 Loky9
 
14.09.16
11:09
Зато оно "1С совместимо"
30 Кирпич
 
14.09.16
11:09
(21) каких еще объектов? мне вообще неважно объекты или не объекты. Мне нужно чтобы задача решалась быстро и правильно. Это тебе нужно обязательно чтобы .NET и объекты.
31 xafavute
 
14.09.16
11:09
(24) Это не продажа - это просто поток мыслей.
Поэтому все обсуженеия скатываются к обсуждению личности ТС
32 Лефмихалыч
 
14.09.16
11:10
(26) там "продаешь" в широком смысле.
Еще раз, услышь: тебя ни кто не понимает и это __твоя__ проблема.
33 Serginio1
 
14.09.16
11:10
(27) Конечно за деньги можно, что угодно. Я показал, как можно кроссплатформено заменить COM
34 batman69
 
14.09.16
11:17
Один пытается рабочую конфигурацию зачем-то с 7 на 8 перенести, второй NET пихает во все дырки. Нет, чтобы полезное всем предложить. Тебе нравится NET, а мы тут причем?
35 Serginio1
 
14.09.16
11:19
(34) А я разве насильно заставляю тебя читать, Есть много людей которым это нужно. В том числе и ради позавтельности.
Вон тут про Java топики. Ты там возмутился?
36 batman69
 
14.09.16
11:22
(35) "Есть много людей которым это нужно" - Кто? И как раньше спрашивали - зачем?
37 xafavute
 
14.09.16
11:23
(36) Есть и их много!!!!
38 Кирпич
 
14.09.16
11:23
двое их
39 batman69
 
14.09.16
11:24
Ещё раньше помнится Python кто-то к 1С прикручивал и где он?
40 Serginio1
 
14.09.16
11:24
(36) Ну можешь посмотреть, кто скачал разработку за деньги, еще куча народу по бесплатным ссылкам http://ru.stackoverflow.com/questions/527763/%d0%9a%d0%b0%d0%ba-%d0%b2%d1%8b%d0%b7%d0%b2%d0%b0%d1%82%d1%8c-%d0%bc%d0%b5%d1%82%d0%be%d0%b4-%d0%b8%d0%b7-c-%d0%b2-1%d0%a1/527802#527802

А зачем у каждого своя проблема. И их много.
Хотя бы .Net в 1С. На примере использования HTTPClient,AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция

http://catalog.mista.ru/public/466196/
41 Loky9
 
14.09.16
11:26
(39) Народ качает, спрашивают по разу в год)
42 Йохохо
 
14.09.16
11:26
Кино такое было "джек восьмеркин американец", автор ну прям гг из него. Увлечен, что то делает, но нихрена не понятно, даже одно предложение не понять. А потом придет сермяк, сделает просто, напишет понятно и срубит на блэкджек с 1сом и шлюхами
43 Serginio1
 
14.09.16
11:31
(39) А Питон можно и через мою разработку http://metanit.com/sharp/tutorial/9.3.php

(41) Спрашивают.
(42) Тебе понятно зачем COM, Web Сервисы?
Это то же самое. Есть стандартная библиотека с кучей классов которые ты можешь использовать. Например работа с Excel, ADO но кроссплатформенно.
44 Loky9
 
14.09.16
11:32
(43) Через мою тоже NET можно ;)
45 Лефмихалыч
 
14.09.16
11:32
(43) аксесс форбидден
А зачем кросплатформенность для работы с экселем и адо?
46 xafavute
 
14.09.16
11:33
ексель и 1с нативно умеет уже
47 Serginio1
 
14.09.16
11:36
(42) Опять же вариант с WhatsAp у которго до 40 событий. Переписвать вручную я замучался. Да и переделывть на COM тоже требует труда. Здесь берешь библиотеку и используешь без изменений.
(44) Покажи посмотрю. Заодно пойму, за что мою хаешь.
И у меня кроссплатформенно.
(46) Умеет, но как там со стилями, формулами итд.
Кстати 1С каждый раз добавляет то, что уже есть в огромной куче библиотек и классов в них. Плюс куча сторонних библиотек через Nuget
48 Serginio1
 
14.09.16
11:41
(39) По Питону можешь помотреть здесь http://catalog.mista.ru/public/186206/
49 Loky9
 
14.09.16
11:43
(47) Я и не хаю. Моя лежит где и лежала, но уже полная. Делалось "с кандачка", как ты говоришь, второй в жизни проектик на шарпе как-никак и первый с железопитоном, так что в её потребительских качествах я не уверен.
50 xafavute
 
14.09.16
11:47
битва сишарпистов на форуме 1с?
51 Serginio1
 
14.09.16
11:51
(50) а я ещё и крестиком вышивать умею
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший