Вход | Регистрация
    1  2  3  4   

Динамическая компиляция для использования .Net событий в 1С

Динамическая компиляция для использования .Net событий в 1С
Я
   Serginio1
 
12.11.15 - 15:15
Выложил статью .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия

http://catalog.mista.ru/public/417830/

Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия, а так же генерация модулей на C# и 1С для подключения к событиям. Использование DynamicMethod и ILGenerator. Представлены примеры на использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать сборки .Net только на языке 1С.


Эта статья является дополнением разработки Использование сборок .NET в 1С 7.x b 8.x находящейся здесь http://catalog.mista.ru/public/238584/

v8: v8: Использование сборок .NET в 1С 7.x и 8.x
   Гёдза
 
201 - 20.11.15 - 16:56
(199) Эхххх, менеджера тебе толкового не хватает
   H A D G E H O G s
 
202 - 20.11.15 - 17:02
(201) Даже мне становится страшно, когда я открываю (199) :-)
   Serginio1
 
203 - 20.11.15 - 17:11
(202) Так давай я сделаю с вашей помощью так, что бы это было интересно.
(198) Вот готовые решения на SignalR2 http://metanit.com/sharp/mvc5/16.1.php

Кстати сейчас уже SignalR3

http://habrahabr.ru/company/luxoft/blog/253349/
   Serginio1
 
204 - 20.11.15 - 17:12
(200) Я это понимаю. Поэтому и прошу совета
   Гёдза
 
205 - 20.11.15 - 17:15
(204) п.1 Выбери себе задачу, которую бы ты хотел решить (из тех что предлагал или свою но подобную)
   Serginio1
 
206 - 20.11.15 - 17:19
Кстати а что непонятно в
врап=новый COMОбъект("NetObjectToIDispatch45");

            smtp = "smtp.yandex.ru";
            login = "XXXXX@yandex.ru";
            password = "XXXXXXX";
            Кому = "XXXXXXX@YYYYYYYY.ru";
            Port=25;

            mail = врап.СоздатьОбъект("System.Net.Mail.SmtpClient",smtp, Port);

            mail.EnableSsl = true;
            mail.UseDefaultCredentials = false;
            mail.Credentials = врап.СоздатьОбъект("System.Net.NetworkCredential",login, Password);
 
            mail.DeliveryMethod = Врап.ПолучитьТип("System.Net.Mail.SmtpDeliveryMethod").Network;

            Message = врап.СоздатьОбъект("System.Net.Mail.MailMessage");
            MailAddressType= Врап.ПолучитьТип("System.Net.Mail.MailAddress");
            Message.From = врап.СоздатьОбъект(MailAddressType,login);
            Message.To.Add(врап.СоздатьОбъект(MailAddressType,Кому));
            Message.Subject = "Тема Тест отправки почты SSL";
            Message.IsBodyHtml = true;
            Message.Body = "Тело Тест отправки почты SSL";

            mail.Send(Message)//отправка


            Message.Dispose();
            mail.Dispose();
   Serginio1
 
207 - 20.11.15 - 17:25
(205) Вот пример из недавнего
Нужно интегрировать turbosms в 1 с 7.7

Ну не понимают 1С вэб клиент soap:Header WS- протоколы. Решение элементарное, но ..
   Garykom
 
208 - 20.11.15 - 17:29
(206) ну первое замечание, вот пример моего кода на C# ))

public void ДобавитьУсловияКолонки(List<string> Условия, КолонкаТаблицыЗначений Колонка)
        {
            ДобавитьУсловие(Условия, Перечисления.ТипыУсловия.НомерРавен, new List<Object> { Колонка.Индекс() });

            foreach (СтрокаТаблицыЗначений строка in Колонка.Таблица)
            {
                ЯчейкаТаблицы ячейка = строка[Колонка];
                ДобавитьУсловие(Условия, Перечисления.ТипыУсловия.ЕстьЯчейкаСТекстом, new List<Object> { ячейка.Значение });
                ДобавитьУсловие(Условия, Перечисления.ТипыУсловия.ЯчейкаНомерСодержитТекст, new List<Object> { Колонка.Индекс(), ячейка.Значение });
            }
        }
   Garykom
 
