Как написать COM-объект для 1С на Visual Studio C# 2008

11.07.18

Разработка - Инструментарий разработчика

Расширяем функционал 1С с помощью разработки подключаемого COM-объекта! Пишем код на Visual C# 2008 для открытия CD-ROM'а, получения списка процессов и использования возможностей системы text-to-speech.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
HowToComObjectFor1C.rar
.rar 286,89Kb
129
129 Скачать (5 SM) Купить за 3 050 руб.

Привет! В данной статье я расскажу, как вы можете создать свой COM-объект для 1С с помощью Visual C# 2008.

Для этого на понадобится собственно сам Microsoft Visual Studio 2008 с предустановленным .NET Framework 3.5, 1С Предприятие 8.2 и желание :-)

Начнем с того что запустим Microsoft Visual Studio 2008 от имени администратора, делается это так правой кнопкой по ярлыку(рис.1 ):

рис.1

 

Далее создадим новый проект File->New->Project, выбираем Class Library(рис.2)

рис.2

Студия сформирует шаблон класса следующего содержания:

рис.3

Удаляем все пишем заново код приведенный ниже:

        //1. подключаем необходимые пространства имен
        using System;
        using System.Text;
        using System.Runtime.InteropServices;
        using SpeechLib;

  
        //2. описываем наше пространство имен, собственно так и будет называется наш COM-объект
        namespace HowToComObjectFor1C
        {
        //3. объявляем интерфейс для класса, создаем GUID с помощью утилиты "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\guidgen.exe" поясняю, запускаем утилиту устанавливаем значение на п.4 нажимаем Copy переносим в наш код:

рис.4


        [Guid("6844AACB-9194-46bf-81AF-9DA73EE687DC")]
        internal interface IMyClass
        {
            [DispId(1)]
            //4. описываем методы которые можно будет вызывать из вне
            string PrintIn1C(string mymessage);
            void OpenCD(bool MyParam);
            string GetAllSystemProcess();
            void SpeakVoice(string SpeakText);
        }

        //5. определим интерфейс для COM-событий(GUID получаем и записываем с помощью утилиты guidgen.exe)
        [Guid("70DD7E62-7D82-4301-993C-B7D919430990"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
        public interface IMyEvents
        {
        }

        //6. описываем класс реализующий интерфейсы(GUID получаем и записываем с помощью утилиты guidgen.exe)
        [Guid("69EE0677-884A-4eeb-A3BD-D407844C0C70"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]
        public class MyClass : IMyClass //название нашего класса MyClass
        {
            string StringProcess; //строковая переменная для функции ниже
            [DllImport("winmm.dll")] //подключаем dll для процедуры ниже
            static extern Int32 mciSendString(String command, StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
            //простенькая функция которая вернет строку в 1С которую мы также пошлем из 1С, можете написать ей Hello World к примеру
            public string PrintIn1C(string mymessage)   
            {
                return mymessage;
            }
            //процедура для открытия/закрытия CD-ROM'а из 1С ;-)
            public void OpenCD(bool MyParam)
            {
                if (MyParam)
                {
                    mciSendString("set CDAudio door open", null, 0, IntPtr.Zero);
                }
                else
                    mciSendString("set CDAudio door closed", null, 0, IntPtr.Zero);
            }
            //получаем список процессов и передаем 1С
            public string GetAllSystemProcess()
            {
                foreach (System.Diagnostics.Process winProc in System.Diagnostics.Process.GetProcesses())
                {  
                    StringProcess = StringProcess + "\r\n Process " + winProc.Id + ": " + winProc.ProcessName;
                }
                return StringProcess;
            }
            //кое-что поинтересней процедура для вызова "говорящего компьютера" передаем ей текст, а она нам голосом!:)
            public void SpeakVoice(string SpeakText)
            {
                SpVoice voice = new SpVoice();
                voice.Speak(SpeakText, SpeechVoiceSpeakFlags.SVSFDefault);
            }   
        }
        }

 

Теперь когда код написан, нужно в свойствах проекта

рис.5

включить галочку Register for COM interop на закладке Build.

рис.6

Подписать сборку уникальными именем (StrongName). На закладке свойств проекта: Properties - Signing - Sign the Assembly - далее, нужно указать имя файла ключа. Пароль указывать не обязательно. Будет автоматически создан файл *.snk, в данном случае, было указано имя ComObjectFor1C.snk

рис.7

В файле AssemblyInfo.cs нужно указать параметр, содержащий имя файла подписи и параметр ComVisible установить true:

рис.8

Чуть не забыли добавить в проект расширение SpeechLib для "говорилки", правой кнопкой по проекту Add Reference...

рис.9

Приступим к компиляции, установим Solution Configuration значение Release, далее меню Build->Build Solution и в результате чего в папке проекта  bin\Release получим библиотеку *.dll готовую для регистрации в системе как COM-объект. 

рис.10

Зарегистрировать в системе библиотеку с помощью утилиты regasm.exe, которая находится по умолчанию в папке "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe". Удобнее это делать через Visual Studio 2008 Command Prompt(можно найти в "Пуске") запускаем а админискими правами, набираем:

c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>regasm "C:\Users\UserName\Documents\Visual Studio 2008\Projects\HowToComObjectFor1C\HowToComObjectFor1C\bin\Release\HowToComObjectFor1C.dll" /codebase

 

или через CMD

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe "C:\Users\UserName\Documents\Visual Studio 2008\Projects\HowToComObjectFor1C\HowToComObjectFor1C\bin\Release\HowToComObjectFor1C.dll" /codebase
 

совсем ленивые могут запустить батник RegDLL.bat в приложении к публикации.

Если видим сообщение "Типы успешно зарегистрированы" значит все COM-объект зарегистирован.

Переходим к любимой 1С, создаем новую внешнюю обработку на форме по кнопке выполнить пишем:

Процедура КнопкаВыполнитьНажатие(Кнопка)
     МойОбъект = Новый COMОбъект("HowToComObjectFor1C.MyClass");
     Сообщить(МойОбъект.PrintIn1C("Hello from Com-object;)"));
     МойОбъект.OpenCD(Истина);  //открыть CD-ROM, параметр ложь соотвественно закроет его
     Сообщить(МойОбъект.GetAllSystemProcess());
     МойОбъект.SpeakVoice("My оn Ass Chess Knock Pale Man what can i do Yellow blue bus"); //заставим компьютер говорить по-русски
КонецПроцедуры

Теперь остается запустить обработку увидеть результат и прослушать речь про любовь компьютера к майонезу, чесноку, пельменям и водке:)

 

Вот и все ребят!  Буду рад вашему плюсу к статье.

Все примеры описанные в публикации вы можете найти в архиве в приложении.

 

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159339    872    399    

861

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7755    55    22    

66

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23417    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10406    36    20    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15385    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    187964    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17298    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7692    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. akomar 458 11.09.12 13:54 Сейчас в теме
Очень интересно, спасибо.
2. Rudakov_D 231 11.09.12 15:11 Сейчас в теме
Автор напиши пожалуйста публикацию,dll которая берет на входе: папку, текущего пользователя и качество картинки, а по результату сохраняет её в указанную папку с указанным качеством скринешет с именем содержащим имя пользователя и текущую дату и время. Вот это было бы круто :), а не то иногда такое в практике требуется...
3. RainyAugust22 265 11.09.12 20:24 Сейчас в теме
akomar, спасиба.
Arch_1, "папку, текущего пользователя и качество картинки, а по результату " - не совсем понял что имелось ввиду..
4. cvmbackup 122 11.09.12 21:43 Сейчас в теме
Интересно! Обычно пишут приблуды с COM соединением от Win к 1С, а тут РЕВЕРС. Может где и пригодится! СПАСИБО!!!
5. comol 5107 12.09.12 10:05 Сейчас в теме
А в чём "Для 1С-ность" этого COM объекта? Обычный COM вроде... 2-ой курс института, в продвинутых институтах 1-ый. А вот "иллюстрированное руководство" по NativeAPI или хотя бы по "1С-ным" COM (внешние события которых 1С может обрабатывать) было бы очень в тему.
7. RainyAugust22 265 12.09.12 12:11 Сейчас в теме
(5) comol, (6) sertrain, именно как пример, я подумал что ограничиваться лишь "Hello world!" довольно скучно, а так повеселее и методы класса довольно просты. Практическое использование зависит от фантазии самого разработчика :-D
8. Belomor 111 12.09.12 16:42 Сейчас в теме
(5) comol, на Delphi тут лежит пример NativeAPI http://infostart.ru/public/88060/
9. comol 5107 13.09.12 16:25 Сейчас в теме
(8) Belomor, Delphi.... а оно ещё живо? И на нём даже кто-то что-то пишет? :))))
10. cvmbackup 122 14.09.12 20:15 Сейчас в теме
(9) comol, А чем Delphi XE3 хуже других средств ООП ??? По моему firemonkey поддерживает наисовременнейший интерфейс и мультиплатформенность!
11. comol 5107 14.09.12 20:23 Сейчас в теме
(10) cvmbackup, Да про delphi я не говорю вообще - оно хуже по определению... только потому что в основе Pascal с его защитной типизацией. А это досвидос полиморфизм, виртуальные ф-ции и прочие прелести.
В своё время достаточно много народу писали на глючном и тормознутом C++ Builder-e, потому как у MS было только VS6, в котором почти полностью отсутствовало IDE, а QT ещё было в зародыше.... Потом у MS появился пусть и не менее тормознутый, но гораздо более безглючный C# уже с user-friendly IDE (да такой что дальше некуда). И где сейчас на рынке место Delphi вообще непонятно...
12. EmpireSer 15.09.12 02:56 Сейчас в теме
(11) comol, В моей конторе пишут на Delphi XE.
И полиморфизм и перегрузка операций и виртуальные функции и кучи ещё прелестей (атрибуты, хелперы, генерики, полный rtti всего и вся и т.п.). И ещё x64 в XE2. И поддержка MacOS и iOS (хотя не нативная по сути).
Да это не С++. Но если его покупают (а покупают не только из-за поддержки, т.к. и Delphi 7 и ниже нормально работают) - то значит кому-то нужен. А если его ещё и развивают - значит нужен он не такому уж маленькому количеству людей (Для Embarcadero он ещё приносит прибыть). Я тоже думал что он практически умер, а пришёл в эту контору и приятно удивился.

