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