209 - 20.11.15 - 17:30
(208) + не хочется обижать простых 1С-ников, но в массе английский плохо

вот если кроме 1С знают еще что то скорее всего технический английский есть какого то уровня

но все равно писать по максимуму на русском, хотя бы имена переменных
   Garykom
 
210 - 20.11.15 - 17:33
(206) далее у тебя код "для себя", а не "для пользователя" - программиста (в т.ч. начинающего)
ко многим строчкам просто нужны комментарии
например
mail.EnableSsl = true;// включаем использование шифрования

mail.UseDefaultCredentials = false;// не дефолтное

mail.Credentials = врап.СоздатьОбъект("System.Net.NetworkCredential",login, Password);// хз зачем но нужно для авторизации
   Гёдза
 
211 - 20.11.15 - 17:37
(207) по 77 уже никому не интересны задачи
   Гёдза
 
212 - 20.11.15 - 17:38
А почту можно и типовыми методами отсылать.
Нужна задача, которая не решается типовыми способами
   Garykom
 
213 - 20.11.15 - 17:38
(211) сча как адепты 7.7 набегут... запинают ведь
   Garykom
 
214 - 20.11.15 - 17:40
(212) обычное создание бэкапов по расписанию (управляемому) с управляемым выгоном всех из базы и убиванием зависших

причем универсальное неважно 1С 7.7 какая версия файловая или нет или 8.X
   Serginio1
 
215 - 20.11.15 - 17:40
(208) Так я тоже использую в своих классах русский. Просто стандартные классы из GAC да и другие решения коечно есть и на китайском, но в большинстве случаев на английском.
Ну в общем то согласен. Только этот код можно найти в
https://msdn.microsoft.com/ru-ru/library/system.net.mail.smtpclient(v=vs.110).aspx

Согласен. Вот я и хочу на простых примерах объяснить и показать как самим просто использовать классы Net
(211) Там проблема не в 7.7 Это и 8.3 не понимает там данные в  soap:Header
   Serginio1
 
216 - 20.11.15 - 17:41
(214) Это опять из области SignaR. Причем подписываться и получать сообщения по HTTP
   Garykom
 
217 - 20.11.15 - 17:42
(215) ага только заметь сколько комментов по ссылке
   Serginio1
 
218 - 20.11.15 - 17:44
(217) Согласен.
   Serginio1
 
219 - 20.11.15 - 18:01
218 Просто для меня из названий методов и присвоений все понятно. Но там даже нужно описать методы
   Serginio1
 
220 - 20.11.15 - 18:01
Так понятней?
// Создаем враппер для нетовских классов

врап=новый COMОбъект("NetObjectToIDispatch45");

            smtp = "smtp.yandex.ru";
            login = "XXXXX@yandex.ru";
            password = "XXXXXXX";
            Кому = "XXXXXXX@YYYYYYYY.ru";
            Port=25;
// Враппер позволяет создавать объект класса по его полному имени.

// Параметры конструктора передаются после названия класса
// По аналогии с 1с Новый("Структура")


            mail = врап.СоздатьОбъект("System.Net.Mail.SmtpClient",smtp, Port);
// Теперь нам доступны свойства,поля и методы объекта


            mail.EnableSsl = true//Указывает, использует ли SmtpClient протокол SSL для шифрования подключения.


            mail.UseDefaultCredentials = false//Возвращает или задает значение Boolean, которое управляет отправкой учетных данных DefaultCredentials вместе с запросами.

/
/Инициализирует новый экземпляр класса NetworkCredential с заданными значениями пароля и имени пользователя.

            mail.Credentials = врап.СоздатьОбъект("System.Net.NetworkCredential",login, Password)//Возвращает или задает учетные данные, используемые для проверки подлинности отправителя.


//перечисление SmtpDeliveryMethod Задает способ доставки сообщений электронной почты.

            mail.DeliveryMethod = Врап.ПолучитьТип("System.Net.Mail.SmtpDeliveryMethod").Network;