(10) cvmbackup, Ну FireMonkey я бы ещё не рекламировал... Мой начальник при выходе XE3 его поставил и попытался использовать их демку с FireMonkey. Ну что сказать - проект в метро интерфейсе запустился, а закрыться не смог. Пришлось убивать процесс. Вот и FireMonkey 2...

(7) А неужели кто-то задавал вопросы про COM на C#? Я, до этого, полагал, что это в Visual Studio сделать может почти каждый.
15. comol 5107 21.09.12 00:46 Сейчас в теме
(12) EmpireSer, Безусловно кому-то нужен и не такому маленькому количеству людей. Студентов ведь много ещё пока :). Блин... вот прямо заинтриговали... как можно было умудриться к паскалю (!!!) прикрутить полиморфизм (!!!!). Это по-моему всё равно что на 1С движок для 3D игр писать :))).
17. EmpireSer 21.09.12 04:31 Сейчас в теме
(15) comol, Я что-то не понял почему полиморфизм это не для Delphi (не для паскаля, а именно для Delphi (а он официально язык)) ? Я тут вообще проблемы не вижу и не видел (ну на Delphi 7 его, в полной мере, реализовать сложнее...)
Да и 3D на нём уже пишут :Р FireMonkey реализует его как раз.
У каждого языка своя специфика и, как говорят умные люди, нужно не только пытаться использовать, для решения задачи, то, что лучше всего подходит, но и то, что лучше всего знает команда :)))

