Капитально об программе 1С 8.0-8.3-8.4, 7.7

Подключение 1С к 1С

Способы подключения к 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("УникальныйИдентификатор",УИНСтрокой));
    ОбъектТам.УстановитьСсылкуНового(СсылкаТам);
    ОбъектТам.УИН = УИНСтрокой;
КонецЕсли;

Примеры приведены в учебных целях, выдергиванием из готовых решений, код частично менялся, но должен быть работоспособен.

Web-сервисы

Пример работы (не получится проверить, показывает общую технологию подключения, создания объектов и обращения к методам сервиса)

    	Адрес ="С:\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

HTTP-Сервисы (с версии 8.3)

Пример работы будет рассмотрен в отдельной статье

REST-интерфейс

Использовать автоматический стандартный интерфейс OData прикладного решения просто:

Более подробный обзор и примеры работы на сайте 1С

Заключение

Существует много способов подключения к 1С и из 1С.

Выбор любого производится анализом возможностей доработки, доступности базы из вне, наличием вэб-серверов, операционной системы