Вход | Регистрация
    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
   aleks_default
 
1 - 12.11.15 - 15:29
За такие вещи всегда уважуха.
   Кирпич
 
2 - 12.11.15 - 15:37
Я конечно понимаю будущее за NET, но как то мне не хочется  вместо 5 строчек кода на Delphi городить всю эту лабудень...
Но NET апокалипсис неминуем. С++ и Delphi выкинут на помойку, все будут писать тормоза на .NET, а однополые браки станут нормой.
   Serginio1
 
3 - 12.11.15 - 15:43
(1) Спасибо.
(2)А почему тормоза то? Net проигрывает только из-за отсутствия инлайнига лямбд. Так он на уровне того же C++ и 1С. А по сравнению с 1С так реактивный самолет. Да и суть использование сборок Net в 1С без дополнительных DLL обвязок
   mistеr
 
4 - 12.11.15 - 15:50
(2) Нифига. Все будут писать на JavaScript или его преемнике. И в 1С тоже.
Запомните этот твит.
   Кирпич
 
5 - 12.11.15 - 15:52
(3) да тормознутый он этот NET, как и Java. Слава богу компы стали помощнее последнее время, а было убожество. Ну а так то я не против такой идеи. Все равно эти NET гигабайты лежат уже на компе. Пускай работают. Ну хоть штрих код читают :(
   Мэс33
 
6 - 12.11.15 - 15:55
(5) А что не тормознуто?
   Кирпич
 
7 - 12.11.15 - 15:55
+(5) и вообще лучше бы язык 1с в .NET компилировали. Может меньше бы тормозило.
   Serginio1
 
8 - 12.11.15 - 15:56
(4) Уже и сейчас пишут, но больше используют TypeScript, а JS используется типа ассеблера.
(5) Я делал в свое время тесты на C# и Delphi Net не проигрывал, а даже выигрывал. Сейчас идет модификация Roslyn как я написал в статье Так сейчас на подходе
релиз scripting api.

А по поводу штрих кода это просто показать понятные всем компоненты. На самом деле полно классов с кучей событий
   Garikk
 
9 - 12.11.15 - 16:06
<Но NET апокалипсис неминуем. С++ и Delphi выкинут на помойку>

не выкинут

NET и Ява, это вирт.машины, их судьба уже окончательно сложилась

у Deplhi конечно незавидная судьба, из-за и так не особо большой популярности. а C/C++ будут жить вечно
   Кирпич
 
10 - 12.11.15 - 16:07
(8) ну на тестах он конечно шустрый, а как увидишь какое нибудь приложение на NET, так оно еле шевелится. Хотя наверное от рук зависит. Вот например paint.net летает, а стоит у меня тут astral-отчет - это какое то дикое тормозное некрасивое угробище.
   Serginio1
 
11 - 12.11.15 - 16:11
(10) На самом деле от версии к версии совершенствуется и JIT компилятор и GC сборка мусора. Плюс если раньше большинство библиотек были просто оболочками над нативными функциями, то сейчас это уже самостоятельные единицы
   Кирпич
 
12 - 12.11.15 - 16:19
(11) да компиляторы уже некуда совершенствовать. и так уже у всех одинаково на выходе получается. другое дело, что NET на лету компилит и чем лучше компилит, тем больше тормоза во время компиляции. Ну всё равно NET это круто, хотя мне оно нафиг не нужно. Ну а кому нужно, тем очень повезло.
   Garikk
 
13 - 12.11.15 - 16:26
(12) <уже у всех одинаково на выходе получается.>

Ну не у всех... процессоры тоже совершенствуются, архитектуры меняются. и компиляторы под них

помню была история что программа собранная интеловским компилятором работала на AMDшных процессорах быстрее чем собранная AMD-щным
   Serginio1
 
14 - 12.11.15 - 16:30
(12) Напрасно. С помощью данной компоненты можно расширять возможности 1С. Например Перекодировка текста из base64
   Serginio1
 
15 - 13.11.15 - 14:11
апну. Все таки пятница. Может кому и пригодится. А вообще 1С совцы могли встроить поддержку .NET. А то COMОбъект есть, могли бы и поддержку использования сборок .Net встроить
   oleg_km
 
16 - 13.11.15 - 16:51
(15) ДА тогда уж и JAVA до кучи
   Serginio1
 
17 - 13.11.15 - 17:01
(16) С явой тяжелее. У неё нет такой фичи как IReflect, а через неё как раз и идет преобразование Idispatch к Ireflect. Но учитывая движение .Net к кроссплатформенности Что-то кроме 1С
можно начать и с .Net. Тем более уже есть рабочий вариант
   oleg_km
 
18 - 13.11.15 - 17:13
(17) Ну если есть Invoke то можно было бы просто сделать метод Invoke и передавать первым параметром. Ну это так.
   Serginio1
 
19 - 13.11.15 - 17:24
(19) Не знаю есть ли в JAVA поддержка IDispatch http://javagu.ru/portal/dt?last=false&provider=javaguru&ArticleId=GURU_ARTICLE_81506&SecID=GURU_SECTION_80693#IDAPJOVF

Все таки разные технологии. В Нативе просто дается ссылка на некую переменную содержащая VMT и указывающая на функции заглушки корректирующю this по смещению переменной и перенаправляющая на реальный адрес функции. Еще и сборка мусора. Нужны определенные заглушки уже на уровне среды выполнения JAVA
   Serginio1
 
20 - 16.11.15 - 10:28
А вообще сейчас стало модным писать на серверной стороне
считаться язык JavaScript (который стало можно запускать на сервере при помощи рантаймов вроде Node.js или io.js) и несколько его разных фреймворков, например Meteor.

На клиенте сейчас модно angularjs и промежуточный TypeScript. Так, что сейчас 1С нужно делать правильный выбор, а то реально может появится убийца 1С.
   orefkov
 
21 - 16.11.15 - 10:36
(11)
>> если раньше большинство библиотек были просто оболочками над нативными функциями,
>> то сейчас это уже самостоятельные единицы
Всё в конечном итоге доходит до какой-либо CreateWindowW или FindFirstFileW.
Только на С++ я их сразу вызываю, без сотни посредников.
   trdm
 
22 - 16.11.15 - 10:45
Был не очень мощный комп установил какую-то версию Net, комп стал шевелиться ощутимо медленнее.
Net засирает реестр конкретно из-за чего его чтение замедляется.
С тех пор любви к этому фраймверку не питаю.
Практически все можно сделать без этого фраймверка. И софт будет шевелиться намного шустрее..
   trdm
 
23 - 16.11.15 - 10:51
(14) > Напрасно. С помощью данной компоненты можно расширять возможности 1С. Например Перекодировка текста из base64.

QByteArray text("Qt is great!");
text.toBase64();        // returns "UXQgaXMgZ3JlYXQh"


QByteArray text = QByteArray::fromBase64("UXQgaXMgZ3JlYXQh");
text.data();            // returns "Qt is great!"


Слепить из Qt-шного модуля COM-сервер раз плюнуть:
http://doc.qt.io/qt-4.8/examples-activeqt.html
   trdm
 
24 - 16.11.15 - 10:52
+(23) И по ресурсам будет менее затратно чем Net.
   Serginio1
 
25 - 16.11.15 - 10:55
(21) Ну Net это не только Win API. Кстати они развивают WPF и HTML 5
(22) Приведи примеры.
Проблема и достоинства .Net только в одном. Это JIT компиляция в ран тайме, ну и отсутствие инлайнинга.
Но все течет, все меняется
http://habrahabr.ru/company/enterra/blog/252105/

От версии к весрии и GC быстрее и JIT компиляторы более оптимальные
(23) А здесь и плевать ненадо. Используй любые сборки без переделывания кода на COM.
(24) И на каждую хотелку генерить свою COM библиотеку. А еще с поддержкой событий или внешних событий.

В моем варианте тебе нужно знать только библиотеки NET, а обертка к ним одна в том числе и к событиям.
   Serginio1
 
26 - 16.11.15 - 10:57
(23) Кстати начал использовать http://catalog.mista.ru/public/238584/ тогда, когда из 1С не смог достучаться до C# сервисов на по WS- протоколам итд. Там была развитая система классов, и описывать всех из через СОМ было муторно. Через обертку IReflect оказалось значительно проще
   trdm
 
27 - 16.11.15 - 11:03
(25) Какие тебе примеры привести, фанатик? Всю свою жизнь софт пишу. Ни разу не пришлось использовать дотнет.
Вот тебе лучший пример того, что этот твой фрайм по сути и не шибко нужен.
   Serginio1
 
28 - 16.11.15 - 11:10
(27) Примеры засирания реестра и из-за этого замедления работы всей системы.
Ну дык от фанатика то и слышу. То, что ты предпочитаешь лопату вместо экскаватора это ни о чем не говорит. Сам перешел на Net с со своего любимого Delphi именно по причине бОльшей мощи как языка так и платформы.
   orefkov
 
29 - 16.11.15 - 11:18
(25)
>> Ну Net это не только Win API. Кстати они развивают WPF и HTML 5
Вот-вот, твои слова как-раз живая иллюстрация к тому, что я напиасл.
Невозможно выполнять код на винде, и не вызывать WinAPI.
Все эти WPF, HTML5 и прочие свистелки и перделки, в конце-концов дёргают какую-нибудь CreateWindow, GetDC, DrawText и т.п., только расположены повыше. Нет другого способа обратиться к ОС, кроме вызова WinAPI.
Только количество прокладок увеличивается.
   Кирпич
 
30 - 16.11.15 - 11:27
У нет есть один большой плюс. В нем куча готовых классов с документацией. Ну C# еще красивый язык. Но это на любителя. Остальное минусы.
 
 
   Кирпич
 
31 - 16.11.15 - 11:28
+(30) сам не понял, что написал. :))
   Serginio1
 