(16) comol, А вот я не видел шаблона как подружить 1С и Java. Или Python или Perl или Ruby. А вот как подружить 1С и PHP я уже, случайно, узнал. Если будет время - сделаю компоненту (конечно там будет через "костыль", но всё же работать, думаю, будет).
18. comol 5107 21.09.12 22:49 Сейчас в теме
(17) EmpireSer, Я уже к счастью плохо помню паскаль... но помню что с указателями жесть... если в C++ воспринимаешь как ссылку на область памяти, то в паскале преобразуешь к типу обязательно, не можешь записать больше чем объявил, не можешь выполнять операции ну и прочая другая чушь.
Потом каким то хитрым образом в паскаль ввернули ООП и появился Delphi, вроде и с типизацией стало чуть получше, хотя не уверен.
Особенно долго я матерился когда понял в своё время что STL в паскале не было, нет и быть не может... А кто на C++ без STL писал в последнее время? Думаю единицы...


О да... Java 1С Вот уж точно не хватало... чтобы пользователь наверняка успевал заснуть пока приложение запустится :).
19. EmpireSer 22.09.12 13:41 Сейчас в теме
(18) comol, Простите, но у Вас слишком предвзятое отношение.
Если делать глупые программные ошибки, то и С++ и чистый С не спасут от ужасного расхода памяти и тактов процессора.
Я рад, что сообщество создаёт возможность применения в 1С любой ВК на любом языке и так же в любом языке использовать данные из 1С.