//System.Net.Mail.MailMessage Представляет сообщение электронной почты

            Message = врап.СоздатьОбъект("System.Net.Mail.MailMessage");
// Для повторного использования получим тип System.Net.Mail.MailAddress который Представляет адрес отправителя или получателя электронной почты.

            MailAddressType= Врап.ПолучитьТип("System.Net.Mail.MailAddress");
            Message.From = врап.СоздатьОбъект(MailAddressType,login);
            Message.To.Add(врап.СоздатьОбъект(MailAddressType,Кому));
            Message.Subject = "Тема Тест отправки почты SSL";// Тема сообщения

            Message.IsBodyHtml = true;//Получает или задает значение, показывающее, имеет ли основная часть почтового сообщения формат HTML


            Message.Body = "Тело Тест отправки почты SSL";// Тело сообщения


            mail.Send(Message//отправка



            Message.Dispose();// Уничточим ресурсы связанные с Message.

            mail.Dispose();// Уничточим ресурсы связанные с SmtpClient
   Garykom
 
221 - 20.11.15 - 18:05
(220) намного понятнее ))
т.е. в статьях кода нужно минимум, больше интересного текста ))

ЗЫ а весь сложный код внизу под катом

ЗЗЫ и без поллитры в нем не разобраться

ЗЗЗЫ или без помочи автора
   Serginio1
 
222 - 20.11.15 - 18:15
(221) Это я понял. Какие примеры актуальны кроме
System.Threading.Thread.Sleep
   Garykom
 
223 - 20.11.15 - 18:20
(222)+ типовые которые средствами 1С плохо решаются и которые часто на форуме возникают
т.е. просто сканить форум на идеи/пожелания
   Serginio1
 
224 - 20.11.15 - 18:29
(223) Буду искать и сюда выкладывать
   oleg_km
 
225 - 20.11.15 - 19:10
(221) Странно, я с минимальной помощью автора разобрался в основных возможностях его библиотеки. Может потому что никогда не зацикливался только на оном 1Се?
   Serginio1
 
226 - 20.11.15 - 19:25
(225) У тебя было желание с этим разобраться и самое главное нужные знания.
Но вот я задумал как то вывести это в массы. На самом то деле код получаемый на 1С мало отличается от C#.
   Garykom
 
227 - 20.11.15 - 19:57
(225) не будем меряться, но как раз окромя 1С еще много других языков "неплохо" знаю, и еще кучу плохо знаю (типа питон и c++ с mfc)

тут в самом принципе дело понятности кода и метода его подачи в массы ))
   Serginio1
 
228 - 21.11.15 - 08:39
Может народ заинтересует Application.DoEvents 

Обрабатывает все сообщения Windows, которые в данный момент находятся в очереди сообщений.
 Для обновления данных в циклах?

https://msdn.microsoft.com/ru-ru/library/system.windows.forms.application.doevents(v=vs.110).aspx
   Serginio1
 
229 - 21.11.15 - 11:38
Можно показать обработку изображений
http://www.argc-argv.com/1_2011/article01.pdf
   Serginio1
 
230 - 21.11.15 - 12:09
Еще в 1С нет шифрования HMAC
http://billatnapier.com/security01.aspx
https://msdn.microsoft.com/ru-ru/library/system.security.cryptography.hmac(v=vs.110).aspx

Функция ВычислитьHMAC(key,message)
    врап=новый COMОбъект("NetObjectToIDispatch45");

encoding=Врап.ПолучитьТип("System.Text.Encoding").ASCII; 
 keyByte = encoding.GetBytes(key); 

hmacmd5 = Врап.СоздатьОбъект("System.Security.Cryptography.HMACMD5",keyByte); 
hmacsha1 = Врап.СоздатьОбъект("System.Security.Cryptography.HMACSHA1",keyByte); 

messageBytes = encoding.GetBytes(message); 
hashmessage = hmacmd5.ComputeHash(messageBytes); 
hashmessage2 = hmacsha1.ComputeHash(messageBytes); 
BitConverter=Врап.ПолучитьТип("System.BitConverter");
Strhashmessage=СтрЗаменить(BitConverter.ToString(hashmessage),"-","");
Strhashmessage2=СтрЗаменить(BitConverter.ToString(hashmessage2),"-","");

