С Новым годом! Форум программистов, компьютерный форум, киберфорум
1С: Администрирование и интеграция
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
1C 8.x

C# DLL d 1c

30.05.2015, 08:41. Показов 5487. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
COM библиотека. Зарегистрировал с помощью regasm, все прошло успешно, в регистре она тоже есть, но когда пытаюсь использовать в 1с пишет:
{Обработка.РаботаСМетками.Форма.Форма.Фо рма(3)}: Ошибка при вызове конструктора (COMОбъект)
МойОбъект = Новый COMОбъект("COMRFID.RFID");
по причине:
-2147024894(0x80070002): Не удается найти указанный файл.

Почему так? Что я делаю не так?

1C
1
2
3
4
5
6
7
Процедура ЧтениеМеток(Команда)
    МойОбъект = Новый COMОбъект("COMRFID.RFID");
    МойОбъект.StartReading();
    Объект.Метки = МойОбъект.GetAllTags();
    МойОбъект.StopReading();
    МойОбъект.DisconnectFromReader();  
    КонецПроцедуры
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2015, 08:41
Ответы с готовыми решениями:

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями?
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Затупил, скажите где взять libmysqld.dll, libmysqld50.dll, libmysqld51.dll
Вечер добрый, ставлю ZEOS на Delphi 7, и для нормальной работы нужны файлы libmysqld.dll, libmysqld50.dll, libmysqld51.dll. Но я нигде...

16
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
01.06.2015, 14:20
Цитата Сообщение от V0vchik Посмотреть сообщение
COMRFID.RFID
Что это?

Обычно COM реализовывается в dll
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
02.06.2015, 10:03  [ТС]
Dethmontt, COMRFID это сама библиотека, а RFID это класс. Сама библиотека зарегистрирована через regasm и в регистре я ее вижу, но вызвать функционал не могу.

Добавлено через 3 часа 27 минут
Как вообще должна быть написана библиотека чтоб можно было ее вызывать из 1с? Guid присвоил, ProgID тоже, COM Visible включил, подписал strong name, не работает и все
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
03.06.2015, 00:22
Для C#
<namespace>.<Class>