32 - 16.11.15 - 11:41
(29) Ну почему же. Пример где Win API не нужен это куча библиотек. Начиная от System (String,StringBuilder,Convert)
итд. А что касается скорости вызова на 1С обертки над WIN API то это мелочи по сравнению с затратами вызова метода в 1С.
   Garikk
 
33 - 16.11.15 - 11:44
(32) Эти библиотеки всеголишь надстройки над WinAPI...и "ненужен" он лишь для вашего кода
   Serginio1
 
34 - 16.11.15 - 11:56
(33) То есть String это Win Api?

Да в String куча unsafe. Но он родной. В первых версиях было полно Unmanaged
   MM
 
35 - 16.11.15 - 12:00
(29) Но в АПИ есть тоже слои, например, функции начинающиеся c Nt. Разве они не могут вызываться минуя обычные функции пользовательского режима?
   Garikk
 
36 - 16.11.15 - 12:01
(34) какая разница как он называется? Всёравно для использования системных функций вызывается Winapi.

.Net это виртуальая машина которая работает поверх winapi

Буквально WinApi для .Net это как процессор для ассемблера
   Serginio1
 
37 - 16.11.15 - 12:30
(36) Выдумщик.
   Serginio1
 
38 - 16.11.15 - 12:32
37+ почитай 25. Все в итоге компилируется в натив
   trdm
 
39 - 16.11.15 - 12:40
(28) Да с фенами спорить - без толку. Обычно с кем борешся таким и становишся. Не хочу мутировать в фена мелкософта.
Предпочитаю традиционную сексуальную и программную ориентацию )))
   Serginio1
 
40 - 16.11.15 - 12:43
http://habrahabr.ru/post/196596/
(39) Во уже и ориентация в ход пошла. А чем тебе MONO не угодил. А что касается QT то по ориентации это скорее свингеры, хотя и традиционные, но тоже с прибамбахами
   Serginio1
 
41 - 16.11.15 - 12:47
(40) И 1С у тебя сплошь на линуксах, Андроидах и IOS?
И как живется?
   DmitrO
 
42 - 16.11.15 - 12:57
(39)наш человек )
Благославляю! Дети мои, боритесь за истинную, католическую, веру! Не дайте проклятым гугенотам предать христово учение!
Не позволим сборщику мусора освобождать нашу память когда ему вздумется!
   MM
 
43 - 16.11.15 - 13:41
(0) Может этот проект на GitHabе, или чём-то  похожем опубликуете?
   Serginio1
 
44 - 16.11.15 - 13:42
(39) Я программно предпочитаю быть импотентом. Нада как можно меньше заниматься сексом при программировании ()
   Serginio1
 
45 - 16.11.15 - 14:27
(43) Надо бы. Сейчас закончу с ExpandoObject и подумаю.
Просто мало кому это нужно. К моему огромному сожалению.
   Serginio1
 
46 - 17.11.15 - 11:32
На заметку

Случайно изменил в AssemblyInfo.cs [assembly: ComVisible(true)] и 
Для каждого Цикл перестал работать
Который работает через EnumVariantImpl : IEnumVARIANT

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

// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
[assembly: ComVisible(false)]
   Serginio1
 
47 - 17.11.15 - 14:40
Добавил возможность использования ExpandoObject напрямую с добавлением свойств и методов
Объект=ЗагрузкаComОбъекта.ПолучитьExpandoObject();
// Получим словарь для чтения и добавления свойств и методов

Объект2=Врап.ПолучитьИнтерфейс(Объект,"IDictionary`2");

// Установим свойсва через словарь

Объект2.set_Item("Число",5);

//Сообщить(Объект.Item("Имя"));

Сообщить(Объект2.get_Item("Имя"));
Сообщить(Объект2.get_Item("Число"));
Объект2.set_Item("Имя","Вызов Метода");
Сообщить(Объект2.get_Item("ВСтроку").DynamicInvoke());

// Теперь можно обращаться в свойствам и методам напрямую

Объект.Число=6;
Сообщить(Объект.Имя);
Сообщить(Объект.Число);
Объект.Имя="Вызов Метода";
Сообщить(Объект.ВСтроку());

// Добавим новое поле

Объект2.Add("НовоеПоле",66);

// Нужно обновить информацию о новых методах и свойствах

Объект=врап.ОбновитьДанныеОметодахИСвойствах(Объект);
//

Сообщить(Объект.НовоеПоле);
   MM
 
48 - 17.11.15 - 14:51
скачивания с публичных ресурсов пока не появилось?
(47) А что это даёт?
   trdm
 
49 - 17.11.15 - 14:58
(48) +1 Даже в 1Сv77 есть структура.
Есть смысл расширять возможность встроеных объектов 1С, для хранения информации, что-бы избавиться от лишних параметров в процедурах, но это похоже унвозможно..
   Serginio1
 
50 - 17.11.15 - 15:04
(48) Давай почту. Отправлю.
Это дает поддержку использования ExpandoObject  без извращения доступа полям через IDictionary.
По сути это структура, только с поддержкой методов.

Например я могу динамически скомпилировать 
    ДелегатИЛИ=ПолучитьМетод();
Объект2.Add("ИЛИ",ДелегатИЛИ);
Объект=врап.ОбновитьДанныеОметодахИСвойствах(Объект);

значение=Объект.ИЛИ(2,4);
   Serginio1
 
51 - 17.11.15 - 15:05
(49) Ты можешь получать данные из вне ввиде ExpandoObject
   trdm
 
52 - 17.11.15 - 16:24
(51) Не требуется.
   quest
 
53 - 17.11.15 - 16:43
(0) а примера связи 1С и F# нет? интересно было бы глянуть
   Serginio1
 
54 - 17.11.15 - 16:45
(52) Тогда в чем смысл твоих комментариев если ты не разбираешься в предмете обсуждения? Просто, что то написать?
Повтори на чистом 1С (50) раз структуры есть еще в 7.7
(53) Кстати а есть FSharpCodeProvider?
   Serginio1
 
55 - 17.11.15 - 16:50
(53) Ну ты можешь на крайний случай использовать MSIL
Функция ПолучитьМетод()
    //"System.Func`3"

    
    NotifyFilters=врап.ПолучитьТип("System.IO.NotifyFilters");
    helloArgs =врап.СоздатьМассив(врап.ПолучитьТип("System.Type"),2);
    helloArgs.SetValue(NotifyFilters,0);
    helloArgs.SetValue(NotifyFilters,1);
    // Create a dynamic method with the name "Hello", a return type

    // of Integer, and two parameters whose types are specified by

    // the array helloArgs. Create the method in the module that

    // defines the String class.

    ТипДляМодуля=Врап.ТипКакОбъект(врап.ПолучитьТип("System.String"));
    hello = врап.СоздатьОбъект("System.Reflection.Emit.DynamicMethod","OR",
    NotifyFilters,
    helloArgs,
    ТипДляМодуля.Module);
    
    
    // Get an ILGenerator and emit a body for the dynamic method,

    // using a stream size larger than the IL that will be

    // emitted.

    il = hello.GetILGenerator();
    
    
    il.DeclareLocal(NotifyFilters);// THIS ONE!

    
    iL0007Label = il.DefineLabel();
    
    OpCodes=врап.ПолучитьТип("System.Reflection.Emit.OpCodes");
    // Load the first argument, which is a string, onto the stack.

    il.Emit(OpCodes.Nop);
    il.Emit(OpCodes.Ldarg_0);
    il.Emit(OpCodes.Ldarg_1);
    // Call the overload of Console.WriteLine that prints a string.

    il.Emit(OpCodes.Or);
    il.Emit(OpCodes.Stloc_0);
    il.Emit(OpCodes.Br_S, iL0007Label);
    il.MarkLabel(iL0007Label);
    il.Emit(OpCodes.Ldloc_0);
    il.Emit(OpCodes.Ret);
    тип = врап.ПолучитьТип("System.Func`3");
    типДелегата = Врап.ТипКакОбъект(тип).MakeGenericType(NotifyFilters,NotifyFilters,NotifyFilters);
    res = hello.CreateDelegate(типДелегата);//hello.CreateDelegate();

    // Func<NotifyFilters, NotifyFilters, NotifyFilters> res = (Func<NotifyFilters, NotifyFilters, NotifyFilters>)hello.CreateDelegate(typeof(Func<NotifyFilters, NotifyFilters, NotifyFilters>)); //hello.CreateDelegate();

    
    //   return (NotifyFilters)res.OR(val1, val2);

    return res
    
КонецФункции
   Serginio1
 
56 - 17.11.15 - 16:51
Так или иначе есть классы и методы. Можно посмотреть например через ILSpy
   trdm
 
57 - 17.11.15 - 16:53
(54) Я такие темы просматриваю что-бы полезняшки выдергивать.
А не костыляшки.
   Serginio1
 
58 - 17.11.15 - 16:55
(57) Ну извини, что данная тема для тебя костыляшка.
И спасибо, что тему поддерживаешь. К сожалению моя костыляшка никому кроме тебя и не нужна.
   MM
 
59 - 18.11.15 - 10:35
Ну почему никому. То что, я её в производстве нигде не применил, не преуменьшает возможностей средств NET в 1С.
   Serginio1
 
60 - 18.11.15 - 10:41
(59) Тогда давай я её тебе вышлю
 
 
   quest
 
61 - 18.11.15 - 10:46
гляну после экзамена. может и будет что полезного из этого.
   Serginio1
 
62 - 18.11.15 - 10:55
(61) Примера связи 1С и  F# нет. Есть связь 1С и  .Net.
А в Net есть классы. У классов есть методы, свойства, поля, Интерфейсы. Ну и самое главное это Reflection, через который мы можем получить информацию о классе.
   Garykom
 
63 - 18.11.15 - 11:19
(58) просто теория мало кому интересна, нужно практическое очень полезное применение
тогда и интерес будет к теме
   Serginio1
 
64 - 18.11.15 - 11:36
(63) Так там есть конкретные примеры
Представлены примеры на использовании событий System.IO.FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.) и SerialPort (обработка сканера штрих кода подключенного к COM порту). Обертка позволяет использовать сборки .Net только на языке 1С.
   mikecool
 
65 - 18.11.15 - 11:43
(2) насчет "будущее за нет" уже предание, в которое верится с трудом ))
   Serginio1
 
