Как написать 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
130 3 050 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Привет! В данной статье я расскажу, как вы можете создать свой 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"); //заставим компьютер говорить по-русски
КонецПроцедуры

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

 

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

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

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    206492    1133    411    

1030

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

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

8400 руб.

20.08.2024    37107    212    111    

199

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

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

16000 руб.

10.11.2023    16867    73    39    

89

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24484    65    28    

93

Инструментарий разработчика Программист 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

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

9500 руб.

17.05.2024    35489    129    53    

171

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    2072    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107894    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. akomar 458 11.09.12 13:54 Сейчас в теме
Очень интересно, спасибо.
2. Rudakov_D 236 11.09.12 15:11 Сейчас в теме
Автор напиши пожалуйста публикацию,dll которая берет на входе: папку, текущего пользователя и качество картинки, а по результату сохраняет её в указанную папку с указанным качеством скринешет с именем содержащим имя пользователя и текущую дату и время. Вот это было бы круто :), а не то иногда такое в практике требуется...
3. RainyAugust22 266 11.09.12 20:24 Сейчас в теме
akomar, спасиба.
Arch_1, "папку, текущего пользователя и качество картинки, а по результату " - не совсем понял что имелось ввиду..
4. cvmbackup 122 11.09.12 21:43 Сейчас в теме
Интересно! Обычно пишут приблуды с COM соединением от Win к 1С, а тут РЕВЕРС. Может где и пригодится! СПАСИБО!!!
5. comol 5357 12.09.12 10:05 Сейчас в теме
А в чём "Для 1С-ность" этого COM объекта? Обычный COM вроде... 2-ой курс института, в продвинутых институтах 1-ый. А вот "иллюстрированное руководство" по NativeAPI или хотя бы по "1С-ным" COM (внешние события которых 1С может обрабатывать) было бы очень в тему.
7. RainyAugust22 266 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 5357 13.09.12 16:25 Сейчас в теме
(8) Belomor, Delphi.... а оно ещё живо? И на нём даже кто-то что-то пишет? :))))
10. cvmbackup 122 14.09.12 20:15 Сейчас в теме
(9) comol, А чем Delphi XE3 хуже других средств ООП ??? По моему firemonkey поддерживает наисовременнейший интерфейс и мультиплатформенность!
11. comol 5357 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 5357 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 5357 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 5357 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 5357 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 5357 27.09.12 14:46 Сейчас в теме
(23) EmpireSer, Круто. работа нашлась... а то я как раз думал чем бы мне заняться :)
13. tazmag 20.09.12 17:30 Сейчас в теме
(8) Belomor, Спасибо, это намного интереснее
14. Kuzja_R 176 20.09.12 18:40 Сейчас в теме
(5) comol, вот здесь готовый шаблон COM ВК с поддержкой внешних событий для 1С: http://infostart.ru/public/140411/
16. comol 5357 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 266 26.09.12 11:36 Сейчас в теме
bissov, скриншот командной строки покажите
26. bissov 31 26.09.12 13:02 Сейчас в теме
Вот!!!
Прикрепленные файлы:
27. RainyAugust22 266 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 266 27.09.12 11:51 Сейчас в теме
(29) bissov, возможно погуглите по словами к примеру "microsoft speech lib russian", "text to speech russian" и т.д
32. Zas1402 20.12.12 17:36 Сейчас в теме
33. RainyAugust22 266 21.12.12 06:20 Сейчас в теме
34. jonpigo 05.03.13 15:28 Сейчас в теме
У меня выдает сообщение 1с "Класс не зарегистрирован", хотя сделал как рекомендовал RainyAugust22.вроде сделал как указано
35. mozz 149 22.07.13 11:40 Сейчас в теме
может кому нибудь и моя поделка для изучения пригодится http://infostart.ru/public/84246/
36. bayce 49 11.08.13 21:21 Сейчас в теме
А как сделать так, что бы она по русский говорила?
37. RainyAugust22 266 11.09.13 13:30 Сейчас в теме
(105) Gazza, руссифицированный speech lib найти. Как вариант от гугля попробовать, если у них интеграция есть.
38. salex2002 08.04.14 12:08 Сейчас в теме
Подскажите пожалуйста, можно ли сделать вызов DLL из 1с, которая через RemoteApp webkit запускается ?
39. azazana 80 14.10.15 16:03 Сейчас в теме
Добрый день!
Свою библиотеку на C#. Успешно зарегистрировала ее через regasm, но когда пишу в 1с " Cервис = Новый COMОбъект("AddIn.MyWraper");" Получаю ошибку: в чем может быть причина?
-2147024891(0x80070005): Access is denied.
40. RainyAugust22 266 29.10.15 07:31 Сейчас в теме
(39) azazana, Добрый день. Предполагаю требуется запустить 1С с правами администратора или повысить права пользователя под которым 1С запускается.
41. DenisSapp 20.01.16 13:38 Сейчас в теме
Подскажите пожалуйста почему не работает через ЗагрузитьВнешнююКомпоненту(".....") ?
42. RainyAugust22 266 25.01.16 09:39 Сейчас в теме
(41) DenisSapp, добрый день. Это работает только через Новый COMОбъект. Полагаю столкнулись с проблемой установки и вызове компоненты на сервере?
43. azazana 80 17.02.16 17:49 Сейчас в теме
Написала по вашему примеру свою библиотеку. На моем компьютере все работает, а на компьютере пользователя ошибка:
"Secure mode turned on. Operation is not allowed". В чем может быть дело? Не хватает каких-то прав?
44. RainyAugust22 266 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 790 18.05.16 09:33 Сейчас в теме
Михаил, огромное вам спасибо за шаблон! Всё просто и понятно, работает даже в фоновых заданиях на сервере, в отличии от ЭТОГО. До вашей публикации уже почти руки опустились, но теперь всё получилось. Делал компоненту-драйвер для мультивыгрузки на несколько весов Mettler Toledo через фоновые процессы.
46. RainyAugust22 266 18.05.16 16:20 Сейчас в теме
(45) maljaev, спасибо, рад что помогло
54. raev72ru 22.09.20 12:14 Сейчас в теме
(45) Брат программист, расскажи как ты смог на сервере создать COM объект? У меня на клиенте работает, а на сервере выдает ошибку.
Прикрепленные файлы:
55. maljaev 790 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 60 30.06.22 10:00 Сейчас в теме
спасибо !!
ОЧЕНЬ полезная статья,
отличная шпаргалка/шаблон для разаработки.
сделать бы com - компоненту для AES шифрования строки ( в сети не нашел),
чтобы без zip файла шифровать.
58. Nx6600 25 05.09.22 18:02 Сейчас в теме
(57) наверное могу под заказ
59. vit59 60 06.09.22 07:39 Сейчас в теме
добрый день
спасибо ))
ваша публикация помогла мне разобраться и сделать AES через com
ссылка - https://infostart.ru/public/1718010/
Оставьте свое сообщение