Имя: Пароль:
1C
1С v8
шаблон внешней компоненты C#
0 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
в нэте много примеров
2 Sobir18
 
05.11.20
10:28
перепробовал все. уже в гугле страницы закончились
3 УдавВПопугаях
 
05.11.20
10:29
ну и регистрировать через регасм, по-моему муторно, на клиенте может не быть фреймворка, я делал через библиотеку и инсталлер
4 Sobir18
 
05.11.20
10:31
можно поподробнее. чукча начинающий
5 УдавВПопугаях
 
05.11.20
10:33
6 arsik
 
гуру
05.11.20
10:33
Кто то еще делает COM компоненты? Это ж моветон.
7 Дык ё
 
05.11.20
10:33
(0) а нафига компонента, если все равно Новый COMОбъект?
8 УдавВПопугаях
 
05.11.20
10:34
(6) ну может по-другому не получается
9 Sobir18
 
05.11.20
10:35
10 УдавВПопугаях
 
05.11.20
10:36
да и в большинстве случаев да, по-другому тупо не получается, вот когда 1С добавит к себе возможности работы с сетью, портами, оборудованием, тогда и будет моветон
11 Sobir18
 
05.11.20
10:36
(8) мне для оборудовния и нужно
12 УдавВПопугаях
 
05.11.20
10:40
в (0) на какой строке ошибка появляется?
13 arsik
 
гуру
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) можно пример, пруф?
17 arsik
 
гуру
05.11.20
10:56
Тебе лучше к @Serginio обратится
18 arsik
 
гуру
05.11.20
10:56
19 УдавВПопугаях
 
05.11.20
11:04
я не правильно спросил. есть ли пример создания Native ВК для c#? Изначально на ИТС написано для ++, шарп возможно и сможет, но это целая история, которой надо основательно заниматься. Serginiolа я знаю, не лично, заочно, когда начинаешь искать по теме топика информацию, то полюбому попадаешь на его публикации, он много чего сделал и разработал, но это уже копание вглубь, для понимания сложную, для практического применения не всегда нужную, в большинстве случаев достаточно вызвать какую то фукнцию обращения к оборудованию, получить и обработать результат. а динамическое формирование классов NET среды из 1С - да, интересно, может где то и полезно, но в основном это лишнее
20 Sobir18
 
05.11.20
11:05
(19) + согласен
21 Sobir18
 
05.11.20
11:11
(14) Готов расцеловать(в хорошем смысле). сколько я угробил нервов до этого.

столько писал и обращался к народу, ты первый кто реально помог и не смотрел с высока. ))))
22 УдавВПопугаях
 
05.11.20
11:36
(21) бывал я там тоже :))
23 УдавВПопугаях
 
05.11.20
11:39
но надо заметить, что на этом ресурсе помогают, сначала поржут, а потом помогают)
24 Sobir18
 
05.11.20
15:26
ещё один вопрос. в 1с  ВнешнееСобытие будет срабатывать только если ПодключитьВнешнююКомпоненту ?
(14) таким способом все методы работают без каких либо проблем, но ВнешнееСобытие 1с не срабатывает.
25 oleg_km
 
05.11.20
15:35
(24) Ну что за каша? ВнешняяКомпонента, ВнешнееСобытие - это одна технология, COMОбъект - другая. У COMОбъектов есть свои события, но насколько я понимаю из можно повесить только на форму
26 УдавВПопугаях
 
05.11.20
15:38
чтобы работало событие компоненту надо делать по ТехнологииРазработкиВнешнихКомпонент для 1С, кажется так называется, стоит подумать - а надо оно, событие это, может просто кнопку сделать и вызывать что надо и когда надо. и если нужно событие, то почему бы не использовать уже существующую компоненту ScanOpos например или от Ромикса http://www.x-romix.narod.ru/
27 Sobir18
 
05.11.20
15:58
(26) технологию соблюдаю как написано тут
https://its.1c.ru/db/metod8dev#content:2691:hdoc:внешние_события
28 Sobir18
 
05.11.20
16:02
(25) почему каша? извиняюсь если не соблюдаю терминологию
как можно подписаться в 1с на событие COMОбъекта
29 Sobir18
 
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.
30 acht
 
06.11.20
15:09
(29) > кто взглятунь на мой
Там вообще что-то на эльфйском: https://a.radikal.ru/a29/2011/8d/4b8070943521.png
31 Sobir18
 
06.11.20
15:12
(30) видимо шрифт. ничего серьзного)))
32 Дык ё
 
06.11.20
15:15
(29) Init не вызывается, если ты создаешь объект как comобъект, а не как объект компоненты
33 acht
 
06.11.20
15:17
(32) Поздно. Мальчик уже создал новую тему ВнешнееСобытие (ExternalEvent) компоненты и поскакал дальше.
34 Sobir18
 
06.11.20
15:27
(33) мальчик в панике. у него крыша едет 5 день подрять за компом. на улицу выходил раза 2 за водой и едой))))

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



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

>>>>
ещё один вопрос. в 1с  ВнешнееСобытие будет срабатывать только если ПодключитьВнешнююКомпоненту ?
(14) таким способом все методы работают без каких либо проблем, но ВнешнееСобытие 1с не срабатывает.
>>>>

с тем что ты пример для ++ переделываешь на шарп
38 acht
 
06.11.20
15:49
(36) А причем тут 1С?
39 H A D G E H O G s
 
06.11.20
15:49
(36) Я про C#
40 УдавВПопугаях
 
06.11.20
16:00
(29) чему равно AsyncEvent?
41 Sobir18
 
06.11.20
17:18
(40) не понял
42 ДедМорроз
 
07.11.20
17:11
У Com-объекта можно события получать ограниченно,если они описаны и можно через Attach повесить обработчик,например,в сети есть примеры с Word,но там нет буфера событий,и если 1с занята,то происходит фигня,и чаще всего падение и 1с и того,кто передает события.
По методу внешней компоненты событие помещается в буфер и будет обработано,как 1с сможет.
Можно подобным образом себе нажатие клавиши в буфер кидать и на форме ловить.
43 Serginio1
 
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
Закон Брукера: Даже маленькая практика стоит большой теории.