STL, Boost - это библиотеки. Для Delphi есть JEDI - очень классная библиотека, в которой можно найти тоже самое и даже больше. Думаю, и в других языках тоже создали развитые библиотеки. Просто это не входит сразу в поставку. Вспомните - когда-то STL и Boost тоже не были в стандарте.

Вот я лучше напишу на С#, на Delphi, на Java или на PHP то, что нужно, чем со своими скудными знаниями напишу это на С++. Меня намного меньше будут, за мои творения, "бить" :))))
20. comol 5107 22.09.12 22:17 Сейчас в теме
(19) EmpireSer, ээээ... STL библиотека шаблонов... В паскале я как то шаблонов не встречал... А Delphi VCL это отдельная история до сих пор удивляюсь приложениям которые открывают окошко и при этом с ними поставляется файлик мегабайт на 10... :)

Я не говорю про C++ с ним Delphi сравнивать не правильно... разные цели. Я про C#,с появлением которого у MS появилась нормальная IDE, и Delphi лишилось того преимущества, которое держало с ним кучу разработчиков..
21. EmpireSer 23.09.12 00:37 Сейчас в теме
(20) comol, самое интересное, что JEDI JCL тоже имеет шаблоны :)) они просто там в виде специальных комментария, который вызовом bat файла превращаются в код. Кастыль, но хоть что-то :)))

А С# - это умное решение. Оно лишает язык лишних сложностей, тем самым уменьшая порог вхождения в него. По сути также сделали и в 1С со своим языком :)))

А Delphi утратило своих позиций из-за провалов маркетинга, планов развития и т.п., из-за чего кучи языков (развитие которых зависит от определённой компании) теряли позиции. А Microsoft лишь этим воспользовались :))))
22. comol 5107 24.09.12 10:30 Сейчас в теме
(21) EmpireSer, Ну так я и в 1С поддержку шаблонов сделаю :)) комментарии батниками разбирая :)...
Да delphi утратили свои позиции когда перестали быть "монополистом" на IDE. Либо нужно было вложиться и переработать тот же C++ Builder до нормальной полноценной среды, либо... остаться там же где и был...
23. EmpireSer 24.09.12 23:00 Сейчас в теме
(22) comol, отличная идея! Когда сделаешь? (шаблоны в 1С)
А то мне очень не хватает в 1С классов, генериков и т.п.

Так что буду с нетерпением ждать реализации ;-)
31. comol 5107 27.09.12 14:46 Сейчас в теме
(23) EmpireSer, Круто. работа нашлась... а то я как раз думал чем бы мне заняться :)
13. tazmag 20.09.12 17:30 Сейчас в теме
(8) Belomor, Спасибо, это намного интереснее
14. Kuzja_R 172 20.09.12 18:40 Сейчас в теме
(5) comol, вот здесь готовый шаблон COM ВК с поддержкой внешних событий для 1С: http://infostart.ru/public/140411/
16. comol 5107 21.09.12 00:49 Сейчас в теме
(14) Kuzja_R, Шаблон это не проблема... они уже давно есть.. а вот какой-нить мануальчик если бы для людей как здесь подробный написали... "великое дело" было бы (так то события сделать, так то обрабатывать, так параметры передавать, такие то требования к параметрам и т.п.)...
6. sertrain 12.09.12 10:13 Сейчас в теме
Я думаю была задача сделать пример, а не что то готовое к использованию.
24. bissov 31 26.09.12 10:51 Сейчас в теме
Пытался зарегестирировать всеми описанными способами и свою и авторскую с заменой guid пишет что не удается найти входную сборку или одну из ее зависимых сборок что это может быть?
25. RainyAugust22 265 26.09.12 11:36 Сейчас в теме
bissov, скриншот командной строки покажите
26. bissov 31 26.09.12 13:02 Сейчас в теме
Вот!!!
Прикрепленные файлы:
27. RainyAugust22 265 26.09.12 14:11 Сейчас в теме
(26) bissov,
ошибка связана с тем что в папке \bin\Release нет файла HowToComObjectFor1C.dll или что-то с путями намудрили. В общем сделайте так:
скопируйте HowToComObjectFor1C.dll в C:\Windows\system32
затем в командной строке(с админ. правами) пропишите:
cd "C:\Windows\system32"
regasm HowToComObjectFor1C.dll /codebase

