1C и .Net
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 24.02.16 07:34
Оценка: 19 (1) :)
Так случилось, что мне нужно было интегрировать 1С с вэб сервисом. Интегрированные средства не позволяли мне их использовать. И тогда я решил, что на помощь мне придет 1С в виде WCF. Но проблема оказалось в том, что нужно было использовать кучу классов. То есть нужно делать обертки в виде COM. В ручную это делать муторно.
Можно написать кодогенератор для враппер над нетовскими объектами. Но я вспомнил про IDispatch и наткнулся на Ireflect.
Нашел в инете пример и наваял свою обертку. И я понял, что как легко можно использовать классы .Net в 1С и в нативе.
И решил поделиться с коллегами найденным решением и написал статью
Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент

Какое же было мое разочарование, когда я понял, что эта статья затронула всего несколько человек.

Тогда я решил, что народ заинтересует Linq и прямой доступ к таблицам. Если, честно то это было интересно и мне, так как приходилось мержить миллионные записи с помощью прямого доступа булков и Merge.
И вот на свет вышли несколько статей

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I
Code First и Linq to EF на примере 1С версии 8.3 часть II
Linq to EF. Практика использования. Часть III

Здесь меня поджидало полное разочарование. Оказалось, что это вообще мало кому интересно и мало понятно. Единственно народ заинтересовало
Linq to ODATA
Но это скорее связано с нужными ссылками.

После очередной рекламы моей поделки на этом форуме, мне правильно указали, что нет автоматического подхвата нетовских событий в комовские.
Да и сам намучился писать вручную события к WhatsApp.

Поэтому я сделал .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия

Вот это уже заинтересовало народ. Но скорее всего ВК писателей. Но это уже был прорыв.
Еще дописал использование асинхронных методов в 1С асинхронно. http://www.forum.mista.ru/topic.php?id=763810&page=1#46

Кроме того привел примеры использования Scripting-API http://www.forum.mista.ru/topic.php?id=758131&page=4#349

После этого решил дать в 1С аналоги вацапа и скайпа только своими руками с использованием SignalR.

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

А заодно сам попрактиковался с HTML,JS,TS а так же попробовал, что такое Xamarin.
Народ это заинтересовало. Но рядом с моей статьёй вышла статья моего единомышленника
Строка в дату. Универсальное решение. Применение NetObjetToIDispatch45

Интерес к ней был не меньше чем к 1C Messenger.

Тогда я понял, что нужно заинтересовать людей более простыми вещами и написал
Использование классов .Net в 1С для новичков
Вот это уже заинтересовало народ и заинтересовала их и все предыдущие статьи кроме Linq.

И даже более специфичная статья Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF

тоже заинтересовала народ.

Добавил статьи
.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

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

Первая не заинтересовала. Посмотрим как отреагируют на вторую.


Это я к чему. По сути я со своими идеями чужой среди 1С, но и чужой среди нетчиков. Так как пишу то я в основном на 1С, а .Net использую по мере поступления задач.
И конечно у меня мало знаний.
Поэтому прошу совета, чем заинтересовать 1С ников с WOW эффектом.

Вот ссылки на исходники
ФайлыNetObjectToIDispatch.zip
1C Messendger
CodeFirstTo1C.zip

Возможно это будет интересно как замена CLR Hosting API
Да скорость вызова порядка 20 000 вызовов в секунду StringBuilder.Append
Кроме того простая интеграция 1С с приложениями где уже есть API для обмена данными с использованием .Net сборок.
Буду рад любым идеям. Просто жалко, что такой потенциал пропадает.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 10.03.2016 12:12 Serginio1 . Предыдущая версия . Еще …
Отредактировано 25.02.2016 12:24 Serginio1 . Предыдущая версия .
Отредактировано 25.02.2016 9:36 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 13:29 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 11:10 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 10:55 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 8:30 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 7:58 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 7:57 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 7:55 Serginio1 . Предыдущая версия .
Отредактировано 24.02.2016 7:54 Serginio1 . Предыдущая версия .
Re: 1C и .Net
От: hi_octane Беларусь  
Дата: 24.02.16 19:52
Оценка: 15 (1)
S> Буду рад любым идеям. Просто жалко, что такой потенциал пропадает.

Я бы сделал акцент на реальных задачах. Типа сделать интеграцию 1С с популярными commerce/cms движками для asp.net, типа nopcommerce, orchard, kooboo, dnn и т.п. Тоже самое с интеграцией с Excel (если её ещё нет). Чтоб например цены на сайте синхронизировались с 1С и заказ нормально оформлялся, и т.п. Вполне может быть что из этого коммерческий проект получится, или опен-сорс с линком "powered by" на твой сайт и деньга за использование без лейбла или доработку тобой под нужды конкретных лиц.
Nemerle — power of metaprogramming, functional, object-oriented and imperative features in a statically-typed .NET language
Re[2]: 1C и .Net
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.02.16 07:02
Оценка:
Здравствуйте, hi_octane, Вы писали:

S>> Буду рад любым идеям. Просто жалко, что такой потенциал пропадает.


_>Я бы сделал акцент на реальных задачах. Типа сделать интеграцию 1С с популярными commerce/cms движками для asp.net, типа nopcommerce, orchard, kooboo, dnn и т.п. Тоже самое с интеграцией с Excel (если её ещё нет). Чтоб например цены на сайте синхронизировались с 1С и заказ нормально оформлялся, и т.п. Вполне может быть что из этого коммерческий проект получится, или опен-сорс с линком "powered by" на твой сайт и деньга за использование без лейбла или доработку тобой под нужды конкретных лиц.

Ну сейчас эту нишу занимает битрикс, правда изменения только оффлайн через обмен файлами. Хотя можно прикрутить Вэб,ХТТП сервисы, ODATA.
Меня то интересует вопрос как заинтересовать 1С ников вообще использовать .Net на простых для понимания, но мощных повыполнению задач.
Например понравился мне AngleSharp и главное, что там поддержка JS.

Но например на таких страницацах http://www.forum.mista.ru/index.php ничего не происходит.
<html>
    <head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript">
document.cookie="__DDOS_COOKIE=6c950441aeaf13f026a3aa8c0fee6df2; max-age=604800; path=/";
    var nc = function() {return
    document.cookie.indexOf("__DDOS_COOKIE=6c950441aeaf13f026a3aa8c0fee6df2")==-1;};
    var w = function() {document.body.innerHTML = document.getElementsByTagName("noscript")[0].textContent;};
    if (!window.opera) {
    if (!nc()) {window.location.reload(true);}
    var r = function() {if (nc()) w();};
        } else {
        var r = function () {
    if (!nc()) {window.location.reload(true);}
    else {w();}
    }
    }
</script>
</head>
<body onload="r()">
<noscript>You have to turn on javascript and cookies support in browser to visit this site.<br />
Для доступа к сайту Ваш браузер должен поддерживать javascript и cookie.
</noscript>
</body>
</html>
и солнце б утром не вставало, когда бы не было меня
Отредактировано 25.02.2016 9:36 Serginio1 . Предыдущая версия .
Re: 1C и .Net
От: ypermitin Россия http://www.develplatform.ru
Дата: 29.02.16 12:06
Оценка:
Здравствуйте, Serginio1,

Сам использую .NET для решения задач и автоматизации свой работы. В основном работа связана с платформой 1С, но .NET (C#) использую очень часто именно для себя: различные утилиты, мой блог сделан на ASP.NET (Composite C1 CMS), различные библиотеки для работы с 1С и много другое.

Но все же считаю, что большинство 1Сников, настоящих и закоренелых скажем так, вряд ли все это будет интересовать. Зачем? Все что они делают они могут сделать с помощью 1Сных средств.
Редко у рядовых бойцов бывают задачи по захвату мира. И если собственного интереса к новым технологиям нет, то и использоваться не будет.

ИМХО.
Re[2]: 1C и .Net
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.02.16 15:11
Оценка:
Здравствуйте, ypermitin, Вы писали:

Y>Здравствуйте, Serginio1,


Y>Сам использую .NET для решения задач и автоматизации свой работы. В основном работа связана с платформой 1С, но .NET (C#) использую очень часто именно для себя: различные утилиты, мой блог сделан на ASP.NET (Composite C1 CMS), различные библиотеки для работы с 1С и много другое.


Y>Но все же считаю, что большинство 1Сников, настоящих и закоренелых скажем так, вряд ли все это будет интересовать. Зачем? Все что они делают они могут сделать с помощью 1Сных средств.

Y>Редко у рядовых бойцов бывают задачи по захвату мира. И если собственного интереса к новым технологиям нет, то и использоваться не будет.

Y>ИМХО.


Решил написать статью про HTTPClient
асинхронные вызовы
http://www.forum.mista.ru/topic.php?id=763810&amp;page=1#46

С запросом на зазипованные ответы
http://www.forum.mista.ru/topic.php?id=765672#30
http://www.forum.mista.ru/topic.php?id=765672#61

Добавить использование Multipart Data

Многие просто идут к знающим C# и они им пишут.

Хочу добавить AngleSharp
Там даже плюшевая поддержка JS есть
https://github.com/AngleSharp/AngleSharp/wiki/Examples
https://github.com/AngleSharp/AngleSharp.Scripting

Вот еще примеры с Submit
https://github.com/AngleSharp/AngleSharp/issues/242
и солнце б утром не вставало, когда бы не было меня
Re: 1C и .Net
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.03.16 12:09
Оценка:
Здравствуйте, Serginio1, Вы писали:

Добавил статьи
.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.

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

Но вот наткнулся на проблему. Есть две функции


public object[] МассивИзЭнумератора(object Счетчик, object тип)
        {
            var cur = (IEnumerable)AutoWrap.ПолучитьРеальныйОбъект(Счетчик);

            var list = new List<object>();
            Type type =(Type) AutoWrap.ПолучитьРеальныйОбъект(тип);


            ДанныеДляТипа данныеДляТипа = ДанныеДляТипа.ПолучитьДанныеДляТипа(type);
            

            

            foreach (var str in cur)
            {

                
                if ((str == null) || !type.IsAssignableFrom(str.GetType()))
                {
                    list.Add(null);
                    continue;
                }

               
                var res = new AutoWrap(str, type);
                ДанныеДляТипа.ПрописатьПоля(res, данныеДляТипа);
                list.Add(res);
            }
            return list.ToArray();
        }

        public object[] МассивИзЭнумератора2(object Счетчик)
        {
            var cur = (IEnumerable)AutoWrap.ПолучитьРеальныйОбъект(Счетчик);

            var list = new List<object>();
          
            foreach (var str in cur)
            {
            
                list.Add(AutoWrap.ОбернутьОбъект(str));
            }
            return list.ToArray();
        }



Которые не тормозят в коде C# но 2 ой жутко тормозит при выдаче ссылок в 1С.
Возвращаемый объект такой.


public class AutoWrap : IReflect
    {
        protected internal object O = null;
        protected internal Type T = null;
 ...


Так вот в AngleSharp возвращаются интерфейсы, а вот объекты реализующих их не публичные.
Если же указать возвращаемый тип публичный нтерфейс то тормозов нет.

И еще прошу простить, но как мне сделать замер производительности, аналогично 1С
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.