#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДокументРезультат.Очистить();
Если Не СПАРКРиски.ИспользованиеСПАРКРискиВключено() Тогда
СПАРКРиски.ЗаполнитьОписаниеОшибкиФормированияОтчета(
ДокументРезультат,
Перечисления.ВидыОшибокСПАРКРиски.ИспользованиеОтключено);
Возврат;
КонецЕсли;
УслугаПодключена = ИнтернетПоддержкаПользователей.УслугаПодключена(
СПАРКРискиКлиентСервер.ИдентификаторУслугиИндикаторыРиска());
РезультатВызоваВебСервиса = СПАРКРискиСервис.НовыйРезультатВызоваСервиса();
Если Не УслугаПодключена Тогда
РезультатВызоваВебСервиса.Вставить("ВидОшибки", Перечисления.ВидыОшибокСПАРКРиски.ТребуетсяОплатаИлиПревышенЛимит);
РезультатВызоваВебСервиса.Вставить("СообщениеОбОшибке", НСтр("ru = 'Услуга не подключена.'"));
РезультатВызоваВебСервиса.Вставить("ИнформацияОбОшибке", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Не удалось сформировать отчет по индексам 1СПАРК Риски.
|Услуга с идентификатором %1 не подключена.'"),
СПАРКРискиКлиентСервер.ИдентификаторУслугиИндикаторыРиска()));
СПАРКРиски.ЗаполнитьОписаниеОшибкиФормированияОтчета(
ДокументРезультат,
РезультатВызоваВебСервиса.ВидОшибки);
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ОтчетПустой", Истина);
Возврат;
КонецЕсли;
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрКонтрагенты = Новый ПараметрКомпоновкиДанных("Контрагенты");
ЭлементПараметрКонтрагенты = Неопределено;
ПараметрСводныйИндикатор = Новый ПараметрКомпоновкиДанных("СводныйИндикатор");
ЭлементПараметрСводныйИндикатор = Неопределено;
ПараметрИндексДолжнойОсмотрительности = Новый ПараметрКомпоновкиДанных("ИндексДолжнойОсмотрительности");
ЭлементПараметрИндексДолжнойОсмотрительности = Неопределено;
ПараметрИндексФинансовогоРиска = Новый ПараметрКомпоновкиДанных("ИндексФинансовогоРиска");
ЭлементПараметрИндексФинансовогоРиска = Неопределено;
ПараметрИндексПлатежнойДисциплины = Новый ПараметрКомпоновкиДанных("ИндексПлатежнойДисциплины");
ЭлементПараметрИндексПлатежнойДисциплины = Неопределено;
ПараметрСтатус = Новый ПараметрКомпоновкиДанных("СтатусНазвание");
ЭлементПараметрСтатус = Неопределено;
ПараметрВидКонтрагента = Новый ПараметрКомпоновкиДанных("ВидКонтрагента");
ЭлементПараметрВидКонтрагента = Неопределено;
ПараметрПрекратилДеятельность = Новый ПараметрКомпоновкиДанных("КонтрагентПрекратилДеятельность");
Для Каждого ТекущийПараметрДанных Из НастройкиОтчета.ПараметрыДанных.Элементы Цикл
Если ТекущийПараметрДанных.Параметр = ПараметрКонтрагенты Тогда
ЭлементПараметрКонтрагенты = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрСводныйИндикатор Тогда
ЭлементПараметрСводныйИндикатор = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрИндексДолжнойОсмотрительности Тогда
ЭлементПараметрИндексДолжнойОсмотрительности = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрИндексПлатежнойДисциплины Тогда
ЭлементПараметрИндексПлатежнойДисциплины = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрИндексФинансовогоРиска Тогда
ЭлементПараметрИндексФинансовогоРиска = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрСтатус Тогда
ЭлементПараметрСтатус = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрВидКонтрагента Тогда
ЭлементПараметрВидКонтрагента = ТекущийПараметрДанных;
ИначеЕсли ТекущийПараметрДанных.Параметр = ПараметрПрекратилДеятельность Тогда
ТекущийПараметрДанных.Значение = СПАРКРиски.ТекстСтатусаПрекратилДеятельность();
ТекущийПараметрДанных.Использование = Истина;
КонецЕсли;
КонецЦикла;
ПараметрыКонтрагентов = Новый Структура;
ПараметрыКонтрагентов.Вставить("ПараметрКонтрагенты", ПараметрКонтрагенты);
ПараметрыКонтрагентов.Вставить("ЭлементПараметрКонтрагенты", ЭлементПараметрКонтрагенты);
ПараметрыКонтрагентов.Вставить("ПараметрВидКонтрагента", ПараметрВидКонтрагента);
ПараметрыКонтрагентов.Вставить("ЭлементПараметрВидКонтрагента", ЭлементПараметрВидКонтрагента);
ТекстУсловияНаКонтрагентов = ТекстУсловияНаКонтрагентов(ПараметрыКонтрагентов);
ТекстЗапросаПоКонтрагентам = ТекстЗапросаПоКонтрагентам(ТекстУсловияНаКонтрагентов);
ПараметрыОбновленияКэша = Новый Структура(
"ПараметрыКонтрагентов, ТекстЗапросаПоКонтрагентам",
ПараметрыКонтрагентов,
ТекстЗапросаПоКонтрагентам);
ЕстьОшибки = Ложь;
ОбновитьКэшИндексовСПАРКРиски(
ПараметрыОбновленияКэша,
РезультатВызоваВебСервиса,
ЕстьОшибки);
Если ЕстьОшибки Тогда
СПАРКРиски.ЗаполнитьОписаниеОшибкиФормированияОтчета(
ДокументРезультат,
РезультатВызоваВебСервиса.ВидОшибки);
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ОтчетПустой", Истина);
Возврат;
КонецЕсли;
СПАРКРиски.ВывестиУведомлениеПользователяВОтчете(ДокументРезультат);
СхемаКомпоновкиДанных.НаборыДанных.ИндексыСПАРКРиски.Запрос =
ТекстЗапросаПоКонтрагентам
+ ОбщегоНазначения.РазделительПакетаЗапросов()
+ ТекстЗапросаКИндексамСПАРКРиски();
Для Каждого ТекущийЭлементОтбора Из НастройкиОтчета.Отбор.Элементы Цикл
Если ТекущийЭлементОтбора.Представление = "СводныйИндикатор" Тогда
Если (ЭлементПараметрСводныйИндикатор <> Неопределено)
И (ЭлементПараметрСводныйИндикатор.Использование = Истина) Тогда
ТекущийЭлементОтбора.Использование = Истина;
КонецЕсли;
ИначеЕсли ТекущийЭлементОтбора.Представление = "ИндексДолжнойОсмотрительности" Тогда
Если (ЭлементПараметрИндексДолжнойОсмотрительности <> Неопределено)
И (ЭлементПараметрИндексДолжнойОсмотрительности.Использование = Истина) Тогда
ТекущийЭлементОтбора.Использование = Истина;
КонецЕсли;
ИначеЕсли ТекущийЭлементОтбора.Представление = "ИндексПлатежнойДисциплины" Тогда
Если (ЭлементПараметрИндексПлатежнойДисциплины <> Неопределено)
И (ЭлементПараметрИндексПлатежнойДисциплины.Использование = Истина) Тогда
ТекущийЭлементОтбора.Использование = Истина;
КонецЕсли;
ИначеЕсли ТекущийЭлементОтбора.Представление = "ИндексФинансовогоРиска" Тогда
Если (ЭлементПараметрИндексФинансовогоРиска <> Неопределено)
И (ЭлементПараметрИндексФинансовогоРиска.Использование = Истина) Тогда
ТекущийЭлементОтбора.Использование = Истина;
КонецЕсли;
ИначеЕсли ТекущийЭлементОтбора.Представление = "Статус" Тогда
Если (ЭлементПараметрСтатус <> Неопределено)
И (ЭлементПараметрСтатус.Использование = Истина) Тогда
ТекущийЭлементОтбора.Использование = Истина;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ДокументРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
КомпоновщикНастроек.ПользовательскиеНастройки.ДополнительныеСвойства.Вставить("ОтчетПустой", Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.ВыводитьСуммуВыделенныхЯчеек = Ложь;
Настройки.События.ПередЗагрузкойВариантаНаСервере = Истина;
Настройки.События.ПриОпределенииПараметровВыбора = Истина;
КонецПроцедуры
Процедура ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД) Экспорт
СПАРКРиски.ПередЗагрузкойВариантаНаСервере(Форма, НовыеНастройкиКД);
КонецПроцедуры
Процедура ПриОпределенииПараметровВыбора(Форма, СвойстваНастройки) Экспорт
СПАРКРиски.ПриОпределенииПараметровВыбора(СвойстваНастройки);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ТекстУсловияНаКонтрагентов(ПараметрыКонтрагентов)
ПоВсемКонтрагентам = Истина;
УсловиеНаКонтрагентов = Новый Массив;
Если (ПараметрыКонтрагентов.ЭлементПараметрКонтрагенты <> Неопределено)
И ПараметрыКонтрагентов.ЭлементПараметрКонтрагенты.Использование Тогда
УсловиеНаКонтрагентов.Добавить("(Спр.Ссылка В ИЕРАРХИИ (&Контрагенты))");
ПоВсемКонтрагентам = Ложь;
КонецЕсли;
Если (ПараметрыКонтрагентов.ЭлементПараметрВидКонтрагента <> Неопределено)
И ПараметрыКонтрагентов.ЭлементПараметрВидКонтрагента.Использование Тогда
УсловиеНаКонтрагентов.Добавить("(Рег.ВидКонтрагента = (&ВидКонтрагента))");
ПоВсемКонтрагентам = Ложь;
КонецЕсли;
Если ПоВсемКонтрагентам Тогда
УсловиеНаКонтрагентов = "ИСТИНА";
Иначе
УсловиеНаКонтрагентов = СтрСоединить(УсловиеНаКонтрагентов, " И ");
КонецЕсли;
Возврат УсловиеНаКонтрагентов;
КонецФункции
Функция ТекстЗапросаПоКонтрагентам(УсловиеНаКонтрагентов)
ТекстЗапроса = Новый Массив;
ШаблонЗапросаКСправочнику =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| Рег.Контрагент КАК Контрагент,
| Рег.ИНН КАК ИНН,
| Рег.ИННКорректный КАК ИННКорректный,
| Рег.ВидКонтрагента КАК ВидКонтрагента,
| Рег.СвояОрганизация КАК СвояОрганизация
|ПОМЕСТИТЬ ВТ_Контрагенты
|ИЗ
| РегистрСведений.СвойстваКонтрагентовСПАРКРиски КАК Рег
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИмяСправочника КАК Спр
| ПО Рег.Контрагент = Спр.Ссылка
|ГДЕ
| &УсловиеНаКонтрагентов
| И Рег.ИННКорректный
| И НЕ Спр.ПометкаУдаления";
ШаблонЗапросаКСправочнику = СтрЗаменить(
ШаблонЗапросаКСправочнику,
"&УсловиеНаКонтрагентов",
УсловиеНаКонтрагентов);
ТекстОбъединитьВсе =
"
|
|ОБЪЕДИНИТЬ ВСЕ
|
|";
ЭтоПервыйЗапрос = Истина;
СвойстваСправочниковКонтрагентов = СПАРКРиски.СвойстваСправочниковКонтрагентов();
Для Каждого ОписаниеСправочника Из СвойстваСправочниковКонтрагентов Цикл
ТекстЗапросаКСправочнику = ШаблонЗапросаКСправочнику;
Если Не ЭтоПервыйЗапрос Тогда
ТекстЗапросаКСправочнику = СтрЗаменить(
ТекстЗапросаКСправочнику,
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ",
"ВЫБРАТЬ РАЗЛИЧНЫЕ");
ТекстЗапросаКСправочнику = СтрЗаменить(
ТекстЗапросаКСправочнику,
"ПОМЕСТИТЬ ВТ_Контрагенты",
"");
ТекстЗапроса.Добавить(ТекстОбъединитьВсе);
КонецЕсли;
ЭтоПервыйЗапрос = Ложь;
ТекстЗапросаКСправочнику =
СтрЗаменить(
ТекстЗапросаКСправочнику,
"ИмяСправочника",
"Справочник."
+ ОписаниеСправочника.Имя);
ТекстЗапроса.Добавить(ТекстЗапросаКСправочнику);
КонецЦикла;
ТекстЗапроса.Добавить(
"ИНДЕКСИРОВАТЬ ПО
| Контрагент");
Возврат СтрСоединить(ТекстЗапроса, Символы.ПС);
КонецФункции
Функция ТекстЗапросаКИндексамСПАРКРиски()
Возврат
"ВЫБРАТЬ
| ВТ_Контрагенты.Контрагент КАК Контрагент,
| ВТ_Контрагенты.ИНН КАК ИНН,
| ВТ_Контрагенты.ИННКорректный КАК ЭтоКорректныйИНН,
| ВТ_Контрагенты.СвояОрганизация КАК СвояОрганизация,
| ВТ_Контрагенты.ВидКонтрагента КАК ВидКонтрагента,
| ЕСТЬNULL(РегИндексы.ИндексДолжнойОсмотрительности, -1) КАК ИндексДолжнойОсмотрительностиЧисло,
| ЕСТЬNULL(РегИндексы.ИндексПлатежнойДисциплины, -1) КАК ИндексПлатежнойДисциплиныЧисло,
| ЕСТЬNULL(РегИндексы.ИндексФинансовогоРиска, -1) КАК ИндексФинансовогоРискаЧисло,
| ЕСТЬNULL(РегИндексы.СводныйИндикатор, -1) КАК СводныйИндикаторЧисло,
| ЕСТЬNULL(РегИндексы.Активен, ЛОЖЬ) КАК Активен,
| ВЫБОР
| КОГДА РегИндексы.ИндексДолжнойОсмотрительности ЕСТЬ NULL
| ТОГДА """"
| КОГДА РегИндексы.ИндексДолжнойОсмотрительности >= 0
| И РегИндексы.ИндексДолжнойОсмотрительности <= 40
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Низкий)
| КОГДА РегИндексы.ИндексДолжнойОсмотрительности >= 41
| И РегИндексы.ИндексДолжнойОсмотрительности <= 71
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Средний)
| КОГДА РегИндексы.ИндексДолжнойОсмотрительности >= 72
| И РегИндексы.ИндексДолжнойОсмотрительности <= 100
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Высокий)
| ИНАЧЕ """"
| КОНЕЦ КАК ИндексДолжнойОсмотрительностиГрадация,
| ВЫБОР
| КОГДА РегИндексы.ИндексПлатежнойДисциплины ЕСТЬ NULL
| ТОГДА """"
| КОГДА РегИндексы.ИндексПлатежнойДисциплины >= 0
| И РегИндексы.ИндексПлатежнойДисциплины <= 49
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Высокий)
| КОГДА РегИндексы.ИндексПлатежнойДисциплины >= 50
| И РегИндексы.ИндексПлатежнойДисциплины <= 79
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Средний)
| КОГДА РегИндексы.ИндексПлатежнойДисциплины >= 80
| И РегИндексы.ИндексПлатежнойДисциплины <= 100
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Низкий)
| ИНАЧЕ """"
| КОНЕЦ КАК ИндексПлатежнойДисциплиныГрадация,
| ВЫБОР
| КОГДА РегИндексы.ИндексФинансовогоРиска ЕСТЬ NULL
| ТОГДА """"
| КОГДА РегИндексы.ИндексФинансовогоРиска >= 0
| И РегИндексы.ИндексФинансовогоРиска <= 30
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Низкий)
| КОГДА РегИндексы.ИндексФинансовогоРиска >= 31
| И РегИндексы.ИндексФинансовогоРиска <= 70
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Средний)
| КОГДА РегИндексы.ИндексФинансовогоРиска >= 71
| И РегИндексы.ИндексФинансовогоРиска <= 100
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Высокий)
| ИНАЧЕ """"
| КОНЕЦ КАК ИндексФинансовогоРискаГрадация,
| ВЫБОР
| КОГДА РегИндексы.СводныйИндикатор ЕСТЬ NULL
| ТОГДА """"
| КОГДА РегИндексы.СводныйИндикатор = 1
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Низкий)
| КОГДА РегИндексы.СводныйИндикатор = 2
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Средний)
| КОГДА РегИндексы.СводныйИндикатор = 3
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ГрадацияИндексовСПАРКРиски.Высокий)
| ИНАЧЕ """"
| КОНЕЦ КАК СводныйИндикаторГрадация,
| ВЫБОР
| КОГДА РегИндексы.Активен ЕСТЬ NULL
| ТОГДА &КонтрагентПрекратилДеятельность
| КОГДА РегИндексы.Активен
| ТОГДА РегИндексы.СтатусНазвание
| ИНАЧЕ &КонтрагентПрекратилДеятельность
| КОНЕЦ КАК СтатусНазвание,
| ВЫБОР
| КОГДА РегИндексы.Активен ЕСТЬ NULL
| ТОГДА ЗНАЧЕНИЕ(Справочник.ТипыСобытийСПАРКРиски.ПустаяСсылка)
| КОГДА РегИндексы.Активен
| ТОГДА РегИндексы.Статус
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ТипыСобытийСПАРКРиски.ПустаяСсылка)
| КОНЕЦ КАК Статус,
| ВЫБОР
| КОГДА РегИндексы.Активен ЕСТЬ NULL
| ТОГДА ДАТАВРЕМЯ(1, 1, 1)
| КОГДА РегИндексы.Активен
| ТОГДА РегИндексы.ДатаСтатуса
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаСтатуса
|ИЗ
| ВТ_Контрагенты КАК ВТ_Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИндексыСПАРКРиски КАК РегИндексы
| ПО ВТ_Контрагенты.Контрагент = РегИндексы.Контрагент";
КонецФункции
Функция ТекстЗапросаСписокОбновленияКонтрагентов()
Возврат
"ВЫБРАТЬ ПЕРВЫЕ 1000
| ВТ_Контрагенты.Контрагент КАК Контрагент,
| ВТ_Контрагенты.ИНН КАК ИНН,
| ВТ_Контрагенты.ВидКонтрагента КАК ВидКонтрагента
|ИЗ
| ВТ_Контрагенты КАК ВТ_Контрагенты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИндексыСПАРКРиски КАК РегИндексы
| ПО ВТ_Контрагенты.Контрагент = РегИндексы.Контрагент
| И (РегИндексы.ИНН = ВТ_Контрагенты.ИНН)
|ГДЕ
| ВТ_Контрагенты.ИННКорректный
| И ЕСТЬNULL(РегИндексы.ДатаОбновления, ДАТАВРЕМЯ(1, 1, 1)) <= &СрокГодности
|
|УПОРЯДОЧИТЬ ПО
| ИНН";
КонецФункции
Процедура ОбновитьКэшИндексовСПАРКРиски(
ПараметрыОбновленияКэша,
РезультатВызоваВебСервиса,
ЕстьОшибки)
ПараметрыКонтрагентов = ПараметрыОбновленияКэша.ПараметрыКонтрагентов;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = ПараметрыОбновленияКэша.ТекстЗапросаПоКонтрагентам;
Если ПараметрыКонтрагентов.ЭлементПараметрКонтрагенты <> Неопределено
И ПараметрыКонтрагентов.ЭлементПараметрКонтрагенты.Использование Тогда
Запрос.УстановитьПараметр("Контрагенты", ПараметрыКонтрагентов.ЭлементПараметрКонтрагенты.Значение);
КонецЕсли;
Если ПараметрыКонтрагентов.ЭлементПараметрВидКонтрагента <> Неопределено
И ПараметрыКонтрагентов.ЭлементПараметрВидКонтрагента.Использование Тогда
Запрос.УстановитьПараметр("ВидКонтрагента", ПараметрыКонтрагентов.ЭлементПараметрВидКонтрагента.Значение);
КонецЕсли;
Попытка
Запрос.Выполнить();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СПАРКРиски.ЗаписатьОшибкуВЖурналРегистрации(
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЕстьОшибки = Истина;
КонецПопытки;
СрокГодности = ТекущаяДатаСеанса() - 12 * 60 * 60;
Если ОбщегоНазначения.РазделениеВключено() Тогда
КонтрагентОбластьДанных = ИнтернетПоддержкаПользователей.ЗначениеРазделителяСеанса();
Иначе
КонтрагентОбластьДанных = -1;
КонецЕсли;
ВсеОбработано = Ложь;
Пока Не ВсеОбработано
И Не ЕстьОшибки Цикл
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст = ТекстЗапросаСписокОбновленияКонтрагентов();
Запрос.УстановитьПараметр("СрокГодности", СрокГодности);
Попытка
РезультатЗапроса = Запрос.Выполнить();
ВсеОбработано = РезультатЗапроса.Пустой();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
СПАРКРиски.ЗаписатьОшибкуВЖурналРегистрации(
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
ЕстьОшибки = Истина;
Прервать;
КонецПопытки;
Если ВсеОбработано Тогда
Прервать;
КонецЕсли;
ОписаниеКонтрагентов = Новый Массив;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ОписаниеКонтрагента = СПАРКРиски.НовыйОписаниеКонтрагента();
ОписаниеКонтрагента.ОбластьДанных = КонтрагентОбластьДанных;
ОписаниеКонтрагента.Контрагент = Выборка.Контрагент;
ОписаниеКонтрагента.ВидКонтрагента = Выборка.ВидКонтрагента;
ОписаниеКонтрагента.ИНН = СокрЛП(Выборка.ИНН);
ОписаниеКонтрагентов.Добавить(ОписаниеКонтрагента);
КонецЦикла;
РезультатВызоваВебСервиса = ЗагрузитьИндексыКонтрагентов(
КонтрагентОбластьДанных,
ОписаниеКонтрагентов,
ЕстьОшибки);
КонецЦикла;
МенеджерВременныхТаблиц.Закрыть();
КонецПроцедуры
Функция ЗагрузитьИндексыКонтрагентов(
ОбластьДанных,
ОписаниеКонтрагентов,
ЕстьОшибки)
РезультатВызоваВебСервиса = СПАРКРискиСервис.ЗагрузитьИндексыКонтрагентов(
ОбластьДанных,
ОписаниеКонтрагентов);
ОписаниеКонтрагентов = Новый Массив;
ЕстьОшибки = РезультатВызоваВебСервиса.ВидОшибки <> Перечисления.ВидыОшибокСПАРКРиски.ПустаяСсылка();
Возврат РезультатВызоваВебСервиса;
КонецФункции
#КонецОбласти
#КонецЕсли