Но меня упрекали в том что
1. Код не кроссплатформенный.
2. Приходится использовать Руслиш (смесь латиницы с кириллицей)
С выходом .Net Core и возможностью вызова из натива сделал ВК для использования классов .Net из любой оси поддерживаемой .Net Core. Список можно посмотреть и скачать Здесь
В общем то сделано много. Это и поддержка методов с переменным количеством параметров, методов расширений, вывод типов дженерик методов, и более простое использование методов дженерик методов, поддержка Linq итд.
А так же добавление русскоязычных синонимов (в прочем как и английских вариантов русских названий методов и свойств)
Так как в Native API нельзя возвращать и передавать объекты то приходится передавать и возвращать строку. А оборачивать объект через функцию ъ (аналог $ в JQuery) и передавать строку используя метод ПолучитьСтроку().
По поводу того, что нужно знать C#, то напомню, что для работы с Excel сначала использовались примеры на VBA, а затем с появлением кода на 1С уже вступил в силу закон Copy-Paste и народ начал использовать уже код на 1С. Кстати я постарался максимально приблизить использования кода на C# и достаточно его легко адаптировать под 1С.
Ну в общем то вопрос, что не хватает на Linux для полного счастья. С помощью .Net Core можно сделать замену COM. Он развивается и пока конечно далек от взрослого, но на нем уже можно много сделать.
Основная задача это привлечь внимание 1С модифицировать Native API для возможности возвращения объектов из ВК и передачи объектов в параметрах.
Или интегрировать в 1С по аналогии с ComОбъект (NetОбъект, JavaОбъект, NetТип, JavaТип )
Или если это никому не нужно, то бросить всё и заняться вышиванием крестиком?
//1С при передаче по ссылке свойства ВК Список.Current
// при выходе из метода присваивает Список.Current значение переданное изначально
// Поэтому помечаем входной параметр как Знач
//Или же делать так, если методы изменить нельзя
// То нужно присвоить значение переменной и вызвать метод передав в параметрах эту переменную
//Стр=Список.Current;
//Зазача=ъ(Стр);
Функция Ъ(знач Ссылка)
// Создаем объект по ссылке полученной из методов .Net классов
//Физически это строка ёЁ<Ьъ>№_%)Э?&2 содержащее 12 символов для отделения их от других строк
//и индекс в спике исполуемых объектов на стороне .Net
рез = Новый("AddIn.NetObjectToNative.NetObjectToNative");
// И установим ссылку
рез.УстановитьСсылку(Ссылка);
возврат рез
КонецФункции // СоздатьОбъектПоСсылке()
// Сокращенное использование метода ВК Новый
// Создает объект по строковому представлению типа или по ссылке на тип
Функция ъНовый(знач стр)
возврат ъ(Врап.Новый(стр));
КонецФункции
// Сокращенное использование метода ВК ПолучитьТип
// Создает получает тип по строковому представлению типа
Функция ъТип(знач стр,ИмяФайла="",ГлобальнаяСборка=ложь)
возврат ъ(Врап.Тип(стр,ИмяФайла,ГлобальнаяСборка));
КонецФункции
(3) Serginio, Все что нужно в linux есть, вопросы возникают с менталитетом пользователей и привычками, от которых бывает избавится практически не возможно.
(19) Serginio, При должной тренировке Native компоненты не сложнее писать, чем используя COM, а вот преимуществ больше как по меж платформенному переносу так и стабильности работы.
СборкаSqlClient=ъ(Врап.Сборка("System.Data.SqlClient.dll"));
SqlConnection=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlConnection"));
SqlCommand=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlCommand"));
connection =ъ(Врап.Новый(SqlConnection.ПолучитьСсылку(),ConnectionString));
connection.Open();
ТекстЗапроса = "Sel ect Номенклатура.DESCR Наименование Fr om sc84 Номенклатура where DESCR Like '%'+@Строка+'%'
|order by Номенклатура.DESCR";
command = ъ(Врап.Новый(SqlCommand.ПолучитьСсылку(),ТекстЗапроса,connection.ПолучитьСсылку()));
Parameters=ъ(command.Parameters);
Parameters.AddWithValue("@Строка", "ДСП");
dr = ъ(command.ExecuteReader());
Пока dr.Read() Цикл
Сообщить(dr.get_Item("Наименование"));
КонецЦикла;
По поводу Торгового оборудования, то для Декстопа обязательно идет API на C#. Даже на WinCE было API, правда там был Interop над С++ dll.
Что можно делать и сейчас. Просто сделать Interop и использовать .Net сборку проще чем писать ВК
(12) Serginio, мне, как скорее администратору, сильно не хватает механизма управления кластером серверов "с человеческим лицом". Разработкой как таковой не занимаюсь, поэтому оценить полезность всего вышеперечисленного скорее всего не смогу.
Что касается управления кластером (сервером), которого действительно не хватает в Linux - я в своё время рисовал вэб-админку на php, которая дёргала командную строку по мотивам материалов с http://oparin.info/1c/administrirovanie-serverov-1s-pod-linux-ubuntu
Если говорить о серверной части, то сплошь и рядом проще, легче и дешевле в сопровождении поставить виндовый сервер, даже имея линуксовую БД.
Тупо потому, что виндовый работает СТАБИЛЬНЕЕ в суровом продакшене. Долго мучались с линуксовым, но количество инцидентов задолбало. Постоянно нужно следить за этим тамагочи, который то память начинает жрать, то деградацию производительности дает непонятной природы, то еще какие фортели и коленца выкидывает. После каждого обновления вырабатывать новую стратегию сопровождения, чтобы эта хрень хотя бы видимость стабильности в работе давала. Использовать костыли для интеграций. В итоге плюнули, перешли на виндовый сервер (оставив postgresql на linux) и теперь горя не знаем. Один виндовый сервер в инфраструктуре, который особо лицензий не просит - чепуха на фоне количества снимаемой головной боли. Соответственно, попутно снимаются все проблемы со всевозможными интеграциями. Поэтому, хотя количество проделанной тобой работы и впечетляет, но особой пользы я от этого не вижу, уж извини.
Главная проблема - клиентов на линукс перевести. А тут главный тормоз - работа с торговым оборудованием. Плохо дело с готовыми и надежными дровами под Native API под всякое разное. А высокоуровневая байда как-то и не держит особо. Технически, во всяком случае.
(22) Serginio, В линукс нет ни Word ни Excel, за исключение пожалуй IOS, но и там свои компоненты интеграции есть, а что касается муторности, то на помощь приходит ООП, которая устраняет кучу сложностей в написании компонентов
(25) Serginio, Ну написал ты компоненты на .Net, с таким же успехом можно написать на C, С++, Java, но это не замена COM, а обычный Native ВК. COМ серьезная архитектура и включает в себя достаточно большие функциональные возможности, от обычных экспортных функций, до серьезных визуальных решений интегрирующихся в приложение, пользователь даже не определит с чем он работает с самой платформой или это работает внешний компонент. Писать альтернативу COM в линукс не имеет ни какого смысла
(26) Я не пишу. Они уже есть. COM это прежде всего Idispatch. То о чем ты говоришь это ActiveX. Контейнеры.
Это не обычный ВК. Это ВК позволяющий использовать любую сборку .Net. Котрых готовых огромное количество. Как Word Excel ADO
(27) Serginio, COM это и есть часть функциональности OLE, ActiveX. Если уже писать библиотеку, то писать полноценный Native модуль классов .Net на базе которого можно быстро и без проблем генерировать любой сложности компоненты без применения технологий COM (ActiveX, OLE), тогда такой модуль можно будет портировать на линукс с использованием библиотеки Mono, или open source Microsoft Net. Core. Писать же прослойку между ВК и другими компонентами на мой взгляд пустое занятие и не принесет результатов, во первых в Windows гораздо эффективнее применять именно COM технологию, а в линукс, IOS, наиболее распространен C++ и С языки для написания системных приложение и компонентов.
(28) Использование сборок .Net даже проще чем COM. Нет ограничений на поддержку объектов Idispatch, нет проблем с перегрузкой методов. Мало того у меня есть разработка Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент . Там объекты .Net оборачиваются через COM обертку через Шкуадусе.
(31) Еще раз моя разработка кроссплатформенная. Работает на Линукс.
Второе для Windows позволяет использовать любые библиотеки .Net. 1С совец может их использовать как COM сервер.
Я начал использовать данную разработку, когда мне нужно было подключиться к Вэб сервису не поддерживаемому 1С (Header WS протоколы). Там были десятки методов и сотни классов. Для использования через СОМ делать обертку вручную было муторно. Используя эту разработку обертка создается автоматически, а использования даже легче чем 1С кого доступа к Вэб сервисам.
Кроме того динамическая поддержка событий. Значительно упрощает работу.
Я бы с удовольствием использовал в коде классы и функции библиотеки Qt 5.x (gcc/mingw, никакого MSVS), в том числе для создания произвольных форм (QtQuick).
(33) Суть моей разработки в том, что через Reflection я получаю доступ к методам и свойствам класса и вызываю их на объекте либо статические методы.
Что касается С++ то там с все очень грустно с этим. Опять же моя разработка кроссплатформенная