ps. через regsvr зарегать не получится т.к это net компонента
rbintespro; Boroda444; bissov; +3 Ответить
28. bissov 31 26.09.12 14:42 Сейчас в теме
Спасибо зарегестрировал и все работает!!!
29. bissov 31 27.09.12 08:16 Сейчас в теме
А есть ли функция которая кирилицу тоже озвучивает? ну русские слова...
30. RainyAugust22 265 27.09.12 11:51 Сейчас в теме
(29) bissov, возможно погуглите по словами к примеру "microsoft speech lib russian", "text to speech russian" и т.д
32. Zas1402 20.12.12 17:36 Сейчас в теме
33. RainyAugust22 265 21.12.12 06:20 Сейчас в теме
34. jonpigo 05.03.13 15:28 Сейчас в теме
У меня выдает сообщение 1с "Класс не зарегистрирован", хотя сделал как рекомендовал RainyAugust22.вроде сделал как указано
35. mozz 148 22.07.13 11:40 Сейчас в теме
может кому нибудь и моя поделка для изучения пригодится http://infostart.ru/public/84246/
36. bayce 47 11.08.13 21:21 Сейчас в теме
А как сделать так, что бы она по русский говорила?
37. RainyAugust22 265 11.09.13 13:30 Сейчас в теме
(105) Gazza, руссифицированный speech lib найти. Как вариант от гугля попробовать, если у них интеграция есть.
38. salex2002 08.04.14 12:08 Сейчас в теме
Подскажите пожалуйста, можно ли сделать вызов DLL из 1с, которая через RemoteApp webkit запускается ?
39. azazana 78 14.10.15 16:03 Сейчас в теме
Добрый день!
Свою библиотеку на C#. Успешно зарегистрировала ее через regasm, но когда пишу в 1с " Cервис = Новый COMОбъект("AddIn.MyWraper");" Получаю ошибку: в чем может быть причина?
-2147024891(0x80070005): Access is denied.
40. RainyAugust22 265 29.10.15 07:31 Сейчас в теме
(39) azazana, Добрый день. Предполагаю требуется запустить 1С с правами администратора или повысить права пользователя под которым 1С запускается.
41. DenisSapp 20.01.16 13:38 Сейчас в теме
Подскажите пожалуйста почему не работает через ЗагрузитьВнешнююКомпоненту(".....") ?
42. RainyAugust22 265 25.01.16 09:39 Сейчас в теме
(41) DenisSapp, добрый день. Это работает только через Новый COMОбъект. Полагаю столкнулись с проблемой установки и вызове компоненты на сервере?
43. azazana 78 17.02.16 17:49 Сейчас в теме
Написала по вашему примеру свою библиотеку. На моем компьютере все работает, а на компьютере пользователя ошибка:
"Secure mode turned on. Operation is not allowed". В чем может быть дело? Не хватает каких-то прав?
44. RainyAugust22 265 18.02.16 06:41 Сейчас в теме
(43) azazana, у пользователя администраторские права на компьютере? Если нет, решите проблему с сис. администраторами или дайте пользователю админские права на его компе Не исключено что блокировка может появляться из-за антивируса или подобного ПО. Проверьте стоит ли пункт DEP(Win7): Мой компьютер - Свойства системы - Дополнительно -Быстродействие -Предотвращение выполнения данных - Включить DEP только для основных программ и служб.
Еще особенность 64тный платформе, нужно дополнительно вручную регать компоненту почитайте тут мне помогло с win2008: 1clancer.ru/article/osobennosti_raboty_s_com-obektami_na_64-bitnoj_platforme_1s_predpriyatie_8.2_847
45. maljaev 789 18.05.16 09:33 Сейчас в теме
Михаил, огромное вам спасибо за шаблон! Всё просто и понятно, работает даже в фоновых заданиях на сервере, в отличии от ЭТОГО. До вашей публикации уже почти руки опустились, но теперь всё получилось. Делал компоненту-драйвер для мультивыгрузки на несколько весов Mettler Toledo через фоновые процессы.
46. RainyAugust22 265 18.05.16 16:20 Сейчас в теме
(45) maljaev, спасибо, рад что помогло
54. raev72ru 22.09.20 12:14 Сейчас в теме
(45) Брат программист, расскажи как ты смог на сервере создать COM объект? У меня на клиенте работает, а на сервере выдает ошибку.
Прикрепленные файлы:
55. maljaev 789 22.09.20 16:42 Сейчас в теме
(54) А ты библиотеку RegAsm-ом на сервере зарегистрировал? Ну или как ниже предлагали, через макет. Возможно с битностью проблемы, я под x32 компилил.
К сожалению, исходники я сейчас не найду, это было 4 года назад на другой работе.
56. raev72ru 24.09.20 05:58 Сейчас в теме
(55) Получилось благодаря 2 процедурам https://infostart.ru/public/510893/ и добавлением его в компоненты вручную
47. user1036472 22.08.18 08:33 Сейчас в теме
Пожалуйста, подскажите. У меня есть COM-библиотека(hybrid.dll) написанная на C++. В ней внутри есть список констант:
enum DECLSPEC_UUID("****") COLOR
{ green = 0x1,
black = 0x2,
blue = 0x3
};

