#0
by самолет
Есть написанная dll на С#. Хочу ее подключить к 1с 7.7. Нужна для XSLT трансформаций. Пока пытаюсь вызвать метод Start чтобы увидеть что она работает. Но не получается. Может кто подскажет в чем моя ошибка.... 0) Создал на шарпе dll Вот ее код на С# { public class Transform { public void start { Console.WriteLine("Тестирование прошло успешно"); } public void test public string DoTransform(XmlDocument fileXML , string fXSLT) { XslCompiledTransform xslt = new XslCompiledTransform; } } 1)Библиотеку при сборке на закладке "Подписывание" поставил галочку "Подписать сборку" и создал файл с ключем без пароля. 2)После зарегистрировал через C:WindowsMicrosoft.NETFrameworkv4.0.30319
egasm.exe /codebase "C:UsersadminDocumentsVisual Studio 2015ProjectsClassLibrary1ClassLibrary1inx86DebugMyDll.dll" регистрация прошла успешно. 3) Проверил как она подключается из консольного приложения С#. Тоже работает 4) Стал в 1с 7.7 подключать ругается на try ЗагрузитьВнешнююКомпоненту("C:UserskarlukDocumentsVisual Studio 2015ProjectsClassLibrary1ClassLibrary1inx86DebugMyDll.dll"); except message("На загружена внешняя компонента"); Ошибка при создании объекта из компоненты C:UsersadminDocumentsVisual Studio 2015ProjectsClassLibrary1ClassLibrary1inx86DebugMyDll.dll (отсутствует CLSID) ОБОЙТИ НЕ ПОНЯЛ КАК.... 5)Взял в реесте нашел по имени MyDll CLSID Попробывал сделать Сообщить("компонента vkloader.dll не загружена","!!!"); Иначе
#4
by Serginio1
Там и писать то ничего не надо. Используй напрямую XmlDocument , XslCompiledTransform и StringWriter
#5
by самолет
NetObjectToIDispatch45 это библиотека сторонняя? ее нужно подключить? вот так выдает ошибку не могу создать ("NetObjectToIDispatch45");
#11
by Serginio1
Почитай У тебя всго 3 типа XmlDocument , XslCompiledTransform и StringWriter . Можешь веськод написать в 1С без этой DLL
#12
by dmitryds
галка com-объект в настройках. потом регистрация потом подключать по имени объекта через СоздатьОбъект (никаких путей)
#18
by dmitryds
библиотека для 1С77 делается просто... Создаем сборку, добавляем публичный объект (например мойОбъект), ставим флаг COM, добавляем публичные методы в объект. в 77 создаем объекты через мойОбъект = СоздатьОбъект("мойОбъект"); и пользуемся его публичными методами. И никакого дополнительного левого софта не нужно
#19
by самолет
"МойОбъект" это только имя класса в шарпе Например: Addin.Tranform? или нужно еще namespace добавлять Addin.MyDll.Tranform? Mydll это namespace Tranform это класс
#20
by самолет
И галочка COM ставится на закладке "Сборка-Регистрация для COM взаимодействия"? Эта галочка?
#21
by Serginio1
Ты 2 то читал? Для каждого класса нужно прописать [ComVisible(true)] [ProgId("Project1.Class1")] [ClassInterface(ClassInterfaceType.AutoDual)] [Guid("Твой-GUID-4276-928A-8B91C9891FF1")]
#23
by самолет
сделал под COM. т.е добавил классу [ComVisible(true)] [ProgId("Project1.Class1")] [ClassInterface(ClassInterfaceType.AutoDual)] [Guid("Твой-GUID-4276-928A-8B91C9891FF1")] сейчас ругается Ошибка при создании объекта из компоненты <Неизвестная компонента> (отсутствует интерфейс IInitDone) Посмотрел примеры там целые интерфейс IInitDone реализуют. Это что обязательно? Без этого не будет работать?
#24
by Serginio1
Зачем тебе ВК? СоздатьОбъект("Project1.Class1"); Кстати по ссылке из 1 есть ссылка на ФайлыNetObjectToIDispatch Где лежат примеры, DLL и там есть РегистрацияКомСервера.exe для интерактивной регистрации COM DLL
#25
by самолет
Просто до конца не могу помять создания COM dll. По описанию вроде как отличается только директивами перед классом и интерфейсом и галочками в настройках. Но вчера ночью качал примеры с сайта по ссылке которую ты давал и они тоже при сборке регистрируются но при подключении к 1с валятся с ошибкой что "неизвестная компонент". Сейчас уже хочется довести до конца и понять как можно делать СОМ dll для 1с...
#26
by Serginio1
Вот пошаговое создание СОМ библиотеки Но вообще проще использовать Там вообще можно не писать DLL. А для семерки проще использовать одну NetObjetToIDispatch45.dll зарегистрировать её, а все остальные библиотеки подгружать через неё. Смысл в ней в том, что она любой объект оборачивает в COM объект. Потрать немного время на Если, что непонятно подскажу
#27
by Serginio1
И почитай внутри папки есть NetObjectToIDispatch.docx Зарегистрировать можешь через RegAsm.bat запустив от администратора в папке DLLNetObjetToIDispatch45 рядом с NetObjetToIDispatch45.dll
#28
by Кирпич
найди в интернете какой нибудь ликбез про COM. иначе ты так будешь методом тыка месяц делать то, что обычные люди делают за пять минут.
#30
by самолет
Добавил в Шарпе все дерективы смотрел примеры Код с#: [ClassInterface(ClassInterfaceType.AutoDual),ProgId("Addin.Tranform"),Guid("F62AA00E-235B-488C-BD81-D7A8470B3EDF"),ComVisible(true)] public class Transform : iTransform { public void start { Console.WriteLine("Тестирование прошло успешно"); } } } Код 1с: Сообщить("Не удалось подключить компоненту "+ИмяВК); Библиотеку регистрировал через РегистрацияКомСервера.exe и через regasm все регистрируется но Ошибка при создании объекта из компоненты <Неизвестная компонента> (отсутствует интерфейс IInitDone) Не удалось подключить компоненту Addin.Tranform Вопрос: вот это интерфейс IInitDone он обязательно должен присудствовать в dll или он не нужен? Нигде кроме примера не нашел об этом информацию...
#31
by Кирпич
Если ты пишешь просто COM dll, то не надо реализовывать интерфейсы ВК (IInitDone и прочие). Загружать такую dll нужно через СоздатьОбъект(ИмяВК) и обязательно регистрировать в реестре. Если ты делаешь полноценную ВК, то обязательно в ней должен быть IInitDone.
#34
by самолет
Вот Это из ссылки выше Замечу, что метод ЗагрузитьВнешнююКомпоненту в данной ситуации (COM-объекты на .NET) не работает, и необходимо использовать метод ПодключитьВнешнююКомпоненту.
#40
by Serginio1
Если тебе нужна ВК то смотри опять же как реализовано Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF
#41
by самолет
IInitDone сейчас не реализован код же я показал на шарпе. Т.е. сейчас весь механизм IInitDone из примера буду переносить в свою библиотеку.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: ТиС 77 Оплата картами сбербанка (подключить DLL Сбербанка)
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: ВК У кого - нибудь получалось совместно использовать 1CPP.dll и FormEx.dll?
- v7: как можно подключить базу 1с на windows7
- Чем грозит замена odbcbcp.dll, sqlsrv32.dll, sqlsrv32.dll, в Win7 ?
- v7: Нужны библиотеки seven.dll и DBEng32.dll
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Нужны библиотеки AddIn.dll и EITSJPU.dll
В этой группе 1С
- Обновление БСО. Посоветуйте как правильно сделать!
- Обновление платформы 1С 8.3 Ошибка запуска службы агента сервера 1С
- Ут 10.3 Можно ли печатать не фискальный чек?
- 1c 8.3 и буфер обмена
- Суммирование итогов по группам в отчете СКД
- Синхронизация 1с БП корп и ЗУП
- После обновления не работают web-сервисы
- Скачать обработку с инфостарта
- Надо оформлять ИТС для каждой конфигурации?
- Пропадает рабочий процесс
- Как проще всего преобразовать номер столбца Excel в букву столбца?
- Срез первых и срез последних
- Розница 2.2 настройка прав кассира
- Веб-сервис. Проверка дополнительного свойства. Ошибка преобразования данных XDTO
- Перенос Контактной информации из УПП 1.3 в БП 3.0 Корп
- Синхронизация зуп 3.1 и бух 3.0
- у кого от чего rphost падал и как лечили?
- Права доступа 1С розница 2.2
- вэб-морда для 1с
- Раскодировать строку javascript