8.х Ошибка при использовании OLE

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Gfdtk, 20 окт 2009.

  1. TopicStarter Overlay
    Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    1С версия 8.1.31.41
    Есть две базы на SQL сервере, пытаюсь из одной подключиться к другой через V8.Application. (Это вообще возможно? :unsure: )
    Код:
    Код:
    Процедура ПодключениеКПолучателю()
    Получатель = Новый COMОбъект("V8.Application");
    Попытка
    СтрокаСоединения = "Srvr=""" + СокрЛП(СерверПолучателя) + """;" + 
    "Ref=""" + СокрЛП(БазаПолучателя) + """;" + 
    "Usr=""" + СокрЛП(ПользовательПолучателя) + """;" + 
    "Pwd=""" + СокрЛП(ПарольПолучателя) + """;";
    Сообщить(СтрокаСоединения);
    Открыто = Получатель.Connect(СтрокаСоединения);
    Исключение
    Предупреждение("Подключение не выполнено. " + ОписаниеОшибки(), 0);
    КонецПопытки;;
    КонецПроцедуры
    
    
    
    
    Выдает ошибку:
    "Подключение не выполнено... Ошибка при вызове метода контекста (Connect). Произошла исключительная ситуация (V8.Application). Не установлены компоненты доступа к серверу 1С: Предприятие."

    Какой компонент нужен?
  2. TopicStarter Overlay
    Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    все решил. надо было V81 указывать :)
  3. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    лично я использую немного по другому:
    Код:
    
    СтрокаПодключения="Srvr="""+ИсточникСервер+""";Ref="""+ИмяИБИсточник+""""+";Usr="""+ПользовательИсточник+""""+";Pwd="""+ПарольИсточник+""""+";";		
    Идентификатор=Новый COMОбъект("V81.COMConnector");
    Попытка
    ИдентификаторПодключения=Идентификатор.Connect(СтрокаПодключения);		
    Состояние("Соединение установлено");
    Исключение
    СтрокаСообщенияОбОшибке = "При попытке соедиения с COM-сервером произошла следующая ошибка:" + Символы.ПС 
    + ОписаниеОшибки();
    Сообщить(СтрокаСообщенияОбОшибке, СтатусСообщения.Важное);
    КонецПопытки;
    
    
  4. TopicStarter Overlay
    Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    разница в том, что ты используеш СОМ соединение а я Automation сервер.
    но это все лирика.

    Соответствие между таблицей SQL и объектом метаданных я нашел. Теперь нужно определить соответствие столбца таблицы SQL реквизиту метаданных. Кто-нибудь в курсе как это сделать?
  5. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    обрисуй поподробнее ситуацию
  6. TopicStarter Overlay
    Gfdtk
    Offline

    Gfdtk Опытный в 1С

    Регистрация:
    28 апр 2008
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    Код:
    ТЗ = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
    Док = Новый ТекстовыйДокумент;
    Для Каждого Стр ИЗ ТЗ Цикл
    СтрокаДляЗаписи = Стр.ИмяТаблицыХранения + " = " + Стр.Метаданные;
    Сообщить(СтрокаДляЗаписи);
    Док.ДобавитьСтроку(СтрокаДляЗаписи);
    Для Каждого Поле ИЗ Стр.Поля Цикл
    СтрокаДляЗаписи = "      " + Поле.ИмяПоляХранения + " = " + Поле.Метаданные;
    Сообщить(СтрокаДляЗаписи);
    Док.ДобавитьСтроку(СтрокаДляЗаписи);
    КонецЦикла;
    КонецЦикла;
    Док.Записать("C:�1.txt");
    
    
    Вобщем если кому понадобится - пользуйтесь.
    Вообще оказывается (отжежкаконополучается) можно через V81 обращаться просто к метаданным базы т.е.
    Код:
    СпрН = V81.Справочники.Номенклатура;
    Выборка = СпрН.Выбрать();
    Пока Выборка.Следующий() Цикл
    Спр = Выборка.ПолучитьОбъект();
    Сообщить(Спр.Наименование);
    КонецЦикла;
    
    
    Я думал, что можно только напрямую со сквела тянуть. Нуп еще - но учусь. :)
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    В некоторых случаях (в большинстве) лучше использовать Application, а не COMConnector :)

    Просто сколько раз сталкивался и пытался на комконнекторе сделать такое - не хватало возможностей. Application гораздо полнее доступ дает.
  8. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    а по быстродействию как?
  9. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    По быстродействию коннектор быстрее (если по книжке, по факту не сильно заметно на моих задачах), но, к сожалению, он не давал мне тех возможностей, что были нужны.

    Когда бывает нужно заняться оптимизацией - я переделываю куски, но лучше лишний раз не думать об этом, так как в моих задачах коннектор не подходит
  10. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    если не секрет, приведи пример тех задач, которые нельзя реализовать с помощью коннектора
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Например, получить форму и открыть ее :)
    А еще коннектор может работать на сервере - это минус Application
  12. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26

Поделиться этой страницей