66 - 18.11.15 - 11:47
(65) Ну это ты зря. Будущее конечно не за .Net, но точно с ним Что-то кроме 1С
   sapphire
 
67 - 18.11.15 - 11:50
(66) Кинь ссылку на тоже самое, только с инфостарта, ты же и там тоже отметился
   sapphire
 
68 - 18.11.15 - 11:51
(62) Эх... Когда ж одинце реализует reflection
   Garykom
 
69 - 18.11.15 - 11:54
(65) будущее будет за .net когда можно будет автоматом иметь .нет с собой всегда и везде
а не как сейчас когда вышла новая ось (стала популярной) и приехали

вообще .net это просто развитие идеи java только как то однобоко
   Garykom
 
70 - 18.11.15 - 11:56
(64) плохой примера ))
сорри но как насчет соединить с 1script ?
   Garykom
 
71 - 18.11.15 - 11:56
   Serginio1
 
72 - 18.11.15 - 12:09
(67) Ты про что?
(68) А им надо переходить либо на JS с языком типа TypeScript. Либо брать Java или NET.

Кстати по применеии Java в Net IKVM.NET
https://ru.wikipedia.org/wiki/IKVM.NET

(69) Да нет. Сейчас развивают кроссплатформенность. Смотри 66
(70) Предложи свои. Сделаю. Да ты сам можешь сделать, все что твоей душе угодно
   Serginio1
 
73 - 18.11.15 - 12:33
(70) Посмотрел. Кстати
Отличия от стандартного языка 1С:
•Не реализовано динамическое выполнение кода функциями Вычислить и Выполнить
•Не реализованы функции ДобавитьОбработчик, УдалитьОбработчик для обработки событий COM-объектов.
•Не поддерживается оператор Перейти и метки
•Добавлена нестандартная директива препроцессора #Использовать, предназначенная для подключения внешних библиотек.

В новых версиях Net будет лего выполнять скрипты
http://daveaglick.com/posts/compiler-platform-scripting

ScriptState state = CSharpScript.Run("NotifyFiltersOR(NotifyFiltersx,NotifyFiltersy) { return x |y; }");

var fn = state.CreateDelegate<Func<NotifyFilters, NotifyFilters, NotifyFilters>>("OR");

var value = fn(5);

 

 То есть использование .Net в 1С станет достаточно простым
   Garykom
 
74 - 18.11.15 - 12:49
(72) плохо все с кроссплатформенностью, многие части .net только для win к примеру есть
   Serginio1
 
75 - 18.11.15 - 13:01
(74) Для кроссплатформенности есть Net Core

https://msdn.microsoft.com/ru-ru/library/ms171868(v=vs.110).aspx
Ну и есть Xamarin
https://msdn.microsoft.com/ru-ru/library/dn878908(v=vs.110).aspx

.NET Core можно переносить на другие платформы, так как несмотря на то, что она является подмножеством полной версии .NET Framework, она предоставляет ключевые возможности для реализации функций приложений, необходимых для повторного использования этого кода независимо от целевой платформы.Раньше в разных версиях .NET для разных платформ отсутствовали общие функции для ключевых задач, таких как чтение локальных файлов.Доступные целевые платформы Майкрософт для .NET Core включают традиционную настольную систему Windows, а также устройства и телефоны под управлением ОС Windows.При использовании сторонних средств, таких как Xamarin, требуется возможность переноса .NET Core на устройства IOS и Android.Кроме того, среда .NET Core будет скоро доступна для операционных систем Mac и Linux, позволяющих запускать веб-приложения на этих системах.
   Garykom
 
76 - 18.11.15 - 13:11
(75) вот и говорю, java, версия 2
   Garykom
 
77 - 18.11.15 - 13:11
(76)+ на те же самые грабли скоро наступят
   Garykom
 
78 - 18.11.15 - 13:13
(77) это когда разных фреймоворков, причем большая часть уже того или не работает или между собой несовместимы

больше чем программистов их пытающихся использовать
   Garykom
 
