Работа с 1С connector
От: Аноним  
Дата: 05.07.13 04:37
Оценка:
Добрый день, форумчане!
Сейчас я пишу программу на C# в VisualStudio 2010, в которой должна быть связь с 1С MDM версии 8. Программа работает по технологии ClickOnce.
Для подключения к БД я использую компонент Interop.V82, который можно выбрать в reference сразу после установки 1С mdm.
Мне требуется выполнять запросы к 1С, один из которых представлен ниже:

var comConnector = new COMConnectorClass();
dynamic connect = comConnector.Connect(connectionString1C);
var Query = connect.NewObject("Запрос");
Query.Текст = "ВЫБРАТЬ * ИЗ Справочник.Производители";
dynamic objects = Query.Выполнить().Выгрузить();
foreach (dynamic obj in objects)
{
var name = obj.Наименование;
var uuid = obj.Ссылка.UUID();
Guid id = Guid.Parse(connect.String(uuid).ToString());
producerList.Add(new BaseComObject1C(id, name));
}
producerList = producerList.OrderBy(prod => prod.Name).ToList();

Запрос на моем компьютере, а также на компьютерах, где установлена 1С, выполняется нормально.
Если же программа не установлена на каком-либо компьютере, тогда выдается ошибка:
System.Runtime.InteropServices.COMException (0x80040154): Не удалось получить фабрику класса COM для компонента с CLSID {2B0C1632-A199-4350-AA2D-2AEE3D2D573A} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
В ссылках проекта для библиотеки Interop.V82 я выставлял свойства "Внедрить типы взаимодействия" и "Копировать локально" в различные значения — это не помогало решить проблему.
Пожалуйста, подскажите хорошее решение этой проблемы. На каждый компьютер в системе не хочется ставить 1С или хотя бы регистрировать эту dll, т.к. пользователей много.
Заранее спасибо.
interop.v82
Re: Работа с 1С connector
От: Nikolay_Ch Россия  
Дата: 05.07.13 05:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Пожалуйста, подскажите хорошее решение этой проблемы. На каждый компьютер в системе не хочется ставить 1С или хотя бы регистрировать эту dll, т.к. пользователей много.

А придется... Коннектор к 1С это не более чем обертка вызовов к COM-объектам 1С приложения. Лет 5 назад, когда я занимался этим коннектором, он требовал обязательного наличия 1С на компе — не думаю, что сейчас они изменили архитектуру взаимодействия с ним.
Re[2]: Работа с 1С connector
От: Аноним  
Дата: 05.07.13 09:40
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:
N_C>А придется... Коннектор к 1С это не более чем обертка вызовов к COM-объектам 1С приложения. Лет 5 назад, когда я занимался этим коннектором, он требовал обязательного наличия 1С на компе — не думаю, что сейчас они изменили архитектуру взаимодействия с ним.

Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?
Re[3]: Работа с 1С connector
От: Nikolay_Ch Россия  
Дата: 05.07.13 09:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?

Я так в итоге и сделал
Только не с командами, а с реальными методами получения данных. Типа: "GetClients". Включил на веб-сервисах пул соединений и кеширование.
Естественно, при пуле — авторизация в 1С будет производится от какого-то сервисного пользователя. Побочный эффект — резкое снижение количества задействованных лицензий 1С. Наверное раз в 10, т.е. на 100 пользователей корпоративного сайта использовалось 5-7 лицензий 1С...
Re[4]: Работа с 1С connector
От: Аноним  
Дата: 05.07.13 10:19
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, Аноним, Вы писали:


А>>Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?

N_C>Я так в итоге и сделал
N_C>Только не с командами, а с реальными методами получения данных. Типа: "GetClients". Включил на веб-сервисах пул соединений и кеширование.
N_C>Естественно, при пуле — авторизация в 1С будет производится от какого-то сервисного пользователя. Побочный эффект — резкое снижение количества задействованных лицензий 1С. Наверное раз в 10, т.е. на 100 пользователей корпоративного сайта использовалось 5-7 лицензий 1С...
Спасибо) Тоже так будем делать.
Re[3]: Работа с 1С connector
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 05.07.13 13:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Nikolay_Ch, Вы писали:

N_C>>А придется... Коннектор к 1С это не более чем обертка вызовов к COM-объектам 1С приложения. Лет 5 назад, когда я занимался этим коннектором, он требовал обязательного наличия 1С на компе — не думаю, что сейчас они изменили архитектуру взаимодействия с ним.

А>Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?

Решений несколько DCOM но возиться то с регистрацией придется. Самое простое это вэб сервисы. Это и типизация в C#,И лицензия только на вызов метода нужна.
и солнце б утром не вставало, когда бы не было меня
Re[4]: Работа с 1С connector
От: Dmitry_83  
Дата: 08.07.13 10:07
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, Nikolay_Ch, Вы писали:

N_C>>>А придется... Коннектор к 1С это не более чем обертка вызовов к COM-объектам 1С приложения. Лет 5 назад, когда я занимался этим коннектором, он требовал обязательного наличия 1С на компе — не думаю, что сейчас они изменили архитектуру взаимодействия с ним.

А>>Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?

S>Решений несколько DCOM но возиться то с регистрацией придется. Самое простое это вэб сервисы. Это и типизация в C#,И лицензия только на вызов метода нужна.

Пытаюсь сейчас развернуть локальный веб-сервис для работы с методами 1С. У меня выходит ошибка следующего содержания:
Не удалось получить фабрику класса COM для компонента с CLSID {2B0C1632-A199-4350-AA2D-2AEE3D2D573A} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Это довольно странно, т.к. у меня на компьютере установлен 1С. В чем может быть дело?
Re[5]: Работа с 1С connector
От: Nikolay_Ch Россия  
Дата: 08.07.13 10:34
Оценка:
Здравствуйте, Dmitry_83, Вы писали:

D_>Это довольно странно, т.к. у меня на компьютере установлен 1С. В чем может быть дело?

Не установлен COM-коннектор?
Re[6]: Работа с 1С connector
От: Dmitry_83  
Дата: 08.07.13 10:42
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>Здравствуйте, Dmitry_83, Вы писали:


D_>>Это довольно странно, т.к. у меня на компьютере установлен 1С. В чем может быть дело?

N_C>Не установлен COM-коннектор?

У меня 1С mdm установлен. Com- коннектор разве не входит в него по умолчанию?
Re[7]: Работа с 1С connector
От: Nikolay_Ch Россия  
Дата: 08.07.13 10:56
Оценка:
Здравствуйте, Dmitry_83, Вы писали:

D_>У меня 1С mdm установлен. Com- коннектор разве не входит в него по умолчанию?

Здесь не поможет?
Re[5]: Работа с 1С connector
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.07.13 10:58
Оценка:
Здравствуйте, Dmitry_83, Вы писали:

D_>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, Аноним, Вы писали:


А>>>Здравствуйте, Nikolay_Ch, Вы писали:

N_C>>>>А придется... Коннектор к 1С это не более чем обертка вызовов к COM-объектам 1С приложения. Лет 5 назад, когда я занимался этим коннектором, он требовал обязательного наличия 1С на компе — не думаю, что сейчас они изменили архитектуру взаимодействия с ним.

А>>>Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?

S>>Решений несколько DCOM но возиться то с регистрацией придется. Самое простое это вэб сервисы. Это и типизация в C#,И лицензия только на вызов метода нужна.

D_>Пытаюсь сейчас развернуть локальный веб-сервис для работы с методами 1С. У меня выходит ошибка следующего содержания:

D_>Не удалось получить фабрику класса COM для компонента с CLSID {2B0C1632-A199-4350-AA2D-2AEE3D2D573A} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

D_>Это довольно странно, т.к. у меня на компьютере установлен 1С. В чем может быть дело?

1c может быть установлена а comcntr.dll не зарегистрирована, но нет прав пользователю, так как запускается из под сервиса. Пропиши права DCOM этому юзеру в Component Services
Посмотри что это за приложение
и солнце б утром не вставало, когда бы не было меня
Re[5]: Работа с 1С connector
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.07.13 11:00
Оценка:
Здравствуйте, Dmitry_83, Вы писали:

http://www.cyberforum.ru/post3601374.html
и солнце б утром не вставало, когда бы не было меня
Re[6]: Работа с 1С connector
От: Аноним  
Дата: 10.07.13 08:18
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Dmitry_83, Вы писали:


D_>>Здравствуйте, Serginio1, Вы писали:


S>>>Здравствуйте, Аноним, Вы писали:


А>>>>Здравствуйте, Nikolay_Ch, Вы писали:

N_C>>>>>А придется... Коннектор к 1С это не более чем обертка вызовов к COM-объектам 1С приложения. Лет 5 назад, когда я занимался этим коннектором, он требовал обязательного наличия 1С на компе — не думаю, что сейчас они изменили архитектуру взаимодействия с ним.

А>>>>Должно же быть еще какое-то решение. Может быть веб-сервис организовать с командами для работы с 1С?

S>>>Решений несколько DCOM но возиться то с регистрацией придется. Самое простое это вэб сервисы. Это и типизация в C#,И лицензия только на вызов метода нужна.

D_>>Пытаюсь сейчас развернуть локальный веб-сервис для работы с методами 1С. У меня выходит ошибка следующего содержания:

D_>>Не удалось получить фабрику класса COM для компонента с CLSID {2B0C1632-A199-4350-AA2D-2AEE3D2D573A} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

D_>>Это довольно странно, т.к. у меня на компьютере установлен 1С. В чем может быть дело?

S>1c может быть установлена а comcntr.dll не зарегистрирована, но нет прав пользователю, так как запускается из под сервиса. Пропиши права DCOM этому юзеру в Component Services
S>Посмотри что это за приложение
Спасибо, все заработало. Пока только на локальном компьютере. На сервере больше организационный вопрос.
Уже вроде бы писал сюда, но сообщение не сохранилось почему-то)
Сейчас пытаюсь использовать в клиенте этот веб-сервис и возникла новая проблема. Веб-сервис преобразовывает все классы используемой dll в проекте в классы-суррогаты.
Можно как-то сделать так, чтобы для используемой dll этого не происходило? Просто в сервисе у меня предусмотрены сложные методы, которые не могут быть в отрыве от начальных классов dll.
Re[7]: Работа с 1С connector
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 10.07.13 09:29
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Спасибо, все заработало. Пока только на локальном компьютере. На сервере больше организационный вопрос.

А> Уже вроде бы писал сюда, но сообщение не сохранилось почему-то)
А>Сейчас пытаюсь использовать в клиенте этот веб-сервис и возникла новая проблема. Веб-сервис преобразовывает все классы используемой dll в проекте в классы-суррогаты.
А>Можно как-то сделать так, чтобы для используемой dll этого не происходило? Просто в сервисе у меня предусмотрены сложные методы, которые не могут быть в отрыве от начальных классов dll.
Наверное проще сгенерировать свою Оболочку, где было бы преобразование из, в твоих классов в классы сервисов.
и солнце б утром не вставало, когда бы не было меня
Re[8]: Работа с 1С connector
От: Dmitry_83  
Дата: 10.07.13 10:04
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Аноним, Вы писали:



А>>Спасибо, все заработало. Пока только на локальном компьютере. На сервере больше организационный вопрос.

А>> Уже вроде бы писал сюда, но сообщение не сохранилось почему-то)
А>>Сейчас пытаюсь использовать в клиенте этот веб-сервис и возникла новая проблема. Веб-сервис преобразовывает все классы используемой dll в проекте в классы-суррогаты.
А>>Можно как-то сделать так, чтобы для используемой dll этого не происходило? Просто в сервисе у меня предусмотрены сложные методы, которые не могут быть в отрыве от начальных классов dll.
S> Наверное проще сгенерировать свою Оболочку, где было бы преобразование из, в твоих классов в классы сервисов.

Да, сейчас так и делаю. Надеялся, что можно обойтись без преобразования(
Но все равно спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.