Способы подключения к 1С отличаются от версии платформы, а также других факторов, которые будут рассмотрены ниже.
Быстрый переход
Варианты подключения к 1С для 7.7
Через OLE
Используется объект V77.Application, не самый быстрый, но универсальный способ.
Пример:
//Объект для доступа БазаOLE = СоздатьОбъект("V77.Application"); //Варианты вызова //Локальный: V77L.Application //Сетевой: V77.Application //SQL: V77S.Application ПутьБазы = "C:\Bases\base\"; Пользователь = "Администратор"; Пароль = "123456"; МонопольныйРежим = " /m"; ЗапускБезЗаставки = 1; Подключено = БазаOLE.Initialize ( БазаOLE.RMTrade , "/d" + СокрЛП(ПутьБазы) + " /n" + СокрЛП(Пользователь)+ " /p" + СокрЛП(Пароль) + МонопольныйРежим, ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW","")); Если Подключено = 0 Тогда Предупреждение("Подключение к базе "+Подключено+" не произведено. Проверьте настройки!"); Иначе // СпрOLE = БазаОле.CreateObject("Справочник.Контрагенты"); СпрОле.ВыбратьЭлементы(); Пока СпрОле.ПолучитьЭлемент()=1 Цикл Сообщить(Спр.Наименование); Прервать; КонецЦикла; КонецЕсли;
Подключении по сети происходит медленнее, чем локальное, «удаленный» вызов используется редко.
Обратите внимание, что впрямую присвоение к «местному» свойству возможно только для примитивных типов, объектные (Например СпрOle, ТекущийЭлемент()), не имеют в текущей базы «сущности». При передаче числовых значений используйте округление, так как возможно передача вот таких значений «1,00000000001» для них операция сравнения будет выдавать различие.
Подключение напрямую к базе данных
Является альтернативным способом, для его осуществления требуется разбор таблиц, опираясь на файл 1Cv7.DD.
Способ позволяет очень быстро оперировать большими объемами данными, но требуется глубокая отладка таких подключений.
Пример рассматривать не будем, так как это объемная тема, а для большинства 7.7. уже прошлое.
Подключение к платформе 8.1, 8.2, 8.3
Совместимый вариант: Com-Соединение
Является аналогом OLE, принцип работы очень схож, но это более быстрая технология.
Минус этих технологий — долгое подключение, поэтому при регулярном использовании Com-соединение «кэшируется».
Пример подключения из 7.7 к 8.2
ПутьБазы = "C:\Bases\Base8\"; VCom = СоздатьОбъект ( "V82.COMConnector" ); Соединение= "" ; Попытка Соединение = VCom. Connect ( "File=""" + СокрЛП (ПутьБазы)+ """;" ); Исключение Сообщить ( "Ошибка подключения к базе: "+"ПутьБазы); Возврат; КонецПопытки; //Вариант OLE //СоединениеOLE = СоздатьОбъект ( "V82.Application" ); //Результат = СоединениеOLE.Connect( "File=""" + СокрЛП (ПутьБазы)+ """;" ); //Если Результат = 0 Тогда // Сообщить ( "Ошибка подключения к базе: " + ПутьБазы ); // Возврат; //КонецЕсли; Попытка ДокУдаленный = Соединение. Документы.РеализацияТоваровИУслуг.СоздатьДокумент (); ДокУдаленный.Номер ="0000000001"; ДокУдаленный.Дата = ТекущаяДата(); ДокУдаленный.Записать(); Исключение Сообщить("Ошибка создания " + ОписаниеОшибки()); КонецПопытки;
Пример подключения из 8.3 к 8.3
Версия = "V83"; Попытка V8 = Новый COMОбъект(Версия + ".COMConnector"); ФактСтрокаПодключения = ПолучитьСтрокуПодключения(СтрокаПодключения); Соединение = V8.Connect(ФактСтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()) Возврат; КонецПопытки; //УИНСтрокой = Строка (СсылкаЗдесь.УникальныйИдентификатор()); УИНСтрокой = Строка(Новый УникальныйИдентификатор)); ТипДокумента = "РеализацияТоваровУслуг"; МенеджерДокумента = Соединение.Документы[ТипДокумента]; ДокументВ1СДеньги = МенеджерДокумента.НайтиПоРеквизиту("УИН", УИНСтрокой); Если ДокументВ1СДеньги.Пустая() Тогда ОбъектТам = МенеджерДокумента.СоздатьДокумент(); СсылкаТам = МенеджерДокумента.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор",УИНСтрокой)); ОбъектТам.УстановитьСсылкуНового(СсылкаТам); ОбъектТам.УИН = УИНСтрокой; КонецЕсли;
Примеры приведены в учебных целях, выдергиванием из готовых решений, код частично менялся, но должен быть работоспособен.
- Технология работы с объектами во втором пример также может быть использована для объекта «Запрос».
- В целом способ стабильный, обычно проблемы только с начальной настройкой на 64-битных системах.
- Работает только в системах «Windows»
- Универсальны и не требуют доработки конфигураций
- Не доступен для базовых версиях (лицензионное ограничение)
Web-сервисы
- Универсальный способ подключения, обычно используется для подключение к 1с сторонних программ и сервисов (например сайтов, мобильных приложений)
- Требуется доработка конфигурации (создание объекта Web-Сервис)
- Полностью управляется что и при каких условиях отправлять
- Требуется публикация на web-сервер (подключение компонента и его настройка для связи с базой)
- Иногда возникают проблемы со встроенными объектами для обращения (несовместимость формата Soap) в этом случае используются сторонние средства подключения через (http-запрос, с последующим работой c xml-текстом)
Пример работы (не получится проверить, показывает общую технологию подключения, создания объектов и обращения к методам сервиса)
Адрес ="С:\bases\WSDL.txt"; Определение = Новый WSОпределения(Адрес); ПространствоИмен ="http://service.test.ru/"; ПространствоИменСправочники ="http://dictionary.test.ru/"; Прокси = Новый WSПрокси( Определение, ПространствоИмен, "ServiceService", "ServicePort" ); //Создаем объект запроса Фабрика = Прокси.ФабрикаXDTO; Тип = Фабрика.Тип(ПространствоИмен, "LoginRequest"); LoginRequest = Фабрика.Создать(Тип); LoginRequest.login = "MyLogin"; LoginRequest.password = "123456"; //Вызываем авторизацию Ответ = Прокси.logIn (LoginRequest);
Для отладки подключения рекомендую использовать приложение SOAPUi
- это клиентское Soap приложение
- позволит препарировать запросы до низкого http уровня
- проверить работает ли ваш или удаленный сервис
- верные ли вы запросы передаете
- сгенерирует примеры запросов
HTTP-Сервисы (с версии 8.3)
- современная универсальная технология подключения к 1С и сторонним сервисам
- требуется доработка 1С
- управление данными для передачи
- требуется публикация на стороннем сервисе (в дальнейшем на сервер от 1С, Платформа 8.4)
Пример работы будет рассмотрен в отдельной статье
REST-интерфейс
Использовать автоматический стандартный интерфейс OData прикладного решения просто:
- В конфигураторе вы публикуете REST интерфейс — флажок Публиковать стандартный интерфейс OData;
- После этого объекты прикладного решения становятся доступны через этот интерфейс;
- Способы аутентификации OData клиентов полностью совпадают со способами, используемыми для веб-сервисов;
- OData клиенты могут запросить через HTTP документ метаданных, описывающий доступные объекты прикладного решения;
- OData клиенты выполняют операции создания, чтения, модификации и удаления данных прикладного решения.
Более подробный обзор и примеры работы на сайте 1С
Заключение
Существует много способов подключения к 1С и из 1С.
Выбор любого производится анализом возможностей доработки, доступности базы из вне, наличием вэб-серверов, операционной системы
Самые глубокие проблемы, связанные с рекламой, проистекают не столько из стремления рекламодателей соблазнять, сколько из нашего желания быть соблазняемыми.