79 - 18.11.15 - 13:20
Чем хороша 1С, если "сторонний фреймворк" заслуживает внимания, то его сами реализуют и включают в платформу

примеров много, ftp zip xml json etc
   Garykom
 
80 - 18.11.15 - 13:20
(79)+ получается некий стандарт от 1С

а вот где эти "стандартные подсистемы" от MS ?
   Serginio1
 
81 - 18.11.15 - 13:36
(79) А еще куча вещей которые не поддерживают. Однако через Net можно расширить функционал до небес.
(80) Куча библиотек до которых 1С и мечтать невозможно.
   Serginio1
 
82 - 18.11.15 - 13:43
(78) Ну тут так. Хочешь кроссплатформенность используй  .NET Core, хочешь больше возможностей, но под Windows бери .NET Framework 4.6
   Garykom
 
83 - 18.11.15 - 13:51
(81) насчет кучи библиотек

хочу прочитать xls или dbf, но "бесплатно" какую взять?
скажем у меня студенческая поделка :)
   Serginio1
 
84 - 18.11.15 - 14:00
   Garykom
 
85 - 18.11.15 - 14:02
(84) :) веселый запрос

https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=c%23%20xls%20reader

а теперь попробовать найти среди них те которые кириллицу не портят ))
   Serginio1
 
86 - 18.11.15 - 14:04
(85) Тебе надо ты и ищи. В чем проблема то с языками.
Первый попавшийся http://www.codeproject.com/Articles/16210/Excel-Reader
понимает иероглифы
   Serginio1
 
87 - 18.11.15 - 14:07
(85) На самом деле всегда можно найти решение на любые случаи жизни. На том же http://stackoverflow.com/
Нет проблем.
   Garykom
 
88 - 18.11.15 - 14:08
(86) так не про "Тебе надо ты и ищи"

а про то что чтобы писать на C# коммерческий софт...
сначала разорись на VS или Xamarin...
потом найди то что тебе надо, заплати за это

ЗЫ 1С:Предприятие 8.2. Версия для обучения программированию    руб    600
   Serginio1
 
89 - 18.11.15 - 14:09
   qwerty2469
 
90 - 18.11.15 - 14:09
(88) net версия для обучения 0 руб.
   Serginio1
 
91 - 18.11.15 - 14:10
(88) За что заплати?
Microsoft недавно выпустила бесплатный Visual Studio Community Edition с той же функциональностью, что и Professional Edition.
   Garykom
 
92 - 18.11.15 - 14:10
(87) пробовал уже и не и не раз, реально как повезет
по факту или сразу не пашет
или потом такие глюки всплывают

к примеру когда на java писал для работы с xls пришлось использовать 2 разные библиотеки (каждая причем со своими зависимостями это пи.. был в результате)

одна хорошо читала (чтобы начала понимать русский пришлось найти сорцы, исправить)
а вторая хорошо писала (читать не умела совсем, тупо падала)
   Garykom
 
93 - 18.11.15 - 14:11
(90) (91) хы, про бесплатный сыр напомнить?
   qwerty2469
 
94 - 18.11.15 - 14:12
(92) а на java для работы с xls есть хорошая библиотека от apache.
   Serginio1
 
95 - 18.11.15 - 14:13
(92) Я тебе привел ссылки на Net. Как они работают не знаю. Но иероглифы понимают. В конце концов можно использовать родной Microsoft.Office.Interop.Excel;


https://msdn.microsoft.com/ru-ru/library/dd264733.aspx
   Garykom
 
96 - 18.11.15 - 14:14
   Serginio1
 
97 - 18.11.15 - 14:15
(93) Не понимаю. Я пользуюсь и не вижу проблем. Надо будет буду использовать Java если будет от этого польза
   Garykom
 
98 - 18.11.15 - 14:15
(96)+ и еще овер 30 метров файл вроде пишут падает
   Garykom
 
99 - 18.11.15 - 14:16
(97) лицензию читал?
   Serginio1
 
100 - 18.11.15 - 14:17
(97) Я пишу для нужд компании. Если я буду продавать, то тогда почему бы и не заплатить.
  1  2  3  4   

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