Кэш индексов 1СПАРК Риски / Просмотр индексов контрагента / Модуль формы

файл
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ИндексыСПАРКРиски = Параметры.ИндексыСПАРКРиски;
	Заголовок = НСтр("ru = '1СПАРК Риски:'") + " " + Строка(ИндексыСПАРКРиски.Контрагент);
	
	ОтобразитьЗначенияИндексов(Параметры.ИндексыСПАРКРиски);
	
	КлючСохраненияПоложенияОкна = Строка(Элементы.ДекорацияСтатусИСобытие.Видимость)
		+ Строка(Элементы.ГруппаСводныйИндикатор.Видимость)
		+ Строка(Элементы.ГруппаИДО.Видимость)
		+ Строка(Элементы.ГруппаИФР.Видимость)
		+ Строка(Элементы.ГруппаИПД.Видимость)
		+ Строка(Элементы.ГруппаОшибкаПодключенияКСервису.Видимость);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

	Если ИмяСобытия = "СПАРКРиски:ИзмененоСостояниеФоновогоЗадания" И Параметр.Статус = "Выполнено" Тогда
		ОтобразитьРезультатыФоновогоЗадания(Параметр.АдресХранилищаФоновогоЗадания);
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ДекорацияОписаниеОшибкиОбработкаНавигационнойСсылки(
		Элемент,
		НавигационнаяСсылкаФорматированнойСтроки,
		СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	Если НавигационнаяСсылкаФорматированнойСтроки = "SPARK:About" Тогда
		СПАРКРискиКлиент.ОбработкаНавигационнойСсылки(
			ЭтотОбъект,
			Элемент,
			НавигационнаяСсылкаФорматированнойСтроки,
			СтандартнаяОбработка);
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура ОтобразитьРезультатыФоновогоЗадания(Знач АдресХранилища)

	Результаты = ПолучитьИзВременногоХранилища(АдресХранилища);
	Если Результаты = Неопределено Тогда
		Возврат;
	КонецЕсли;
	СтрокаРезультат = Результаты.ЗначенияИндексов.Найти(ИндексыСПАРКРиски.ИНН, "ИНН");
	Если СтрокаРезультат <> Неопределено Тогда
		ИндексыСПАРКРиски = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаРезультат);
		ИндексыСПАРКРиски.Вставить(
			"СостояниеВыводаДанных",
			ПредопределенноеЗначение("Перечисление.СостоянияВыводаИндексовСПАРКРиски.ПолученоИзФоновогоЗадания"));
		ИндексыСПАРКРиски.Вставить(
			"СостояниеЗагрузкиДанных",
			ПредопределенноеЗначение("Перечисление.СостоянияЗагрузкиИндексовСПАРКРиски.ПустаяСсылка"));
		ОтобразитьЗначенияИндексов(ИндексыСПАРКРиски);
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ОтобразитьЗначенияИндексов(РезультатИндексыКонтрагента)

	ЦветаСтилей = СПАРКРискиВызовСервера.ЦветаСтилей();
	Элементы.КартинкаОжиданиеЗагрузкиИндексовСПАРКРиски.Видимость = Ложь;

	Элементы.ДекорацияСтатусИСобытие.Видимость  = Ложь;
	Элементы.ДекорацияСтатусИСобытие.ЦветТекста = ЦветаСтилей.ЦветОсобогоТекста;
	Элементы.ГруппаСводныйИндикатор.Видимость   = Ложь;
	Элементы.ГруппаИДО.Видимость = Ложь;
	Элементы.ГруппаИФР.Видимость = Ложь;
	Элементы.ГруппаИПД.Видимость = Ложь;
	Элементы.ГруппаОшибкаПодключенияКСервису.Видимость = Ложь;

	ВидОшибки               = РезультатИндексыКонтрагента.ВидОшибки;
	СостояниеВыводаДанных   = РезультатИндексыКонтрагента.СостояниеВыводаДанных;
	СостояниеЗагрузкиДанных = РезультатИндексыКонтрагента.СостояниеЗагрузкиДанных;

	Если Не ЗначениеЗаполнено(ВидОшибки) Тогда

		// Отображение данных.
		ОшибкаПолученияДанных = Ложь;

		ТекстОшибки = "";
		Если СостояниеВыводаДанных = ПредопределенноеЗначение("Перечисление.СостоянияВыводаИндексовСПАРКРиски.ВКэшеНетДанных") Тогда

			ОшибкаПолученияДанных = Истина;
			Если СостояниеЗагрузкиДанных = ПредопределенноеЗначение("Перечисление.СостоянияЗагрузкиИндексовСПАРКРиски.ЗапущеноФоновоеЗадание") Тогда
				ТекстОшибки = НСтр("ru='Получение данных...'");
			ИначеЕсли СостояниеЗагрузкиДанных = ПредопределенноеЗначение("Перечисление.СостоянияЗагрузкиИндексовСПАРКРиски.ОтменаФоновогоЗадания") Тогда
				ТекстОшибки = НСтр("ru='Ошибка получения данных (слишком медленное соединение или отменено администратором)'");
			ИначеЕсли СостояниеЗагрузкиДанных = ПредопределенноеЗначение("Перечисление.СостоянияЗагрузкиИндексовСПАРКРиски.ОшибкаФоновогоЗадания") Тогда
				ТекстОшибки = НСтр("ru='Ошибка получения данных'");
			Иначе // Загрузка завершена или не осуществлялась.
				ТекстОшибки = НСтр("ru='Ошибка получения данных (данные не получены)'");
			КонецЕсли;

		ИначеЕсли СостояниеВыводаДанных = ПредопределенноеЗначение("Перечисление.СостоянияВыводаИндексовСПАРКРиски.НеправильныйИНН") Тогда

			ОшибкаПолученияДанных = Истина;
			ТекстОшибки = НСтр("ru='Нет информации о контрагенте'");

		ИначеЕсли Не ЗначениеЗаполнено(СостояниеВыводаДанных) Тогда

			ОшибкаПолученияДанных = Истина;
			ТекстОшибки = НСтр("ru='Неопределенная ошибка'");

		КонецЕсли;

		Если СостояниеЗагрузкиДанных = ПредопределенноеЗначение("Перечисление.СостоянияЗагрузкиИндексовСПАРКРиски.ЗапущеноФоновоеЗадание") Тогда
			Элементы.КартинкаОжиданиеЗагрузкиИндексовСПАРКРиски.Видимость = Истина;
		КонецЕсли;

		Если ОшибкаПолученияДанных = Истина Тогда
			Элементы.ДекорацияСтатусИСобытие.Заголовок = ТекстОшибки;
			Элементы.ДекорацияСтатусИСобытие.Видимость = Истина;
			Возврат;
		КонецЕсли;

		Если (РезультатИндексыКонтрагента.Активен <> Истина) Тогда
			Элементы.ДекорацияСтатусИСобытие.Заголовок =
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru='Контрагент прекратил деятельность %1'"),
					Формат(РезультатИндексыКонтрагента.ДатаСтатуса, "ДЛФ=D"));
			Элементы.ДекорацияСтатусИСобытие.Видимость = Истина;
			Возврат;
		КонецЕсли;

		Если РезультатИндексыКонтрагента.ОтображатьСтатус
				И НЕ ПустаяСтрока(РезультатИндексыКонтрагента.СтатусНазвание) Тогда
			Элементы.ДекорацияСтатусИСобытие.Заголовок =
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru='%1 %2'"),
					РезультатИндексыКонтрагента.СтатусНазвание,
					Формат(РезультатИндексыКонтрагента.ДатаСтатуса, "ДЛФ=D"));
			Элементы.ДекорацияСтатусИСобытие.Видимость = Истина;
		КонецЕсли;

		Если (РезультатИндексыКонтрагента.СводныйИндикатор >= 1)
				И (РезультатИндексыКонтрагента.СводныйИндикатор <= 3) Тогда
			Элементы.ГруппаСводныйИндикатор.Видимость = Истина;
			Элементы.ДекорацияСводныйИндикаторЗначение.Заголовок = Новый ФорматированнаяСтрока(
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru='%1'"),
					РезультатИндексыКонтрагента.СводныйИндикаторГрадация),
				,
				СПАРКРискиКлиентСервер.ЦветИндекса(
					РезультатИндексыКонтрагента.СводныйИндикатор,
					"СводныйИндикатор"));
		КонецЕсли;

		Если (РезультатИндексыКонтрагента.ИндексДолжнойОсмотрительности >= 0)
				И (РезультатИндексыКонтрагента.ИндексДолжнойОсмотрительности <= 100) Тогда
			Элементы.ГруппаИДО.Видимость = Истина;
			Элементы.ДекорацияИДОЗначение.Заголовок = Новый ФорматированнаяСтрока(
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru='%1 (%2)'"),
					РезультатИндексыКонтрагента.ИндексДолжнойОсмотрительности,
					НРег(РезультатИндексыКонтрагента.ИДОГрадация)),
				,
				СПАРКРискиКлиентСервер.ЦветИндекса(
					РезультатИндексыКонтрагента.ИндексДолжнойОсмотрительности,
					"ИндексДолжнойОсмотрительности"));
		КонецЕсли;

		Если (РезультатИндексыКонтрагента.ИндексФинансовогоРиска >= 0)
				И (РезультатИндексыКонтрагента.ИндексФинансовогоРиска <= 100) Тогда
			Элементы.ГруппаИФР.Видимость = Истина;
			Элементы.ДекорацияИФРЗначение.Заголовок = Новый ФорматированнаяСтрока(
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru='%1 (%2)'"),
					РезультатИндексыКонтрагента.ИндексФинансовогоРиска,
					НРег(РезультатИндексыКонтрагента.ИФРГрадация)),
				,
				СПАРКРискиКлиентСервер.ЦветИндекса(
					РезультатИндексыКонтрагента.ИндексФинансовогоРиска,
					"ИндексФинансовогоРиска"));
		КонецЕсли;

		Если (РезультатИндексыКонтрагента.ИндексПлатежнойДисциплины >= 0)
				И (РезультатИндексыКонтрагента.ИндексПлатежнойДисциплины <= 100) Тогда
			Элементы.ГруппаИПД.Видимость = Истина;
			Элементы.ДекорацияИПДЗначение.Заголовок = Новый ФорматированнаяСтрока(
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru='%1 (%2)'"),
					РезультатИндексыКонтрагента.ИндексПлатежнойДисциплины,
					НРег(РезультатИндексыКонтрагента.ИПДГрадация)),
				,
				СПАРКРискиКлиентСервер.ЦветИндекса(
					РезультатИндексыКонтрагента.ИндексПлатежнойДисциплины,
					"ИндексПлатежнойДисциплины"));
		КонецЕсли;

	ИначеЕсли ВидОшибки = ПредопределенноеЗначение("Перечисление.ВидыОшибокСПАРКРиски.НеизвестныйИНН")
		Или ВидОшибки = ПредопределенноеЗначение("Перечисление.ВидыОшибокСПАРКРиски.НекорректныйИНН") Тогда

		Элементы.ДекорацияСтатусИСобытие.Заголовок = НСтр("ru='Нет информации о контрагенте'");
		Элементы.ДекорацияСтатусИСобытие.Видимость = Истина;

	Иначе

		Элементы.ГруппаОшибкаПодключенияКСервису.Видимость = Истина;

		// Ошибка подключения.
		Элементы.ДекорацияОписаниеОшибки.Заголовок =
			СтроковыеФункции.ФорматированнаяСтрока(
				НСтр("ru='Оценка надежности контрагентов.
				|
				|<a href=""SPARK:About"">Подробнее о сервисе</a>'"));

	КонецЕсли;

КонецПроцедуры

#КонецОбласти

Связанные материалы