Вопрос по созданию внешних компонент #161717


#0 by D01
Пытаюсь сделать по статье romix'a Внешние компоненты 1С на .NET: работа с типами 1С:Предприятия ; вот эту часть но компилятор C# ругается на ошибки (именно здесь на AppDispatch и CreateObject) в статье описано как отключить проверку в VB, но для C# я такого не нашел Может кто сталкивался?
#1 by romix
А как именно ругается на ошибки? Если так: Option Strict On disallows late binding То может быть эту настройку надо выключить: OptionStrict = "Off" (не проверял, может в C# все как-то иначе).
#2 by Vladislav78
давай мыло, скину работающий пример компоненты на C#
#3 by D01
D01@mail.ru У меня компонента работает, но... не работает: 1. Генерация события 2. Доступ к объектам 1С
#4 by D01
'object' does not contain a definition for AppDispatch и то же самое для CreateObject
#5 by D01
Кстати, по поводу регистрации ВК @%WINDIR%Microsoft.NETFrameworkv2.0.50727RegAsm.exe /tlb 1CAddIn.dll @gacutil /i 1CAddIn.dll - без этой строки 1С не видит ВК
#6 by D01
+ - во всяком случае, у меня
#7 by D01
up
#8 by Asmody
вот статья про позднее связывание в C#:
#9 by D01
Еще хотелось бы узнать как в C# использовать функцию SetParent из класса WinAPI
#10 by D01
+ есть в примере из статьи
#11 by D01
спасибо, очень интересная статья
#12 by romix
А так не работает?
#13 by romix
Он с AppDispatch? А скинь мне тоже пожалуйста...
#14 by D01
нет
#15 by D01
а по поводу не подскажешь?
#16 by romix
Не помню. Может, в MSDN-е есть? А что ты вообще хочешь сделать внешней компонентой (какая стоит задача)?
#17 by D01
Принимать и обрабатывать данные с датчика + обмен данными есть ручной ввод данных через форму компоненты, но при вызове формы окно 1С уходит за другие(если открыты), потом (после закрытия формы) окно 1С возвращается обратно... вобщем скачкИ... а если бы форму сделать MDIChild а MDIParent - основную форму 1С, то, скорей всего, проблема бы решилась + к этому еще б фоновый прием данных с датчика (а это генерация событий в 1С)...
#18 by romix
Я тут вчера ВК наваял для фонового отслеживания файла. Работает в отдельном потоке и если видит появление файла, то создает событие.
#19 by romix
А что за датчик, т.е. куда он шлет сообщения? Случайно не в COM-порт?
#20 by D01
нет USB через дрова
#21 by D01
письма до сих пор нет :-(
#22 by romix
А дальше дрова куда пишут? Они имитируют COM-порт или работают как-то иначе?
#23 by romix
+А то есть готовая ВК для ком-порта...
#24 by D01
Честно сказать, не смотрел, там DLL, через которую можно общаться с устройством, все пашет, но у меня не получается сгенерировать событие в 1С
#25 by D01
а с COM портом в NET 2.0 вообще нет проблем
#26 by romix
Я не понимаю как связаны между собой данные с датчика и ручной ввод чего-то там. Что вообще за задача?
#27 by romix
У меня есть мысля как решить - поюзать внешнюю прогу (пусть даже и на C#), которая все делает, и внешнюю компоненту без изменений. Прога должна создавать файлик, его ловить из 1С.
#28 by D01
через файл интересно... но нужна быстрая реакция на событие
#29 by romix
Она там практически мгновенная. Потому что юзается виндовый системный вызов.
#30 by romix
+29 Т.е. создаешь файлик - и тут же из 1С вылетает событие, безо всяких задержек. Потому что там нет циклического опроса папки, а юзаются винды.
#31 by D01
Стукнись, пожалуйста в аську: 170394414
#32 by romix
Щас не могу в аську, доеду до дома, там выйду...
#33 by D01
ок - жду
#34 by romix
Это короче примерно в 9 вечера будет...
#35 by D01
ок - спасибо за уточнение
#36 by D01
События в приведенном примере можно вызывать процедурой V7Data.AsyncEvent.ExternalEvent(<Наименование компоненты>,<Наименование события>, <Данные>); соответственно, запись в строку статуса: V7Data.StatusLine.SetStarusLine(<Текст строки>);
#37 by Слоняра
romix в статье изврат глянь компонет ShellChangeNotifier
#38 by D01
а что за изврат?
#39 by Слоняра
изврат -это изобретать велосипед, что ярко продемострировано в этой статье..
#40 by D01
В статье этот компонет используется во внешней компоненте Может у тебя есть другие способы отследить такие события в 1С?
#41 by Слоняра
:) я уже подумал что я протупил.. в статье он использует функции API а этот компонент в стандартной поставке Делфи, делает то же самое в ноль строк..
#42 by romix
Хочешь, поюзай это (если сумеешь, конечно, поюзать это в невизуальном режиме, когда нет формы). Моей целью, в первую очередь, было показать работу с потоком. Мне по почте поступали вопросы на тему потоков. Могу убрать опрос файлов и добавить MessageBeep, чтобы компонента ничего не делала, а только периодически издавала звук (демонстрация работы потока)- число строк уменьшится ровно на 3. В этот образчик ВК можно втыкать самые разные вызовы - не только мониторинг файлов, но и работу с сокетами TCP/IP, работу с RS-232, да что угодно, когда нужно отслеживать что-либо, и оповещать 1С об изменениях. В дельфийскую компоненту ничего подобного не воткнешь, и с потоками работать не научишься.
#43 by Den
Слоняра, ты сильно неправ - изврат, это как раз использование компонент, а юзанье API - это высший пилотаж. И кстати, у меня в Delphi 7 я так и не могу найти компоненты, начинающиеся с Shell
#44 by Слоняра
понял. Если цель статьи -работа с потоком, тогда извиняюсь. юзай API.. что тебе еще сказать.
#45 by Слоняра
или на асме.. это пилотаж пилотажей.. и кстати плохо ищешь.
#46 by D01
Решение: public static Object obj1C  = V7Data.V7Object.GetType.InvokeMember("AppDispatch", BindingFlags.GetProperty, null, V7Data.V7Object, null);
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С