Добавлено через 23 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace Hello1C_
{
 
    [Guid("66F9DF27-2924-48BA-A4EC-F5F4E40484BB")]
    internal interface IMyClass
    {
        [DispId(1)]
        //описываем методы которые можно будет вызывать из вне
        string GetString_();
    }
 
   [Guid("3187FC44-C0AC-4D11-89AB-C3D09B70AB47"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IMyEvents //для событий
    {
    }
 
    [Guid("27E78B9F-AAFE-48DD-8BB7-4D402E5F3BEE"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]
        public class MyClass : IMyClass 
 
    {
        public string GetString_()
        {       
            return "Hello world ВК";
        }
    } 
 
}
1C
1
My_VK = New COMObject("Hello1C_.MyClass")
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
03.06.2015, 06:58  [ТС]
Dethmontt, не работает. Добавил изображения. Код почти тотже что и у вас:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace Hello
{
 
    [Guid("66F9DF27-2924-48BA-A4EC-F5F4E40484BB")]
    internal interface IMyClass
    {
        [DispId(1)]
        //описываем методы которые можно будет вызывать из вне
        string GetString();
    }
 
    [Guid("3187FC44-C0AC-4D11-89AB-C3D09B70AB47"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IMyEvents //для событий
    {
    }
 
    [Guid("27E78B9F-AAFE-48DD-8BB7-4D402E5F3BEE"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]
    public class MyClass : IMyClass
    {
        public string GetString()
        {
            return "Hello world ВК";
        }
    }
 
}
Миниатюры
C# DLL d 1c   C# DLL d 1c   C# DLL d 1c  

C# DLL d 1c  
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
03.06.2015, 08:07  [ТС]
Dethmontt, все с com разобрался, но счас другая проблема. На моем ноутбуке в 1с работает нормально, а на других компьютерах не вызывается. Пишет что класс не зарегистрирован. Хотя если я из JavaScript с помощью cscript все работает и в регистре она есть. В чем может быть дело?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
03.06.2015, 09:40
Зачем /tlb и /codebase при регистрации?
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
03.06.2015, 09:49  [ТС]
Dethmontt, тоже гдето это видел. codebase для регистрации в gac а tlb без понятия. Как правильно это делать? И после второй компиляции на моем ноутбуке тоже перестает работать, а если создать новый проект с абсолютно темже кодом то все работает. Как это все вообще работает никак не могу понять?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
03.06.2015, 09:56
Ну это особенности RegAsma

Добавлено через 29 секунд
Тут более подробно что и зачем нужно

https://msdn.microsoft.com/ru-... .110).aspx
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
03.06.2015, 14:22  [ТС]
Dethmontt, всеравно както непонятно почему эти dll не работают в 1с на других компьютерах. На другом компьютере зарегистрировал и через JS я могу вызывать эту библиотеку, но через 1с нет. В чем может быть дело? Может в 1с еще что-то нужно подкидывать чтоб она их подхватывала? Или куда-то именно в 1с
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
03.06.2015, 14:25
Синт. помощник 1С
COMОбъект (COMObject)
По имени приложения
Синтаксис:

Новый COMОбъект(<Имя>, <ИмяСервера>)
Параметры:

<Имя> (обязательный)

Тип: Строка.
ProgID класса COM, с которым он зарегистрирован в системе. Например, "Excel.Application".
<ИмяСервера> (необязательный)

Тип: Строка.
Имя компьютера, на котором надо создать указанный объект. Если параметр опущен, то создается на данном компьютере.
Описание:

Создает COM-объект внешнего приложения.
Пример:

Word = Новый COMОбъект("Word.Application");

V8 = Новый COMОбъект("V8.Application");
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
04.06.2015, 06:35  [ТС]
Dethmontt, все таже проблема. JS на другом компьютере вызывает эту библиотеку и без проблем ее использует а 1с говорит мне что она не зарегистрирована. ProgId использую тотже
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
04.06.2015, 07:57  [ТС]
Dethmontt,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Sdk;
 
namespace AnotherBro
{
    [Guid("BF3FB918-C643-4678-9BD9-25C7846CE328")]
    public interface ILetsDoDis
    {
        void StartReading();
        void StopReading();
        void DisconnectFromReader();
        string GetAllTags();
        void MessageTags();
    }
 
    [Guid("E436E98A-A448-4618-BB47-9A27369E2DB0"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IMyEvents
    {
    }
 
    [Guid("745C75C6-C78F-4A93-BFCE-3872339A8F36"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]
    public class LetsDoDis : ILetsDoDis
    {
        public string readerName;
        public ImpinjReader reader;
 
        //Reader special fields
        public List<string> tags;
        public static List<int> counters;
        public System.Timers.Timer timer;
        public bool readFired;
 
        //Writer special fields
        public Random random;
        public bool writeFired;
        public const ushort EPC_OP_ID = 123;
        public const ushort PC_BITS_OP_ID = 321;
 
        public LetsDoDis()
        {
            reader = new ImpinjReader();
            readerName = "speedwayr-10-E5-09";
        }
 
        public void MessageTags()
        {
            MessageBox.Show("" + GetAllTags());
        }
 
        public void StartReading()
        {
            readFired = false;
            reader.Connect(readerName);
 
            timer = new System.Timers.Timer(1000);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
 
            tags = new List<string>();
            counters = new List<int>();
 
            //Configure reader
            reader.TagsReported += OnTagsReportedReading;
            reader.ApplyDefaultSettings();
 
            reader.Start();
            timer.Start();
 
            while (!readFired)
            { }
        }
 
        public void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            readFired = true;
            for (int i = 0; i < counters.Count; i++)
            {
                counters[i]++;
            }
        }
 
        public void StopReading()
        {
            reader.Stop();
            timer.Stop();
        }
 
        public void DisconnectFromReader()
        {
            reader.Disconnect();
        }
 
        public void OnTagsReportedReading(ImpinjReader sender, TagReport report)
        {
            foreach (Tag tag in report)
            {
                if (!tags.Contains(tag.Epc.ToHexString()))
                {
                    tags.Add(tag.Epc.ToHexString());
                    counters.Add(0);
                }
                else
                {
                    counters[tags.IndexOf(tag.Epc.ToHexString())] = 0;
                }
            }
        }
 
        public string GetAllTags()
        {
            if (tags.Count < 1)
                return null;
 
            string result = "";
 
            for (int i = 0; i < tags.Count; i++)
            {
                result += tags[i] + ";";
            }
 
            return result;
        }
    }
}
Если вкратце то вызываем StartReading() -> MessageTags() -> StopReading() -> DisconnectFromReader()
MessageTags() выводит окно WinForms (MessageBox) где отображает результаты сканирования.

1C
1
2
3
4
5
6
7
Процедура ПриНачалеРаботыСистемы()
RFID = Новый COMОбъект("AnotherBro.LetsDoDis");
RFID.StartReading();
Сообщить(RFID.GetAllTags());
RFID.StopReading();
RFID.DisconnectFromReader();
КонецПроцедуры
JavaScript
1
2
3
4
5
var obj = new ActiveXObject("AnotherBro.LetsDoDis");
obj.StartReading();
obj.MessageTags();
obj.StopReading();
obj.DisconnectFromReader();
В JS работает а в 1с нет. Добавил пару скриншотов работы. Вообще не понимаю что не так.
Миниатюры
C# DLL d 1c   C# DLL d 1c  
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
05.06.2015, 13:36
Лучший ответ Сообщение было отмечено V0vchik как решение

Решение

V0vchik, база файловая?

Добавлено через 6 минут
Ну или выполняй на JS =))))

Вот пример:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
ScrptCtrl=Новый COMОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="jscript";
        ScrptCtrl.AddCode("function Eprst()
        |{
        |  var obj = new ActiveXObject(""AnotherBro.LetsDoDis"");
        |  obj.StartReading();
        |  obj.MessageTags();
        |  obj.StopReading();
        |  obj.DisconnectFromReader();
        |}
        |");
 
     ScrptCtrl.Run("Eprst");
1
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
06.06.2015, 08:27  [ТС]
Dethmontt, кажется да.
Оу а это интересное решение, спасибо)

Добавлено через 9 минут
Цитата Сообщение от Dethmontt Посмотреть сообщение
function Eprst()
Какая интересная функция
0
12 / 12 / 13
Регистрация: 06.03.2011
Сообщений: 166
07.06.2015, 09:24  [ТС]
Dethmontt, мне нужно вызывать RFID.GetAllTags() которые возвращает строку. Тут такой способ может не подойти. Можно ли в 1с из JS скрипта получить это значение?
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
07.06.2015, 23:56
V0vchik, просто так не получить!
Из скрипта на JS результат выполнения функции можно получить двумя способами
1. Записать результат в файл
2. Использовать в 1С поле HTML документа, на нем исполнять скрипт и результат читать из HTML документа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2015, 23:56
Помогаю со студенческими работами здесь

Сборка Qt: отучение Qt от mingw10.dll, libgcc_s_dw2-1.dll и других Qt***.dll
В связи с тем, что часто возникают одни и те же вопросы, а в нете копаться никто не любит привожу перевод буржуйской вики по отлучению...

Добавление своей dll в список dll подгружаемых процессом чужого процесса
Вообще вопрос такой,как можно внедрить свою dll в список Import чужого не запущенного процесса?Не изменяя структуры файла.

Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету?
Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету Что нужно , мне нужно так чтоб проверялось наличие библиотеки ...

Точка входа в процедуру EventSetInformation не найдена в библиотеке DLL advapi32.dll
Здравствуйте. Столкнулся с такой проблемой, в какой-то момент у меня просто перестал запускаться Microsoft Word. И выводит эту ошибку. ...

Точка входа в процедуру InitializeCriticalSectionEx не найдена в библиотеке DLL KERNEL32.dll
Здравствуйте, коллеги! Случилась такая вещь. Малолетний внук что-то нажимал на клаве, выключил компьютер. Сейчас при запуске выходит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru