Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

шаблон внешней компоненты C#

шаблон внешней компоненты C#
Я
   Sobir18
 
05.11.20 - 10:25
делаю простой пример принимает число и возврашает 100+число.

    [Guid("8C034F6A-1D3F-4DB8-BC99-B73873D8C297")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    [ComVisible(true)]
    [ProgId("AddIn.TestCalc")]

    public class Calculator
    {
        public int Sum(int a, int b)
        {
            return a + b;
        }
    }

регистрирую c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe ".\TestCompCalc.dll" /tlb

в конфигураторе:

      ПодключитьВнешнююКомпоненту("AddIn.TestCalc");
      ExtComponent = Новый COMОбъект("AddIn.TestCalc");
      Сообщить(ExtComponent.FName());

и выходит вот это -2147024894(0x80070002): The system cannot find the file specified.

перепробовал разные шаблоны и т.д.

может у кого поможет?
   УдавВПопугаях
 
1 - 05.11.20 - 10:27
в нэте много примеров
   Sobir18
 
2 - 05.11.20 - 10:28
перепробовал все. уже в гугле страницы закончились
   УдавВПопугаях
 
3 - 05.11.20 - 10:29
ну и регистрировать через регасм, по-моему муторно, на клиенте может не быть фреймворка, я делал через библиотеку и инсталлер
   Sobir18
 
4 - 05.11.20 - 10:31
можно поподробнее. чукча начинающий
   УдавВПопугаях
 
5 - 05.11.20 - 10:33
   arsik
 
6 - 05.11.20 - 10:33
Кто то еще делает COM компоненты? Это ж моветон.
   Дык ё
 
7 - 05.11.20 - 10:33
(0) а нафига компонента, если все равно Новый COMОбъект?
   УдавВПопугаях
 
8 - 05.11.20 - 10:34
(6) ну может по-другому не получается
   Sobir18
 
9 - 05.11.20 - 10:35
   УдавВПопугаях
 
10 - 05.11.20 - 10:36
да и в большинстве случаев да, по-другому тупо не получается, вот когда 1С добавит к себе возможности работы с сетью, портами, оборудованием, тогда и будет моветон
   Sobir18
 
11 - 05.11.20 - 10:36
(8) мне для оборудовния и нужно
   УдавВПопугаях
 
12 - 05.11.20 - 10:40
в (0) на какой строке ошибка появляется?
   arsik
 
13 - 05.11.20 - 10:41
(10) Я про другое. Зачем COM? Почему не native?
   УдавВПопугаях
 
14 - 05.11.20 - 10:42
подключить компоненту не нужно

ExtComponent = Новый COMОбъект("AddIn.TestCalc");
Сообщить(ExtComponent.FName());

что то в классе не видно FName(), sum есть
   УдавВПопугаях
 
15 - 05.11.20 - 10:42
(13) шарп умеет?
   УдавВПопугаях
 
16 - 05.11.20 - 10:47
(13) можно пример, пруф?
   arsik
 
17 - 05.11.20 - 10:56
Тебе лучше к @Serginio обратится
   arsik
 
18 - 05.11.20 - 10:56
   УдавВПопугаях
 
19 - 05.11.20 - 11:04
я не правильно спросил. есть ли пример создания Native ВК для c#? Изначально на ИТС написано для ++, шарп возможно и сможет, но это целая история, которой надо основательно заниматься. Serginiolа я знаю, не лично, заочно, когда начинаешь искать по теме топика информацию, то полюбому попадаешь на его публикации, он много чего сделал и разработал, но это уже копание вглубь, для понимания сложную, для практического применения не всегда нужную, в большинстве случаев достаточно вызвать какую то фукнцию обращения к оборудованию, получить и обработать результат. а динамическое формирование классов NET среды из 1С - да, интересно, может где то и полезно, но в основном это лишнее
   Sobir18
 
20 - 05.11.20 - 11:05
(19) + согласен
   Sobir18
 
21 - 05.11.20 - 11:11
(14) Готов расцеловать(в хорошем смысле). сколько я угробил нервов до этого.

столько писал и обращался к народу, ты первый кто реально помог и не смотрел с высока. ))))
   УдавВПопугаях
 
22 - 05.11.20 - 11:36
(21) бывал я там тоже :))
   УдавВПопугаях
 
23 - 05.11.20 - 11:39
но надо заметить, что на этом ресурсе помогают, сначала поржут, а потом помогают)
   Sobir18
 
24 - 05.11.20 - 15:26
ещё один вопрос. в 1с  ВнешнееСобытие будет срабатывать только если ПодключитьВнешнююКомпоненту ?
(14) таким способом все методы работают без каких либо проблем, но ВнешнееСобытие 1с не срабатывает.
   oleg_km
 