Вопрос. Как в PHP можно работать с такими константами (как мне вызвать этот список)?

Пробовал вот так:
$PHP_LIB = new COM("HybridLib.HybridCOM") ;
$PHP_LIB -> COLOR("green"); и так: $PHP_LIB -> COLOR->green; и так: $PHP_LIB -> COLOR::green;

Никак не получилось. Всегда ошибку выводит.




В C# это делается вот так:
Green = HybridCOMLib.СOLOR.GREEN;

А в PHP не знаю(
48. Kazey 02.11.18 05:04 Сейчас в теме
Огромное спасибо за эту статью! Очень помогла.

От себя, могу дополнить одним моментом:
Чтобы не регистрировать через regasm, надо добавить полученную сборку в макет 1С, в виде двоичных данных.
Тогда, эту сборку можно вызывать прямо из конфигурации, исключительно средствами встроенного языка:

	СсылкаНаАрхив  = ПоместитьВоВременноеХранилище(ПолучитьМакет("Макет"), Новый УникальныйИдентификатор);
	ПодключитьВнешнююКомпоненту(СсылкаНаАрхив, "MyClass", ТипВнешнейКомпоненты.COM);


Далее можно создавать Com-объект, как вы и написали выше:

        
         МойОбъект = Новый COMОбъект("HowToComObjectFor1C.MyClass");
Sergey_Borisovi4; starponyx; maljaev; +3 Ответить
49. bamblbi 04.04.19 16:45 Сейчас в теме
(48) Очень интересно, а по подробней можно?
50. bamblbi 04.04.19 17:30 Сейчас в теме
Вот я зарегистрировал свою dll в виде COM, и теперь мне понадобилось что то изменить. Как перезарегистрировать свой COM ?
51. bamblbi 04.04.19 18:04 Сейчас в теме
(50)Вопрос отпал нужно отменить регистрацию ключем /unregister, перекомпилировать проект и опять зарегистрировать с ключем /codebase.
starponyx; +1 Ответить
52. Nickolas 10.05.19 10:45 Сейчас в теме
Помогите разобраться! все сделал как написано выше, зарегистрировал и т.п., но при попытке в 1С вызвать конструктор Com объекта выдает ошибку

-2147221005(0x800401F3): Недопустимая строка с указанием класса
53. Nickolas 22.05.19 02:25 Сейчас в теме
(52) проблема решена: билдил библиотеку под 64бит, 1С (64бит) отказывалась ее кушать, под x86 все норм
starponyx; +1 Ответить
57. vit59 59 30.06.22 10:00 Сейчас в теме
спасибо !!
ОЧЕНЬ полезная статья,
отличная шпаргалка/шаблон для разаработки.
сделать бы com - компоненту для AES шифрования строки ( в сети не нашел),
чтобы без zip файла шифровать.
58. Nx6600 24 05.09.22 18:02 Сейчас в теме
(57) наверное могу под заказ
59. vit59 59 06.09.22 07:39 Сейчас в теме
добрый день
спасибо ))
ваша публикация помогла мне разобраться и сделать AES через com
ссылка - https://infostart.ru/public/1718010/
Оставьте свое сообщение