Шаблон внешней компоненты для 1С:Предприятие на C#.
Написан и успешно компилируется в Microsoft Visual C# 2010 Express. В комплекте RegAddIn.bat как образец для регистрации компоненты в реестре и обработка для проверки работоспособности в 1С. Все проверялось с 1С версии 8.2.16.352.
Upd, 25.04.2025
Компонента успешно пересобрана и проверена на конфигурации:
- 1С:Предприятие 8.3.7.2027
- MS Visual Studio Express 2025 для Windows Desktop
- Windows 10
Плюсую…
но… есть вопрос?
В длл только элементарные действия или можно работать с базой (справочниками, документами…)
Если можно пример на шарпе с обработкой справочника…
(1) Andry.Boris, можно, но я с этим еще не разобрался, поэтому примера нет. Могу, как вариант,дать ссылку . Там этот вопрос рассматривается.
Вообще не вижу смысла данной компоненты. Все плюсы, которые указывает автор статьи спорные: например, выгрузка/загрузка в xml — это запросто можно сделать используя средства 1С. Я лучше буду программировать либо в 1С, либо на шарпе, но вместе зачем их скрещивать. У них разные области применения.
А неплохо. Плюсанул. Но кое-что непонятно:
1. Зачем подключено System.EnterpriseServices? Я что-то упустил?
2. Назначение интерфейса IMyComponent.
3. Работа со свойствами не реализована?
(3) TigeRuS, данной компоненты — это какой? Я в своей ни о каких плюсах не говорю. По ссылке, которую я привел выше тоже плюсы/минусы не рассматриваются. Слово «xml» там встречается ровно 1 раз, когда говорится о способе хранения настроек проекта VB.NET. Вы о чем? Сам придумал преимущество и сам его опроверг. 🙂
И тот, и другой пример — просто примеры создания внешних компонент: мой — как это сделать на c#, в статье по ссылке — как из компоненты работать с объектами 1С (ответ на (1)).
С утверждением о разных областях применения согласен. Именно по этому они удачно дополняют друг друга через механизм ВК.
(4) saiten,
отличной статьи . Там это пространство имен нужно было для работы с COM+. Можно и без него, согласен.
1. System.EnterpriseServices осталось в наследство от примера из
2. Интерфейс IMyComponent нужен для работы процедуры RegisterExtensionAs, которая перебирает все интерфейсы и хэширует имена методов, объявленных в них.
3. Со свойствами — да есть проблема: интерфейсы не могут содержать поля. Может быть кто-то из уважаемой публики предложит решение?
P.S.
Как вариант, добавлять имена свойств в хэш таблицы в процедуре RegisterExtensionAs хардкодом. И реализовать GetPropVal, SetPropVal, IsPropReadable, IsPropWritable.
Л-логично… Просто, несколько проще было бы, на мой взгляд делать так: хэш заполнять по this.GetType().GetMethods(), а функционал компоненты отделить от реализации интерфесов:
А вообще, респект. Делал похожую штуку, только до публикации так и не дошло, бо потребовалась реализация native API под тонкий клиент и не удалось решить красиво проблему со свойствами.
(3) TigeRuS, Только сегодня накатал на C# СОМ обертку для Regex, т.к. VBScript.RegExp не понимает UTF-8.
15 мин и счастье в кармане. Так что есть что расширять в 1С. Хотя регулярных выражений как не было в ней, так и нет. Лучше бы 1С вместо XML регулярные выражения в общие объекты включила.
(7) saiten, функционал конечно нужно как-то отделять от интерфейса. Только думаю, что так просто не получится. 1С создает и работает с объектом MyComponent (в данном примере). Если мы создаем производный класс myTestComponent и в нем определяем методы, как получит доступ к ним MyComponent? И если принята модель, что пользовательские методы объединяются в отдельный интерфейс, то как туда попадут они из производного класса? Тут нужно что-то другое придумывать…
Если кому интересно, реализовал работу со свойствами. Выложил свежий файл.
(9)Собственно, 1С создаст объект типа MyTestComponent и будет работать с ним через методы, определённые в MyComponent (естественно, для производного класса, надо установить ComVisible(true) и Guid). При этом this будет указывать на объект MyTestComponent, таким образом ничто не помешает 1С вызывать методы MyTestComponent, имея ссылку на MyComponent через Invoke, т.к. this.GetType().GetMethods() вернёт описания методов как в базового, так и в производного классов. Описывать же пользовательские методы компоненты в отдельном интерфейсе нет необходимости, и логического смысла, в общем-то, тоже: класса вполне достаточно.
(10) saiten, да, вынес функционал для подключения к 1С в отдельный класс. Спасибо за предложение!
(3) TigeRuS, ВК оч. удобны для связки например 1с со скайпом или тем же астериском, из самой 1с по-моему этого не реализовать
(0) всем на всякий случай —Регистрация .net библиотек без админских прав
Наивный вопрос — а нет ли такого же примера на vb? 🙂
(14) albochkov, мне, пока я изучал вопрос, вроде не попадался.
Спасибо, мне помогла взял себе на заметку!
Спасибо, нужно будет поработать над ней для своих целей 🙂
Плюс однозначно
У меня вызвало теплые воспоминания когда я давно давно писал на C# ВК для 1С v7 🙂
(18) avhrst, да, технологии сто лет, а готового работающего примера с комментариями что и для чего найти не получилось. Теперь есть.
Спасибо большое за пример!
Но меня возникла проблема: ПодключитьВнешнююКомпоненту(«AddIn.MyComponent») отрабатывает, а создание объекта Новый(«AddIn.MyComponent») вылетает с исключением Тип не определен (AddIn.MyComponent)
(20) vz1987, регистрация компоненты с помощью regasm.exe проходит без ошибок? В реестре создаются ключи HKEY_CLASSES_ROOTAddIn.AddIn и HKEY_CLASSES_ROOTAddIn.MyComponent?
В Visual Studio есть возможность автоматически регистрировать компоненту при компиляции. Для этого в свойствах проекта на закладке «Построение» нужно поставить галку «Регистрировать для COM-взаимодействия» и на закладке «Приложение» -> «Сведения о сборке» -> «Сделать сборку видимой для COM».
(21) regasm выдает warning RA0000: Registring an unsigned assembly with /codebase can… и в конце пишет, что Types registred successfully.
Ключи создаются в реестре, но по другому пути: HKEY_USERSS-1-5-21-2345514615-3774356936-3805296294-1001SoftwareClassesAddIn.AddIn. М.б. в этом собака зарыта?
(22) vz1987, могу предположить, что у вас нет прав на запись в ветку HKEY_CLASSES_ROOT, поэтому пишет в HKEY_USERS. Попробуйте запускать bat файл с правами администратора.
(23) удалось записать в HKEY_CLASSES_ROOT, но результат тот же…
(23) разобрался. Поплотней изучил код вашей компоненты и нашел:
public const string AddInName = «ExpoServer»;
Соответственно, в 1С, обращение
Компонента = Новый(«AddIn.ExpoServer»);
решает все проблемы.
Еще раз спасибо большое за пример, теперь буду развивать его в своем направлении:)
(25) vz1987, извините. Да, моя ошибка. Поправил.
(23)
Вот только поэтому я и свалил на технологию Native 😉
Вечная проблема прав, особенно в правильных сетках, где юзверь вообще локальных административных прав не имеет.
Спасибо, можно ввзять на заметку
(27) Легко сказать, да вот примеров типа «как свалить на Native API» я не нашёл(конечно имею ввиду C# и 1С 8.2), хотя только по данной технологии можно сделать кроссплатформенное решение. Относительно Вк, иногда проще написать библиотеку NET для работы с ней по технологии COM, так как зачастую функционал ВК не требует тесного взаимодействия с 1С, а лишь выполняет роль очередного «костыля», у меня например это шифрование и битовые операции. Поэтому рекомендую оценить необходимость написания ВК по технологии 1С, иногда это необходимо, а иногда и наоборот. Автору конечно+.
(29) ZOOBR,
Могу конечно ошибаться, но на ИТС примеры на CPP, он разве шибко от «до диез» отличается?
Тогда ее и писать не стоит, куча всяких костылей 🙁 Я стараюсь делать для себя так, чтобы моя ВК все мои потребности удовлетворяла, не хватило — туда же дописал.
http://dev.1tsm.ru/project/148
Вот, например:
(30) НЕ поверишь, отличается. И если бы всё с Native API было так гладко да просто, то инфостарт уже наводнился бы болванками типа «Hello World!» на C#. Конечно когда нибудь всё изменится, разберёмся я думаю, тут ничего невозможного конечно нет.
Под костылём я подразумевал не отдельную библиотеку, а лишь очередную функцию которой она будет пополняться(я у себя например подобную библиотеку юзаю не только для 1С). Всё это я говорил относительно того, что не всегда нужно придерживаться технологии ВК 1С, а можно например просто COM юзать, и пиши туда чего хошь. Да, теряется кроссплатформенность, но этого недостатка не лишена и стандартная ВК 1С(не Native API), которая по сути тот же COM.
(31) ZOOBR,
«которая по сути тот же COM»
кто и что по сути com я в курсе, я их испокон веков пишу 😉
Я вот то, что проблема регистрации в реестре мало кого трогает — так это, видать, юзают в сетках, где кому попало такие права на запись раздаются
(32) То что ты в курсе я даже не сомневался, не обижайся. Расписывал скорее для остальных читателей комментов. Насчёт прав не совсем согласен. Например всё то что я упоминал работает у меня исключительно на сервере, где регистрацией COM кроме меня никто не ведает. Клиентские шняги стараюсь не делать, а если и приходится, то далеко не для всех(да и зарегистрить ком для пользователя домена проблемы не составляет). Еще раз подчёркиваю, что я никак не умоляю достоинств Native API, а как раз наоборот. Просто сам пишу сейчас на NET и когда в своё время захотел освоить данную технологию инфы толком не нашёл. Адаптировать с CPP конечно как то можно я думаю, но времени на это сейчас нет как видно и у многих других. Буду рад если кто-то поделится когда нибудь «рыбой». Но что-то я уже конечно флудом занялся. Больше не буду.)
(33)
Во! Ключевой момент! А у нас в холдинге, например, 1С-УППшник мечтает хотя бы о доле прав. А нех! 🙂
Если утрировать — без разрешения нашего кабинета даже в туалет сходить нельзя :)))
Вопрос: будет ли вышеописанный пример работать на 7.7? Уже почти неделю пытаюсь чформировать ВК на C#, но 7.7 ее видеть категорически отказывается. Зато восьмерка — без проблем.
Попутно вопрос: комунить вообще когда либо удавалось создать ВК на C# для 1С:7.7?
К сожалению, скачать приведенный в статье пример пока не могу, да и не уверен, что поможет, т.к. все скрины на восьмерке…
(35) dragonCat, с 7.7 не работает. Компоненту, сделанную по этому шаблону, 1С видит и подгружает, но при вызове функций на стороне компоненты возникают ошибки приведения типов. Если получится решить вопрос, дайте знать, пожалуйста.
(37) Удалось таки скачать файл, построил по нему dll с небольшими дополнениями (систем формз добавил, что бы мессаджбокс вывести). Все заработало (7.7, 27й движок).
Код в 1С:
Показать
Результат выводится…
С типами проблема вполне возможна, но она решается гораздо проще, чем заставить 1С увидеть компоненту 🙂
Поднять форум на 1С с этой компонентойhttp://infostart.ru/public/149676/ получится?
Например, объединитьhttp://infostart.ru/public/78388/ и вашу разработку.
Думаю, это было бы интересно службе поддержки франчайзи или фрилансеру.
У нас сейчас используется форум на phpBB, приходится дублировать задачи в 1С.
Позже, может прикрутим автообмен.
Пишу сюда, т.к. там отключены комментарии.
(39) Steelvan, получится. Зачатки такого форума есть в решенииExpoServer: Домоуправление . Если есть конкретные вопросы-предложения — в личку.
Если по Native API компоненту не нужно регистрировать при любом клиенте?
При вызове метода asyncEvent.ExternalEvent не из главного потока (например вызываем в событии DataReceived у SerialPort) происходит слкдующая ошибка:
Буду рад любой помощи.
прикольная штуковина 🙂
Отличный шаблон, давно искал такой.
Штука интересная. Но ни разу не понял — как инициировать ВнешнееСобытие
(45) Дуб, для внешнего события в 1С нужно вызывать asyncEvent.ExternalEvent(…)
Спасибо большое за довольно простое и четкое объяснение по работе с ДЛЛ-ками. От себя же могу только добавить — нашел интересное видео как сделать DLL на C# в Visual Studio. —http://www.youtube.com/watch?v=hinh5pfnbII
Странно, но на сервере не работает ПодключитьВнешнююКомпоненту. В чем может быть проблема?
(42) fox2010, Здравствуйте! Также нарвался на данную проблему, но решилось просто: регистрировать библиотеку надо с ключом /tlb, а не /codebase. Под 8.3 работает прекрасно, спасибо автору!
Kuzja_R, в случае, если на одной машине планируется использовать несколько внешних компонент, подобно этой, как избежать конфликта имен классов? Ведь в этом шаблоне помимо AddIn.<ИмяКомпоненты> регистрируется еще AddIn.AddIn.
Такой вопрос. Если мы обращаемся в 1С к свойствам и методам, описанным в компоненте, то все окей. А если мы вызываем произвольные методы или свойства, тут все как-то странно. Например:
Компонента.Prop = 3; //Правильное свойство
Компонента.Prop1 = 3; //Такого свойства нет, но при присваивании даже не ругается
Компонента.Petyua = 3; //Такого свойства нет, но при присваивании даже не ругается
Компонента.Popa = 3; //Такого свойства нет, но при присваивании даже не ругается
Компонента.Go(10, 5); //Правильная функция
Компонента.Goga(10, 5); //Такой функции нет, но выдает «Недостаточно фактических параметров»
Компонента.Goga_123(); //Такой функции нет, но выдает «Недостаточно фактических параметров»
Компонента.Gogogogogo(); //Такой функции нет, но выдает «Недостаточно фактических параметров»
Почему не ругается на неправильные методы и свойства? Чем это чревато?
Как научить компоненту распознавать русские названия методов и свойств? Помнится, когда-то давно писал ВК на Делфи, там это было реализовано.
Ссылка на объект не указывает на экземпляр объекта.
1C 8.2.17
тута ==> asyncEvent.ExternalEvent(«AddIn», «error», e.ToString());
после этого ==> булРез=ПодключитьВнешнююКомпоненту(«AddIn.MyComponent»);
oCom = Новый COMОбъект(«AddIn.MyComponent»);
oCom.Go(10,0);
скачал, хороший шаблон
Спасибо. Очень выручил шаблон, когда надо было срочно написать драйвер для работы с весами через COM. Единственное, что я не понял, так это регистрация компоненты. Через regasm все получилось нормально. А можно ли это сделать через стандартный regsvr32? При попытке выдает что точка входа в процедуру dllregisterserver не найдена. Информации я не нашел.
(54) karapuzzzz, нет, нельзя. дотнетовские сборки регистрируются только через regasm.
Глупый вопрос — когда у какого-либо из интерфейсов скачанного проекта меняю GUID или банально переписываю 1 в 1 код в свой проект, где устанавливаю свои GUID’ы для соответствующих интерфейсов, при подключении в 1С ругается «Тип не определен (AddIn.MyComponent)». Конечно, перед этим сборку пересобираю и перерегистрирую в винде. Не понимаю, почему так может происходить. Кто-нибудь может подсказать?
(56) PoniMan, судя по этойстатье у ряда классов должны быть предопределенные guidы
(57) aworld, спасибо огромное, все перерыл. Все оказалось очевидным. Я наоборот думал, что все GUID должны быть уникальными.
Да, я очень плохо разбираюсь в шарпе, но подскажите плз:
Я создал на шарпе тип(класс), аналогичный дереву значений 1с с 2мя колонками.
Возвращаю такое дерево в 1с, определяется как Com_объект. Причина такого поведения понятна.
Непонятно, как из компоненты инициализировать тип дерево значений и на стороне компоненты заполнить его, а затем возвратить готовый результат.
А может совсем по другому необходимо действовать?
(59) Nikola23, проще всего создать нужное дерево на стороне 1С, потом вызывать функции компоненты, возвращающие простые типы и этими результатами заполнять дерево значений. Если нужно от компоненты получать сложные составные данные, тогда используйте разделители в строках или xml-разметку. На стороне 1С разбираете ответ и заполняете дерево.
(3) TigeRuS, Внешние компоненты в 1С давно используют для написания обработчиков драйверов ТО. Так как в «сыром» виде эти драйвера использовать в 1С нереально)
Почему в win 8 не работает, хотя зарегистрировалась без проблем? В ХР все норм.
(62) allegrosoft, win 10 тоже не работает, сам сом загеристрировался
Не пойму почему событие для 1Ски срабатывает, если возникает в методе вызванном из 1Ски и не срабатывает, если возникает внутри. Т.е.
public void SendEvent()
{
asyncEvent.ExternalEvent(«AddIn», «SendEvent», «Внешнее событие»);
}
Событие возникает при вызове метода из 1Ски Компонента.SendEvent() и появляется во ВнешнееСобытие().
И если я например напишу:
public void SendEvent()
{
SendEvInternal();
}
public void SendEvent()
{
asyncEvent.ExternalEvent(«AddIn», «SendEvent», «Внешнее событие»);
}
И вызову Компонента.SendEvent() — то ничего не происходит, 1Ска события не видит.
Помогите пожалуйста, уже всю голову сломал.
Сам себе отвечу ибо идея пришла сразу после мессаджа, нужно методы запихать в один поток или как оно там. Добавление директивы [STAThread] перед методами решает проблему.
то что проверена на 1С:Предприятие 8.3.7.2027 прекрасно, НО не стоит народ путать
скачивал этот пример еще в 2014, скачал и сейчас — нет ни одного файла чтоб отличался хотя бы временем
только цена за скачивание с 1 до 5 возросла
(66) izidakg, где-то обозначено, что есть изменения в публикации? Вроде нет. Написано о том, что шаблон был успешно проверен на новых платформах. Исходный код не менялся, потому что и старый отлично работает. Как говорится, новые песни нужны тому, у кого старые плохие. А цена — да, теперь другая. Инфляция-с.
(67) что так дешево? разве это не может стоить дороже с Вашей точки зрения?
(68) ture, не думаю, что пустая заготовка может стоить дороже. У тех, кто пишет ВК и зарабатывает на этом, полно своего кода. А те, кто только начинает разбираться, вряд ли готовы платить серьезные деньги только за «посмотреть».
(69) пустая заготовка является началом для любой новой компоненты. Это как чистый лист, чтоб сразу начать работу по выбранному предмету, не теряя время на детали красивого взаимодействия с платформой. По опыту написания на с++ скажу прямо — не смыслят гуру в своем коде, глаз уже замалеван и здесь очень важно делиться опытом и показывать альтернативу, чтоб оставалось в коде только полезное и правильное, а не куча фантомов. По идее первичный образец должна давать 1С, но её образец не рассчитывался на конечный продукт. Этот последний факт открывает целое поле для работы и самовыражения.
(71) the_master, камрад, у тебя 0 рейтинга, 0 публикаций (платных, бесплатных) за 10 лет на сайте. При этом ты позволяешь себе кого-то в чем-то обвинять? Не пиши сюда больше, пожалуйста.
Вопрос по компоненте
Почему не может инициализироваться на сервере ?
Функция ИнициализацияСервер() всегда возвращает ложь.
скрин во вложении.
а по натив апи C# есть что?
(74)1С, Linux, Excel, Word, OpenXML, ADO, Net Core
Огромное спасибо доброму человеку за публикацию!!!!!!
Есть возможность подключить ВК через: ПодключитьВнешнююКомпоненту(<Местоположение>, <Имя>, <Тип>)?
После нескольких дней бесплодных попыток (то-ли лыжи не едут, то-ли еще что…) использовать одну из наработок для создания внешней компоненты для 1С — наконец-то сумел «заставить задышать» у себя именно данную публикацию.
Для этого пришлось применить (наугад) следующие изменения:
1. Перекомпилировал проект в Visual Studio 2012 (может быть не было необходимости, просто чтобы точно получился 64-разрядный вариант)
2. Подправить в батничке параметр для regasm-а: вместо «/codebase» написал «/tlb»
3. Избавился от русских букв в пути к расположению dll
4. Написал в 1с77:
И оно вернуло «4» 🙂
Теперь о печальном…
В 1С:8.3.11.3034 — у меня не заработало.
Пишу так:
Показать
В параметре «парам1» — возвращает «ложь». В строке «С=Новый(«Addin.MyComponent»);» — вылетает с ошибкой «Тип не определен (AddIn.Mycomponent)»
ОС: Win2012R2x64
1С: 8.3.11.3034 x64
VS 2012 x64
Есть идеи?
При этом
Сообщить(j.go(12,0) );
Возвращает 0, а обработка внешнего события не вызывается:
Так, ладно, чего-то намутил с разрядностью(в VS ) — в итоге компонента заработала и на 1С: 8.3.11.3034 x64
То есть как заработала:
Вот этот код выполняется без ошибок:
Показать
Однако дальше начинаются проблемы. Если добавить вызов демонстрационной функции Go:
Показать
На строке «Сообщить(С.GO(12,3));» вылетает с ошибкой 1С: «Использование синхронных вызовов на клиенте запрещено».
Начал читать про асинхронное программирование в C# но пока далек от полного понимания того, как модифицировать исходник сборки.
Большое спасибо, я на нечто подобное втайне надеялся. Ведь действительно, это же 1С вызывает метод объекта на C#-е. Значит она (1С) и должна вызывать его асинхронно.
Сейчас буду пробовать.
Правда немного не понял, что Вы указали в строке:
» С.< b >НачатьВызов< / b >GO(ОповещениеПослеВызова,12,3);»
Или это просто для отображения тут, на ветке, жирным шрифтом? Но все равно чем-то же должно разделяться «НачатьВызов» и «GO»… в любом случае еще раз спасибо за наводку.
Оказывается, ничем не должно разделяться. Именно так и сработало: С.НачатьВызовGO(….
По поводу:
(81)
Поясните вопрос.
(84) В «синхронном» режиме параметр «Prop» отображается в отладчике. Ничего критичного, просто не удобно.
(85)
Понятно. Ну тут видимо ничего нельзя сделать
(86) автор так же сказал
Добрый день.
Может подскажете, поможет ли мне эта компонента, или совет дадите :
мне необходимо из одной программы (не 1С):
— желательно кодом на C# передать в 1С параметр (строку)
— в 1С отловить это событие
— обработать
— каким то макаром вернуть результат обработки в вызвавшую событие программу(пока не знаю как это реализовать)
И поясните, если не сложно :
1) 1С без внешней компоненты не может перехватить внешнее событие?
2) Какие есть варианты возврата результата обработки из 1С ? Не хочется проверять периодически на наличие файла с результатом…
У кого то получилось заставить компоненту работать на сервере?
(88)
а http-сервис http-запрос не подойдет?
(90) спасибо, именно так уже давно и реализовал свою часть со стороны 1С (http запрос — запрос на сервере 1С — обработка — возврат результата). Правда со стороны программистки, которая должна была сделать свою часть на С# так ничего и не дождался… но это уже не мой вопрос…
Как заставить ее работать на сервере??????
При разработке на С# учел для себя (я использовал MS VS 2017 Community Edition):
В свойствах проекта
Вкладка Приложение — Целевая платформа — тут указываете версию .NET, и эта версия должна устанавливаться на машину, где будет вызов COM DLL.
В этой же вкладке Сведения о сборке — выставляете флаг Сделать сборку видимой для COM. Равнозначно тому если Вы в файле AssemblyInfo.cs изменили строку на [assembly:ComVisible(true)]
Во вкладке Сборка я выставлял значение Цель платформы в AnyCPU. Чтоб вызывалась из х32 и х64 клиента (поправьте, если ошибаюсь)
Тут же выставлял флаг Регистрация для COM-взаимодействия. А это равнозначно вызову RegAsm с ключом /codebase. Выставлял чтобы тут же собирать проект и тестировать. Иначе приходилось б вручную вызывать RegAsm.
У меня Win7x64, 1С клиент толстый x32. Себе на комп установил такую же версию .Net Framework, что и при разработке. Скопировал готовую DLL в C:WindowsSysWOW64. Далее с правами админа командная строка — и выполнить команду C:windowsMicrosoft.NETFrameworkvВашаВерсия.NetRegAsm.exe <Путь+ВашаDLL> /codebase
Я пробовал также вызвать regasm из каталога с версией Framework64 — не заработало. Видимо если сборка чисто х64, только тогдла регистрация отсюда.
Надеюсь кому нибудь поможет.
А возможно ее подключить как com объект?. Т. е. через: Новый COMОбъект()?
Добрый день! Кто владеет информацией по созданию внешней компоненты, которая в итоге будет загружена в ОбщиеМакеты с типом(Двочные данные или внешняя компонента). Нужно знать, как это делается правильно.
А на Linux работать будет?
(96) Нет, не будет.
(30)Да простит меня ушедший в мир иной, пишу для ищущих в поисковиках, сам как-то несколько часов потратил.
На на C# в принципе невозможно скомпилировать dll-ку, которая подключалась бы в 1С методом ПодключитьВнешнююКомпоненту(«ИзСиШарпа.dll», «Имя», ТипВнешнейКомпоненты.Native). Обусловлено это тем, что эска ожидает dll на машинном коде, а из сишарпа dll будет на управляемом коде.