25 - 05.11.20 - 15:35
(24) Ну что за каша? ВнешняяКомпонента, ВнешнееСобытие - это одна технология, COMОбъект - другая. У COMОбъектов есть свои события, но насколько я понимаю из можно повесить только на форму
   УдавВПопугаях
 
26 - 05.11.20 - 15:38
чтобы работало событие компоненту надо делать по ТехнологииРазработкиВнешнихКомпонент для 1С, кажется так называется, стоит подумать - а надо оно, событие это, может просто кнопку сделать и вызывать что надо и когда надо. и если нужно событие, то почему бы не использовать уже существующую компоненту ScanOpos например или от Ромикса http://www.x-romix.narod.ru/
   Sobir18
 
27 - 05.11.20 - 15:58
(26) технологию соблюдаю как написано тут
https://its.1c.ru/db/metod8dev#content:2691:hdoc:внешние_события
   Sobir18
 
28 - 05.11.20 - 16:02
(25) почему каша? извиняюсь если не соблюдаю терминологию
как можно подписаться в 1с на событие COMОбъекта
   Sobir18
 
29 - 06.11.20 - 14:55
может кто взглятунь на мой проект. 1с не получает запрос https://github.com/SobirASD/1cCopmonentCs

в C#        

public void TestEvent()
{
  for (int i = 0; i < 5; i++)
  {
    AsyncEvent.ExternalEvent("111", "2222", "3333");
   }
}
/// <summary>Вызов событий 1С</summary>
protected IAsyncEvent AsyncEvent;


public void Init([MarshalAs(UnmanagedType.IDispatch)] object connection)
{
 Connect1C = connection;
 StatusLine = (IStatusLine)connection;
 AsyncEvent = (IAsyncEvent)connection;
 ErrorLog = (IErrorLog)connection;
}


1c при выполнении ExtComponent.TestEvent(); пишет Object reference not set to an instance of an object.
   acht
 
30 - 06.11.20 - 15:09
(29) > кто взглятунь на мой
Там вообще что-то на эльфйском: https://a.radikal.ru/a29/2011/8d/4b8070943521.png
 
 Рекламное место пустует
   Sobir18
 
31 - 06.11.20 - 15:12
(30) видимо шрифт. ничего серьзного)))
   Дык ё
 
32 - 06.11.20 - 15:15
(29) Init не вызывается, если ты создаешь объект как comобъект, а не как объект компоненты
   acht
 
33 - 06.11.20 - 15:17
(32) Поздно. Мальчик уже создал новую тему ВнешнееСобытие (ExternalEvent) компоненты и поскакал дальше.
   Sobir18
 
34 - 06.11.20 - 15:27
(33) мальчик в панике. у него крыша едет 5 день подрять за компом. на улицу выходил раза 2 за водой и едой))))

как можно закрыть тему?



(32)  а как исправить?
   H A D G E H O G s
 
35 - 06.11.20 - 15:30
Для начала - взять нормальный ЯП.
   Sobir18
 
36 - 06.11.20 - 15:45
(35) сам не восторге от 1с. но пока такая работа
   УдавВПопугаях
 
37 - 06.11.20 - 15:48
мне вот интересно, как стыкуется это

>>>> 
ещё один вопрос. в 1с  ВнешнееСобытие будет срабатывать только если ПодключитьВнешнююКомпоненту ?
(14) таким способом все методы работают без каких либо проблем, но ВнешнееСобытие 1с не срабатывает.
>>>>
с тем что ты пример для ++ переделываешь на шарп
   acht
 
38 - 06.11.20 - 15:49
(36) А причем тут 1С?
   H A D G E H O G s
 
39 - 06.11.20 - 15:49
(36) Я про C#
   УдавВПопугаях
 
40 - 06.11.20 - 16:00
(29) чему равно AsyncEvent?
   Sobir18
 
41 - 06.11.20 - 17:18
(40) не понял
   ДедМорроз
 
42 - 07.11.20 - 17:11
У Com-объекта можно события получать ограниченно,если они описаны и можно через Attach повесить обработчик,например,в сети есть примеры с Word,но там нет буфера событий,и если 1с занята,то происходит фигня,и чаще всего падение и 1с и того,кто передает события.
По методу внешней компоненты событие помещается в буфер и будет обработано,как 1с сможет.
Можно подобным образом себе нажатие клавиши в буфер кидать и на форме ловить.
   Serginio1
 
43 - 08.11.20 - 12:05
Хочешь разобраться с ВК событиями итд смотри
Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF
http://catalog.mista.ru/1c/articles/457898/

Исходники качай отсюда
https://ru.stackoverflow.com/questions/527763/%d0%9a%d0%b0%d0%ba-%d0%b2%d1%8b%d0%b7%d0%b2%d0%b0%d1%82%d1%8c-%d0%bc%d0%b5%d1%82%d0%be%d0%b4-%d0%b8%d0%b7-c-%d0%b2-1%d0%a1/527802#527802


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.