Сообщить(Strhashmessage);
Сообщить(Strhashmessage2);
    

КонецФункции// ВычислитьHMAC()

 
Процедура HMACНажатие(Элемент)
    // Вставить содержимое обработчика.

    ВычислитьHMAC("hello","testing123")

КонецПроцедуры
 
 
   Garykom
 
231 - 21.11.15 - 12:10
(229) угу авторизацию по фейсу из вебкамеры вместо ввода пароля очень по гиковски

ЗЫ только чтобы улыбку распознавало или еще какое действие (по требованию системы) а то фоткой статичной это обойдут...
   oleg_km
 
232 - 21.11.15 - 12:11
(229) Обработка изображений требует ActiveX в котором будет отображаться изображение, и заодно будут события мыши. В принципе все это есть в проекте Elisy, но даже с его продвижением это маловостребовано.
   Serginio1
 
233 - 21.11.15 - 12:22
(232) Необязательно. Суть в сохранении в определенном формате например. Монохром.
   oleg_km
 
234 - 21.11.15 - 12:25
(233) А просто обработка. Это да, повороты изменение разрешения. Да все это можно, согласен.
   Garykom
 
235 - 21.11.15 - 12:40
(234) можно, только зачем?
практическое то применение какое? в учетной системе?
   Serginio1
 
236 - 21.11.15 - 12:45
(235) Например для хранения изображения товара. Выбрал картинку в любом формате, а в базу сохранил в jpeg.
Смысл собрать простые но нужные примеры.
   Serginio1
 
237 - 21.11.15 - 13:27
Кстати смотрю я на всякие вацапы, Skype а на самом деле легко сделать чат, рассылка сообщений 1С клиентам на основе SignalR http://metanit.com/sharp/mvc5/16.1.php
При этом можно сделать клиента на HTML с JS библиотекой, можно клиента на C# в том числе и для Android
   Serginio1
 
238 - 21.11.15 - 13:37
Просто делал Вацап для серверного варианта. ДСделал консольное приложение которое запускалось на компьютере 1С сервера и обмен из 1С к консольному приложению через пайпы, а из консоли к 1С через wеб сервер.
А без вацапа можно поднядь вэб сервис на Asp.Net и через него рассылать и получать сообщения
   oleg_km
 
239 - 21.11.15 - 13:45
(235) Мы храним изображения договоров, некоторых документов. Чтобы упорядочить объем данных автоматом приводим их к нужной цветности и разрешению. Да у меня уже мест в конфе, где используется .NET столько, что только перечисления хватит на экран. У меня уже пользователи взвоют, если я захочу отказаться от .NET
   Garykom
 
240 - 21.11.15 - 14:11
(239) у нас сканер автоматом приводит ))
но насчет что много где можно применить это не спорю
   Serginio1
 
241 - 21.11.15 - 14:27
   Serginio1
 
242 - 21.11.15 - 14:29
   Serginio1
 
243 - 21.11.15 - 14:42
   Serginio1
 
244 - 21.11.15 - 14:50
Вот пример использования xamarin в Visual Studio 2015

http://studyxnet.com.br/xamarin-forms/xamarin-e-signalr-chat-cross-plataform-parte-2/
   Serginio1
 
245 - 21.11.15 - 15:45
(232) Кстати необязательно использовать ActiveX. Имея обертку над событиями мы можем использовать любую нетовскую форму. Кстати здесь http://catalog.mista.ru/public/238584/ есть пример использования формы.

public string СоздатьОкно() {
    //    m_1cApp.AppDispatch.Сообщить("Привет из ВК");

    // не работает для упрощения работы создань динамический объект ДинамикГК

    // выполняющий аналогичную фунцию

    
            IExtWndsSupport n;
            ГК.Сообщить("Привет из ВК", ГК.СтатусСообщения.Важное);
            n = (IExtWndsSupport)Object1C;
            IntPtr hwnd;
             n.GetAppMainFrame(out hwnd);

    // Создаем форму, устанавливаем нативные хэндлы и устанвливаем окно 1С владельцем нетовского окна

            var form = new Form1();
            form.CreateControl();
            SetOwner(form.Handle.ToInt32(), hwnd.ToInt32());
            form.EventTo1C = Object1C as IAsyncEvent;
           
          form.Show();
            
            return "Методы ВК выполнены!";
        }
   oleg_km
 
