Программирование - это просто
Advertisement
Главная arrow 1С:Предприятие arrow C# + 1C. arrow C# + 1C. Пишем простейший COM-сервер для 1С
20.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
C# + 1C. Пишем простейший COM-сервер для 1С Печать E-mail
Автор megabax   
26.05.2013 г.
Добавить ссылку на виндоуз формс

C# + 1C. Пишем простейший COM-сервер для 1С

Изучение возможности интеграции C# и 1С мы начнем с создания на C# простейшего COM сервера. Для этой цели нам понабиться Visual Studio 2010 и платформа 1C 8.2. И так, в визуал студии создаем новый проект, тип проекта выбираем "библиотека классов" (class library)*:

C# + 1C. Пишем простейший COM-сервер для 1С

У нас появиться заготовка библиотеки, куда мы введем вот такой текст (вместо существующего):

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;

using System.Windows.Forms;

 

namespace MyComFor1C

{

    [Guid("2A44957D-A704-4370-9C4B-5D6EE147ABB6")]

    internal interface IMyClass

    {

        [DispId(1)]

        void message(string msg);

    }

 

    [Guid("CC441039-F00D-4617-B2AD-36082B7D4D9D"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]

    public interface IMyEvents

    {

    }

 

     [Guid("E60248B4-F573-4EAE-93E9-5E77341D05BA"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(IMyEvents))]

    public class MyClass : IMyClass

    {

         public void message(string msg)

         {

             MessageBox.Show(msg,"Это сообщение COM",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

         }

    }

}

Обратите внимание, что в юзинги мы добавили System.Windows.Forms, поэтому необходимо подключить к библиотеке соответствующую ссылку*:

C# + 1C. Пишем простейший COM-сервер для 1С

Сделать это можно либо кликнув на ветке "Ссылки" правой кнопочкой мыши*:

C# + 1C. Пишем простейший COM-сервер для 1С

либо через меню "Проект" -> "Добавить ссылку"*:

C# + 1C. Пишем простейший COM-сервер для 1С

Теперь обратите внимание на гуиды (текст типа CC441039-F00D-4617-B2AD-36082B7D4D9D). Их надо будет сгенерить. Для этого запускаем специальную утилиту "Генератор GUID", которая входит в стандартный пакет Visual Studio**:

C# + 1C. Пишем простейший COM-сервер для 1С

Для генерации выбираем формат, в котором надо генерить, нажимаем "Создать GUID" а потом "Копировать", что бы поместить его в буфер обмена, а потом вставить в тектс программы*:

C# + 1C. Пишем простейший COM-сервер для 1С

Вставив в программу приведенный здесь код, а в код свои гуиды, займемся настройкой проекта*:

C# + 1C. Пишем простейший COM-сервер для 1С

Во первых, на закладке "Построение" надо указать, что наша программа будет зарегистрирована для COM-взаимодействия*:

C# + 1C. Пишем простейший COM-сервер для 1С

Во вторых, надо создать подпись на сборку (пароль создавать необязательно)*:

C# + 1C. Пишем простейший COM-сервер для 1С

 Ну, и последний штрих, идем в AssemblyInfo.cs и вставляем туда вызов AssemblyKeyFile, а ComVisible делаем true:

using System.Reflection;

using System.Runtime.CompilerServices;

using System.Runtime.InteropServices;

 

// Управление общими сведениями о сборке осуществляется с помощью

// набора атрибутов. Измените значения этих атрибутов, чтобы изменить сведения,

// связанные со сборкой.

[assembly: AssemblyTitle("ClassLibrary1")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("ClassLibrary1")]

[assembly: AssemblyCopyright("Copyright ©  2013")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

 

// Параметр ComVisible со значением FALSE делает типы в сборке невидимыми

// для COM-компонентов.  Если требуется обратиться к типу в этой сборке через

// COM, задайте атрибуту ComVisible значение TRUE для этого типа.

[assembly: ComVisible(true)]

[assembly: AssemblyKeyFile("MyComFor1C.snk")]

 

...

...

 

Все, компилим проект а затем регистрируем его утилитой RegAsm***:

C# + 1C. Пишем простейший COM-сервер для 1С

 

Все, теперь протестим что мы написали. И так, создаем обработину:

 

Процедура КнопкаВыполнитьНажатие(Кнопка)
    МойОбъект = Новый COMОбъект("MyComFor1C.MyClass");
    МойОбъект.message("Проба. Это такое пробное сообщение");
КонецПроцедуры

 

Запустив эту обработку, мы увидим, что наш COM-объект действительно работает****:

 

C# + 1C. Пишем простейший COM-сервер для 1С

 


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft.. 

Скриншоты, помеченные знаком **, являются цитатами и иллюстрациями  программного продукта "Microsoft Windows 7", авторское право на который принадлежит корпорации Microsoft.. 

Скриншоты, помеченные знаком ***, являются цитатами и иллюстрациями  программного продукта "Windows Commander", авторское право на который принадлежит Christian Ghisler

Скриншоты, помеченные знаком ****, являются цитатами и иллюстрациями  программного продукта "1C Предприятие 8.2", авторское право на который принадлежит ЗАО 1С. 


 

 

 

 

Последнее обновление ( 26.05.2013 г. )
 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги