powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Работа с 1С 8 через COM
24 сообщений из 24, страница 1 из 1
Работа с 1С 8 через COM
    #35764544
litvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.

Необходимо для одной BI-системы сделать конектор к 1С через COM. Эта BI-система может работать и на прямую с БД через ODBC, но не всегда 1С стоит на MSSQL.

Интересуют такие вопросы:
1) скорость получение данных больших объемов из 1С через СОМ.
2) примеры кода работы с 1С через СОМ.
3) возможность увидеть все типы справочников, документов (подобно тому как таблицы в БД)

Буду очень благодарен и признателен за ответы.
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35764550
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1С она разная бывает...
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35764565
litvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понимаю что разная.
Интересует именно универсальный механизм к 1С вер. 8.Х не привязанный к модификациям (склад, производство, торговля и т.д.)
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35764578
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litvik,

что-то типа этого: http://www.gotdotnet.ru/Forums/Common/171726.aspx

а вообще http://www.google.ru/search?hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla:en-US:official&hs=ldr&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=1%D1%81+comconnector&spell=1
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35764674
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
litvik,

Примеров масса. infostart.ru, itland.ru...(поиск по "Application" например)
По скорости - через com в 1С все работает достаточно тормознуто.
По структуре см например
http://infostart.ru/projects/2432/
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765016
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kiruhaдостаточно тормознуто.
Голословное утверждение?
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765113
kiruha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XenoX,

Нет.
Простите - ликбезом не занимаюсь.
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765144
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kiruhaликбезом не занимаюсь.
очень напрасно, иначе бы знали, что ответы такого рода надо аргументировать.
у меня работает достаточно быстро, чтобы не считать тормознутым.
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765271
litvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините что мешаю вашей ссоре....
Но по моему форум чтоб делится опытом, а не обзываться что у кого-то руки кривые. Выложите примеры кода и каждый поймет свои ошибки.
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765279
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litvikВыложите примеры кода
Вам извините на чему нужны примеры?
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765313
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. язык какой...
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765326
litvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да какая разница на каком языке. (С++, С# и тд)
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765489
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litvik,

а кто этот коннектор вызывать будет? 1С или он через COM будет дергать 1эсовкие интерфейсы?
ЗЫ: проще в 1С вызывать, а в COM сервере описывать всю логику
ЗЫЗЫ: если, что могу помочь
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765527
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litvikДа какая разница на каком языке. (С++, С# и тд)
На самом деле большая.
Может вам от 1С проще подцепиться к вашей BI-системе...
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35765627
litvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне именно необходимо подключится к 1С через СОМ. BI-система может получать данные из DLL (собственный формат). Вот я и хочу в эту длл засунуть взаимодействие с 1С. Необходимо всего лишь получать результаты селектов из 1С.
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766251
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litvikмне именно необходимо подключится к 1С через СОМ. BI-система может получать данные из DLL (собственный формат). Вот я и хочу в эту длл засунуть взаимодействие с 1С. Необходимо всего лишь получать результаты селектов из 1С.

сложный путь
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766275
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про геррсложный путь
Это код для работы с 7.7 оно только через OLE может.
В 8 уже используется COM
вот пример работы с COM объектом v8 на VB
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Set Con = CreateObject("v8.ComConnector")
Set ConHandle = Con.Connaect("File=C:\BAZA; Usr=Bukin")

Set Query = ConHandle.NewObject("Запрос")
Query.Text = "ВЫБРАТЬ * ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки()"

Set Result = Query.Execute()
Set DataSet = Result.Choose()
Do While DataSet.Next()
 'что то делаем в цикле
Loop

Сразу хочу предостеречь автора от недайбог выбора ссылок, приводите все к простым типам, строка/число/дата/булево и сатарйтесь в запросе использовать латинские алиасы для колонок
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766281
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. писал на память, мог ошибиться
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766349
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XenoX,

а где взять объектную модель 8-ки?
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766366
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про геррXenoX,
а где взять объектную модель 8-ки?
А вас что конкретно интересует?
У 8-го COM объекта есть бибиотека типов которую например можно запросто импортировать в Delphi а так наскоько мне не отказывает память, все есть в справке по v8
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766430
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XenoX,

Ну обычно системы, которые предоставляют COM интерфейсы содержат в себе библиотеки *.tlb + вменяемый хелп по всем объектам, свойствам методам и пр. этих объектов.
В справке к 8.0. только внутренний язык описан, если его латинский вариант совпадает с именами объектов и их методами, тогда проще, но об этом нигде ни слова. И *.tlb я не нашел в дистрибутиве.
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766458
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про геррXenoX,

Ну обычно системы, которые предоставляют COM интерфейсы содержат в себе библиотеки *.tlb + вменяемый хелп по всем объектам, свойствам методам и пр. этих объектов.
В справке к 8.0. только внутренний язык описан, если его латинский вариант совпадает с именами объектов и их методами, тогда проще, но об этом нигде ни слова. И *.tlb я не нашел в дистрибутиве.

У объектов 1С 100% совпадает описание методов латиницей, в этом случае справка вам подойдет.
P.S. на дворе уже почти 3 года как 8.1. а вы все 8.0.

Ну например в Delphi 7
Project->Import type library
И в списвке видим 1CV81 COM Connector Type Library
При условии что 1С81 установлена в системе...
Плохо смотрели...
...
Рейтинг: 0 / 0
Работа с 1С 8 через COM
    #35766644
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
litvikмне именно необходимо подключится к 1С через СОМ. BI-система может получать данные из DLL (собственный формат). Вот я и хочу в эту длл засунуть взаимодействие с 1С. Необходимо всего лишь получать результаты селектов из 1С.

ИМХО, при таком подходе, ваш модуль будет зависеть целиком и полностью от конфы 1С... изменилась конфа - надо будет перекомпилировать модуль.
легче сделать свой COM сервер (абсолютно не завязанный ни на какую конфу) и его вызывать из самой 1С, при этом открытые методы делать как бы "обезличенными", типа SetValue(BSTR FieldName, VARIANT Value)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Работа с 1С 8 через COM
    #36834010
Kipetcoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как раз столкнулся с проблемой, описываемой в этом вопросе.. Реализовал доступ к данным 1С через V81.COMConnector. Тормозит безбожно!!!
Код метода веб-сервиса

Код: plaintext
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.
[WebMethod]
    public string GetPayrollReportMonths(string sPersId, string sOrgId)
    {
        //sPersId = "0000000008"
        //sOrgId = "000000002"

        object v8 = null;

        Adapter adapter = new Adapter();

        adapter.DBType = DatabaseType.File;
        adapter.FileBase = @"C:\Documents and Settings\Администратор\Рабочий стол\zup";


        try
        {
            v8 = adapter.Connect();
        }
        catch
        {
            adapter.ReleaseObject(ref v8);
        }

        object query = adapter.InvokeMethod(v8, "NewObject", new object[] { "Запрос" });

        string text = @"
            ВЫБРАТЬ РАЗЛИЧНЫЕ
	         	МЕСЯЦ(ВзаиморасчетыСРаботникамиОрганизаций.Период) КАК Месяц,
	         	ГОД(ВзаиморасчетыСРаботникамиОрганизаций.Период) КАК Год
	         ИЗ
	         	РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
	         ГДЕ
	         	ВзаиморасчетыСРаботникамиОрганизаций.Физлицо.Код = &ФизЛицо
	         	И ВзаиморасчетыСРаботникамиОрганизаций.Организация.Код = &Организация
	         
	         ОБЪЕДИНИТЬ
	         
	         ВЫБРАТЬ РАЗЛИЧНЫЕ
	         	МЕСЯЦ(НДФЛРасчетыСБюджетом.Период),
	         	ГОД(НДФЛРасчетыСБюджетом.Период)
	         ИЗ
	         	РегистрНакопления.НДФЛРасчетыСБюджетом КАК НДФЛРасчетыСБюджетом
	         ГДЕ
	         	НДФЛРасчетыСБюджетом.ФизЛицо.Код = &ФизЛицо
	         	И НДФЛРасчетыСБюджетом.Организация.Код = &Организация
	         
	         УПОРЯДОЧИТЬ ПО
	         	Год,
	         	Месяц";
        adapter.SetProperty(query, "Текст", text);

        adapter.InvokeMethod(query, "УстановитьПараметр", new object[] { "ФизЛицо", sPersId });
        adapter.InvokeMethod(query, "УстановитьПараметр", new object[] { "Организация", sOrgId });


        query = adapter.InvokeMethod(query, "Выполнить", null);
        query = adapter.InvokeMethod(query, "Выбрать", null);

        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.AppendChild(xmlDoc.CreateNode(XmlNodeType.XmlDeclaration, "decl", string.Empty));
        xmlDoc.AppendChild(xmlDoc.CreateNode(XmlNodeType.Element, "Months", string.Empty));

        while ((bool)adapter.InvokeMethod(query, "Следующий", null))
        {
            XmlNode rowElem = xmlDoc.CreateNode(XmlNodeType.Element, "MonthsTable", string.Empty);

            string sYear = adapter.GetProperty(query, "Год").ToString();
            string sMonth = adapter.GetProperty(query, "Месяц").ToString();
            XmlNode column = xmlDoc.CreateNode(XmlNodeType.Element, "Period", "");
            if (!string.IsNullOrEmpty(sYear) && !string.IsNullOrEmpty(sMonth))
            {
                DateTime dt = new DateTime(Convert.ToInt32(sYear), Convert.ToInt32(sMonth),  1 );
                column.InnerText = dt.Year.ToString() + "/" + dt.Month.ToString();
            }

            rowElem.AppendChild(column);

            xmlDoc.ChildNodes[ 1 ].AppendChild(rowElem);
        }
        adapter.ReleaseObject(ref query);
        adapter.ReleaseObject(ref v8);
        adapter.Dispose();
        return xmlDoc.InnerXml;
    }

Дополнительные методы адаптора

Код: plaintext
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.
public object InvokeMethod(object target, string name, object[] args)
    {
        if (target == null) throw new ArgumentNullException();
        BindingFlags flags = BindingFlags.Public | BindingFlags.InvokeMethod;
        return target.GetType().InvokeMember(name, flags, null, target, args);
    }
public void SetProperty(object target, string name, object value)
    {
        if (target == null) throw new ArgumentNullException();
        BindingFlags flags = BindingFlags.Public | BindingFlags.SetProperty;
        target.GetType().InvokeMember(name, flags, null, target, new object[] { value });
    }
public object Connect()
    {
        if (v8 == null)
        {
            Type COM = Type.GetTypeFromProgID("V81.COMConnector", true);
            //V77S.Application V8.ComConnector V81.COMConnector

            connector = Activator.CreateInstance(COM);

            object[] args = { GetConnectionString() };

            v8 = InvokeMethod(connector, "Connect", args);
        }

        return v8;
    }

Написал консольное приложение для тестирования скорости доступа через веб-сервис
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Int64 start = DateTime.Now.Ticks;
            Console.WriteLine("Running ...");
            Console.WriteLine("*************************");


            ServiceSoapClient clClass = new ServiceSoapClient("ServiceSoap");
            clClass.Open();
            string ss5 = clClass.GetPayrollReportMonths("0000000008", "000000002");

            clClass.Close();

            Console.WriteLine("*************************");
            Console.WriteLine("Press any key to exit ...");
            Int64 end = DateTime.Now.Ticks;
            Decimal total = (Decimal)((end - start) /  10000000 );
            Console.WriteLine("Duaration: " + Decimal.Round(total,  2 ).ToString() + " sec.");
            Console.ReadLine();

Результат 5-7 секунд.. Очень плохой на мой взгляд. Тут был спор о скорости через COM. Как раз можно проверить возможности. Как можно оптимизировать доступ.? Или через COM скорости не добиться?
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Работа с 1С 8 через COM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]