246 - 21.11.15 - 15:58
(245) Ну мне все-таки нужно чтобы это была не просто форма, а контрол 1С с привязками, положенный на форму 1С. Все это эмулировать запарно. Проще написать один раз контрол и зарегистрировать его как ActiveX
   oleg_km
 
247 - 21.11.15 - 16:01
(240) В одних случаях одна настройка, в других другая. А потом есть файлы полученные по эл. почте. Они тоже автоматом приводятся к нужному формату при загрузке в соответствующие документы.

Дак а работа с КОМ-портом. У меня и штрих-кодирование работает на .NET и обмен с GSM-модемом для получения и отправки СМС. И не парят проблемы с 1С-ными компонентами.
   Gepard
 
248 - 21.11.15 - 17:43
(24)

>>Проблема и достоинства .Net только в одном. Это JIT компиляция в ран тайме, ну и отсутствие инлайнинга.

вообще-то онлайн компиляция не обязательна. Можно после установки скомпилировать и все.
   Gepard
 
249 - 21.11.15 - 17:48
(185) все что нужно для 1С - можно сделать на 1С или взять готовую компоненту.


Например:
Проще взять проверенную компоненту для чтения ШК, чем использовать это, а потом вылавливать баги.

К тому же помимо написания чего-то, это что-то надо еще и поддерживать. И тут сразу встает зарплатный вопрос: нужно искать не просто 1С-ника, а еще и знающего C#. При этом обычно и обычного толкового 1С-ника найти трудно.
   oleg_km
 
250 - 21.11.15 - 18:32
(249) У вас несколько пиететное отношение к 1С. То что у 1С миллионы тестеров, к сожалению, не приводит к тому что ее ПО становится качественнее. Чаще приходится сталкиваться с тем, что пользователи 1С мучаются, но жрут кактус. По поводу ШК: сначала мучился с штатной обработкой, потом с МС ActiveX, постоянно что-то отваливалось, нужно было перезапускать ПК. Сейчас уже два года пользуюсь ActiveX, написанном на дотнете и вообще проблем не знаю. Попутно освоил работу с GSM-модемом. А штатный есть объект по работе с модемом?
   oleg_km
 
251 - 21.11.15 - 18:33
И тут сразу встает зарплатный вопрос: нужно искать не просто 1С-ника, а еще и знающего C#. При этом обычно и обычного толкового 1С-ника найти трудно.

А как же миф, 1Сники зарабатывают больше чем шарписты и явисты вместе взятые?
   Garykom
 
252 - 21.11.15 - 18:41
(251) просто их больше, 1С-ников
на них спрос у нас больше поэтому и зарабатывают

но по C# скажем у нас в городе всего одна вакансия и знать там нужно побольше чем рядовому 1С-нику (к примеру я с трудом прохожу по знаниям)
а зп сравнимая с рядовым (если по минимуму, а максимум вряд ли сразу дадут или от проектов будет зависеть)
http://29.ru/job/vacancy/1499434.html
   Serginio1
 
253 - 21.11.15 - 22:27
(249) Поверь SerialPort проверенный класс аж до дыр.
Сейчас C# изучают везде. Просто непонятно откуда берут 1С ников. Знать только 1 язык очень скучно.
   Garykom
 
254 - 21.11.15 - 22:35
(253) сейчас английский тоже "изучают везде", как много ладно понимать/говорить, но хотя бы читать умеет?
   Garykom
 
255 - 21.11.15 - 22:37
(254)+ т.е. уровень этого изучения C# в массе смешной
а 1С на реальных задачках (перенести/поправить данные) и(или) отчетах натаскиваются за полгода/год
   Garykom
 
