Загрузка данных


// Функция - Получить структуру подключения
//
// Параметры:
//  ИмяСервиса	 - Строка - Строка "Тип объекта" из РС Доп реквизиты с Реквизитом "Имя Сервиса"
// 
// Возвращаемое значение:
//  Структура - 
//
Функция ПолучитьСтруктуруПодключения(ИмяСервиса) Экспорт
	
	СтруктураПодключения	= ОбщийВнешниеВызовы.ПолучитьСтруктуруКафки();
	Профиль					= корПолучитьЗначениеРеквизита(ИмяСервиса, ПланыВидовХарактеристик.ДопРеквизиты.ИмяСервиса);
	Параметры				= ОбщийВнешниеВызовы.ПолучитьСтруктуруПараметровСервиса(Профиль);
	СтруктураПодключения.Вставить("Параметры", Параметры);
	СтруктураПодключения.Хост = "http://" + СокрЛП(Профиль.Хост) + ":" + СокрЛП(Профиль.Порты);
	СтруктураПодключения.ИмяТопика = корПолучитьЗначениеРеквизита(ИмяСервиса,
									ПланыВидовХарактеристик.ДопРеквизиты.КафкаТопики);
	СтруктураПодключения.Вставить("КафкаОффсет", корПолучитьЗначениеРеквизита(ИмяСервиса,
									ПланыВидовХарактеристик.ДопРеквизиты.КафкаОффсет));
	
	Возврат СтруктураПодключения;
	
КонецФункции

Функция ПолучитьСтруктуруКафки() Экспорт
	
	Параметры = Новый Структура;
	
	Параметры.Вставить("Хост",             "");
	Параметры.Вставить("ПотокПодписчика",  "");
	Параметры.Вставить("ГруппаПодписчика", "");
	Параметры.Вставить("ИмяТопика",        "");
	
	Возврат Параметры;
	
КонецФункции

Функция корПолучитьЗначениеРеквизита(ТипОбъекта, Реквизит) Экспорт
	
	РеквизитыОбъекта = РегистрыСведений.ДопРеквизиты.СоздатьНаборЗаписей();
	РеквизитыОбъекта.Отбор.ТипОбъекта.Установить(ТипОбъекта);
	РеквизитыОбъекта.Отбор.Реквизит.Установить(Реквизит);
	РеквизитыОбъекта.Прочитать();
	Если РеквизитыОбъекта.Количество() > 0 Тогда
		Возврат РеквизитыОбъекта[0].Значение;
	КонецЕсли;
	
	Возврат Неопределено;
	
КонецФункции

Функция ПолучитьСтруктуруПараметровСервиса(ТекПрофиль) Экспорт
	
	СтруктураПараметровСервиса = Новый Структура;
	//ТекПрофиль = Справочники.кор_ПрофилиСервисов.НайтиПоНаименованию(ИмяСервиса);
	Если ТекПрофиль <> Неопределено И ТекПрофиль <> Справочники.кор_ПрофилиСервисов.ПустаяСсылка() Тогда
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("ПрофильСервиса", ТекПрофиль);
		Запрос.Текст =
		"ВЫБРАТЬ
		|	кор_ПараметрыСервисов.ПараметрыСервиса,
		|	кор_ПараметрыСервисов.ЗначенияПараметровСервиса
		|ИЗ
		|	РегистрСведений.кор_ПараметрыСервисов КАК кор_ПараметрыСервисов
		|ГДЕ
		|	кор_ПараметрыСервисов.ПрофильСервиса = &ПрофильСервиса";
	КонецЕсли;
	Выб = Запрос.Выполнить().Выбрать();
	Если Выб.Следующий() Тогда
		ТекПараметрыСервиса = Выб.ПараметрыСервиса;
		ТекЗнчПараметровСервиса = Выб.ЗначенияПараметровСервиса;
		МассивПараметров = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекПараметрыСервиса, ";", Истина);
		МассивЗначенийПараметров = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекЗнчПараметровСервиса, ";", Ложь);
		н = 0;
		Если МассивПараметров.Количество() > МассивЗначенийПараметров.Количество() Тогда
			//Это ошибка настройки параметров
			Возврат СтруктураПараметровСервиса;
		КонецЕсли;
		Для Каждого Параметр Из МассивПараметров Цикл
			СтруктураПараметровСервиса.Вставить(Параметр, СокрЛП(МассивЗначенийПараметров[н]));
			н = н + 1;
		КонецЦикла;
	КонецЕсли;
	Возврат СтруктураПараметровСервиса;
КонецФункции

Функция корПолучитьЗначениеРеквизита(ТипОбъекта, Реквизит) Экспорт
	
	РеквизитыОбъекта = РегистрыСведений.ДопРеквизиты.СоздатьНаборЗаписей();
	РеквизитыОбъекта.Отбор.ТипОбъекта.Установить(ТипОбъекта);
	РеквизитыОбъекта.Отбор.Реквизит.Установить(Реквизит);
	РеквизитыОбъекта.Прочитать();
	Если РеквизитыОбъекта.Количество() > 0 Тогда
		Возврат РеквизитыОбъекта[0].Значение;
	КонецЕсли;
	
	Возврат Неопределено;
	
КонецФункции