256 - 21.11.15 - 22:38
(255)+ ну или сразу на сертификаты целенаправленно готовятся, это тоже неплохо
   oleg_km
 
257 - 21.11.15 - 22:49
Тебя то как парят проблемы переемников? Станешь незаменимым
   Serginio1
 
258 - 21.11.15 - 22:55
(255) И смешно, что постоянно ищут компоненту чтения ШК через COM порт.
Смотрим 156 и ничего такого сложного не видим.
   MM
 
259 - 30.11.15 - 09:34
А можно как-нибудь пройтись по коллекции без применения метода ПолучитьSafeArrayИзЭнумератора?
   Serginio1
 
260 - 30.11.15 - 10:41
(259)
Случайно изменил в AssemblyInfo.cs [assembly: ComVisible(true)] и 
Для каждого Цикл перестал работать 
Который работает через EnumVariantImpl : IEnumVARIANT 

/ Параметр ComVisible со значением FALSE делает типы в сборке невидимыми 
// для COM-компонентов. Если требуется обратиться к типу в этой сборке через 

// COM, задайте атрибуту ComVisible значение TRUE для этого типа. 
[assembly: ComVisible(false)]
 
 
   Serginio1
 
261 - 30.11.15 - 10:59
260+ В новой версии все исправлено. Дай адрес куда выслать
   MM
 
262 - 03.12.15 - 10:39
Подумал на предложенным вами способом динамической компиляции через Emit, для добавления в 1С битовой операции, он показался мне слишком сложным. Разве не удобнее использовать конструкцию вроде:

строкаКласса = "namespace MMfor1C { public class BinOp { public static int XOR(int x, int y) {return x ^ y; } } }";
    
    compiler = НетО.СоздатьОбъект("Microsoft.CSharp.CSharpCodeProvider");
    
    parameters = НетО.СоздатьОбъект("System.CodeDom.Compiler.CompilerParameters");
    parameters.ReferencedAssemblies.Add("System.dll");
    parameters.ReferencedAssemblies.Add("System.Core.dll");
    parameters.ReferencedAssemblies.Add("Microsoft.CSharp.dll");
    parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
    
    parameters.GenerateInMemory = true;
    parameters.GenerateExecutable = false;
    parameters.IncludeDebugInformation = true;
    
    res = compiler.CompileAssemblyFromSource(parameters, строкаКласса);

    БинОп =    НетО.ПолучитьТип("MMfor1C.BinOp");
    //Сообщить(БинОп.XOR(3, 1));

    
    NotifyFilters=НетО.ПолучитьТип("System.IO.NotifyFilters");
    // нето.ПолучитьРеальныйОбъект(NotifyFilters.LastWrite)

    Сообщить(БинОп.XOR(NotifyFilters.LastAccess,БинОп.XOR(NotifyFilters.LastWrite,БинОп.XOR(NotifyFilters.FileName,NotifyFilters.DirectoryName))) );

Которая гораздо более гибкая и компактная.
   Serginio1
 
263 - 03.12.15 - 16:48
(262) Да только этот класс в отличие от DynamicMethod останется в памяти, а DynamicMethod  подвергается сборке.

Так полностью можно исключить внешние сборки. Мало того сейчас на подходе
релиз scripting api.

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

ScriptState state = CSharpScript.Run("NotifyFilters OR(NotifyFilters x, NotifyFilters y) { return x | y; }");


https://github.com/dotnet/roslyn/tree/master/src/Scripting/Core
https://joshvarty.wordpress.com/2015/10/15/learn-roslyn-now-part-14-intro-to-the-scripting-api/
http://daveaglick.com/posts/compiler-platform-scripting

Кстати вышло апдейт для VS 2015
http://rsdn.ru/forum/dotnet/6263620.flat
   Serginio1
 
264 - 03.12.15 - 16:55
(263) Я просто показал разные подходы. А какой удобнее тот и выбирай. Но с выходом scripting api будет самый удобный для использования динамических статических методов, в который можно засовывать динамики и использовать объекты 1С и использовать их как делегаты
   Serginio1
 
265 - 03.12.15 - 16:59
Кстати а оно уже вышло
The Scripting API is finally here! After being removed from Roslyn’s 1.0 release it’s now available (for C#) in pre-release format on NuGet. To install to your project just run:

https://www.nuget.org/packages/Microsoft.CodeAnalysis.Scripting/
Install-Package Microsoft.CodeAnalysis.Scripting -Pre
   Serginio1
 
266 - 03.12.15 - 18:10
   Serginio1
 
267 - 03.12.15 - 18:20
   Masquerade
 
268 - 03.12.15 - 23:17
(267)

Зачем ты так усердно тащишь всё это в 1С?

1С-никам это не нужно.

Если будет нужно - уйдут туда, куда нужно.

Зачем скрещивать телегу с ракетой?
   Serginio1
 
269 - 04.12.15 - 11:01
(268) Я сам 1С ник со стажем более 20 лет (учитывая 5 и 6)
Всегда была проблема расширения 1С за счет Com объектов, ВК.
Но проблема в том, что это надо регистрировать. Кроме того
обычно это обертки над существующими классами. И чем сложнее класс тем сложнее обертка.
С появлением .Net 4.5 (хотя и в 2.0 можно делать, но 4.5 мощнее в частности поддержка params) использовать классы Net стало очень просто и удобно. Нужно иметь только один COM класс и через него использовать любые классы Net, в том числе и их события. Это просто значительно удобнее.
Что касается Scripting API, то это аналог 1С ного выполнить и вычислить. Тебе не ну дополнительные сборки, весь скомпилированный код поддается сборке мусора.
   Serginio1
 
270 - 04.12.15 - 11:03
(260) Да таких как я мало. Но мы в тельняшках! Кому то мои исследования помогли. И я рад этому.
   Masquerade
 
271 - 04.12.15 - 12:06
(269)

Нафига в 1С "использовать классы Net"??

Используй их в .NET!
   oleg_km
 
272 - 04.12.15 - 12:13
(271) Мальчик, не мешай, проходи мимо. Тебе не надо - и прекрасно. А мне уже без них вообще не обойтись. Кто-то и без 1С обходится и сидит как ты недоумевает: нафига им 1С, прекрасно в ехеле можно таблички создавать
   Serginio1
 
273 - 04.12.15 - 12:29
(271) Для связи 1С с внешним миром. Ты плохо прочитал 269.
Тебе не нужно писать COM обертки, ВК итд. Регистрировать их, писать кучу лишнего кода.
(272) Ничего. Пусть тему поддержит.
   Serginio1
 
274 - 04.12.15 - 14:06
Кстати можно выполнять скрипты на IronPython 
http://metanit.com/sharp/tutorial/9.3.php
   MM
 
275 - 04.12.15 - 14:10
(274) это добро отдельно ставить надо?
Кстати в чистой вин7 сп1 нету NET.4 (
   Serginio1
 
276 - 04.12.15 - 14:17
(275) Ну DDL то нужна.
Сейчас уже .Net 4.6.1
https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx
   Serginio1
 
277 - 04.12.15 - 14:20
   MM
 
278 - 04.12.15 - 14:29
Чего в этой компоненте не хватает, так это полноценного инсталятора, который сам запросит элевацию, зарегистрирует 32 и 64 COM и выкачает и поставит подходящий НЕТ, если его нет.
Не плохо бы msi, для доменной установки.
   Masquerade
 
279 - 04.12.15 - 14:42
(272)

-- А мне уже без них вообще не обойтись.

Это от небольшого ума.
   Музон Хиггса
 
280 - 04.12.15 - 14:43
(274) Если кому-то захочется, тогда уж лучше так: https://github.com/mrprint/OnePy
   kyvv
 
281 - 04.12.15 - 14:45
(279)На Мисте выяснили, что его вообще нет.
   kyvv
 
282 - 04.12.15 - 14:49
(278) Согласен. Должна быть одна большая кнопка.
   Serginio1
 
283 - 04.12.15 - 14:51
(278) Надо будет сделать на досуге. https://msdn.microsoft.com/ru-ru/library/ms173084(v=vs.90).aspx

Но посмотри на количество скачавших.

(280) А чем лучше?
(279) А как использовать, то чего в 1С нет?
   kyvv
 
284 - 04.12.15 - 14:54
Программисты что-то подобное давно используют, для остальных - неподъемный груз.
   MM
 
285 - 04.12.15 - 14:56
(282) после нажатия на эту кнопку, остальное уже от разработчика конфигурации зависеть будет. Эта компонента не для пользователя.
   oleg_km
 
286 - 04.12.15 - 14:56
(283)

>> (279) А как использовать, то чего в 1С нет?

А применить к данному случаю Евангелие от Матфея гл.7 стих 6. Он все равно ничего не поймет, т.к. мнит себя большим умом
   Музон Хиггса
 
287 - 04.12.15 - 14:57
(283) > А чем лучше?
Более тесной интеграцией.
   Serginio1
 
288 - 04.12.15 - 15:03
(287) Там даже ReadMe нет. Посмотрел внутренности обертка через ВК.
А используя NetObjectToIDispatch45 и ExpandoObject делай, что угодно.
Тем более, что Scripting API  помощнее будет (266)
   Музон Хиггса
 
289 - 04.12.15 - 15:06
(288) Там и Python кода нет (публиковалось одноразово для потенциального работодателя). Затачивалось под совместимость с XP и 7.7. Потому и так.
   Serginio1
 
290 - 04.12.15 - 15:21
(289) Я понял, что библиотека аналогичная Elisy.NetBridge4 только для выполнения кода питона.
NetObjectToIDispatch20 тоже работает с 2.0 и 7.7. Только я на неё честно говоря наплевал.

Так напиши хотя бы ReadME думаю многих заинтересует кто знает питоновские библиотеки. Опубликуй статью на Инфостарте.
   kyvv
 
291 - 04.12.15 - 15:30
«Peter Gribanov, Technology evangelist in 1C». Статью на хабре здесь уже приводили (http://habrahabr.ru/company/1c/blog/267321/). В этой статье он сравнивает ЯР1С с JavaScript. Я вот и подумал, а не хочет ли 1С заменить свой язык на js? Или на Dart. V8 в 1С и у google. А если еще Nodejs присобачить.
   Masquerade
 
292 - 04.12.15 - 15:34
(283)
-- А как использовать, то чего в 1С нет?

Ты не поверишь, но лично я поступаю так:

Беру другой инструмент/платформу и решаю задачу на ней.
   Masquerade
 
293 - 04.12.15 - 15:35
+

Зачем тащить в среду противоестественные для неё штуки?

А потом решать связанные с этим проблемы, которые (поверьте) лежат даже не области кода.
   Serginio1
 
294 - 04.12.15 - 15:35
(291) Лучше TypeScript. Но есть куча трансляторов из манагед кода (.Net,Java) кода в JS для Вэб клиента.
(292) Ну и чем это лучше чем из 1С использовать классы .Net.
Ты 1С интегрируешь через COM?
   kyvv
 
295 - 04.12.15 - 15:37
Кстати, ЯR1C for developer.
   Serginio1
 
296 - 04.12.15 - 15:37
(293) А чем твое то решение лучше. Твой COM сервер тоже чуждая среда и в ней кроме автора мало кто подправит.
   Serginio1
 
297 - 04.12.15 - 15:41
(295) И, что это за зверь?
   oleg_km
 
298 - 04.12.15 - 15:41
(293) В чем противоествественность? Поддержка КОМ пока заявлена в 1С, сама 1С даже в типовых не гнушается ее использовать. Вот при взаимодействии с .NET еще ни разу не сталкивался, что что-то не работает. А вот с "нативными" объектами регулярно: то ИнтернетПочта сломается, то HTTPСоединение не фурычит.
   kyvv
 
299 - 04.12.15 - 15:45
Встроенный язык 1с  с английским синтаксисом для индусов.
   MM
 
300 - 04.12.15 - 16:10
(298) Значит с помощью НЕТа почту и инет проверяете?
Или ещё для чего на практике используете?
  1  2  3  4   

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.