Справки 1СПАРК Риски / Форма списка / Модуль формы

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

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

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

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

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

&НаКлиенте
Процедура КонтрагентОтборПриИзменении(Элемент)
	
	УстановитьОтборПоКонтрагенту();
	
КонецПроцедуры

&НаКлиенте
Процедура КакНастроитьAdobeReader(Команда)
	
	URLИнструкций = "http://downloads.v8.1c.ru/content/Instruction/how-to-setup-Adobe-acrobat-digital-signature-verification.pdf";
	ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(URLИнструкций);
	
КонецПроцедуры

&НаКлиенте
Процедура ДекорацияУведомлениеПодробнееНажатие(Элемент)
	
	Если Не ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.МониторПортала1СИТС") Тогда
		Возврат;
	КонецЕсли;
	
	МодульМониторПортала1СИТСКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("МониторПортала1СИТСКлиент");
	МодульМониторПортала1СИТСКлиент.ОткрытьСообщениеОбОпцияхИнтернетПоддержки(
		УведомленияМонитораПортала);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Если ВыбраннаяСтрока = Неопределено Или Не ДоступнаЗагрузкаСправок Тогда
		Возврат;
	КонецЕсли;
	
	ДанныеСтроки = Элементы.Список.ДанныеСтроки(ВыбраннаяСтрока);
	СПАРКРискиКлиент.ОткрытьСправкуСПАРКРиски(
		Неопределено,
		ДанныеСтроки.Ссылка,
		УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	
	Отказ = Истина;
	
КонецПроцедуры

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

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

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ЗапроситьСправку(Команда)
	
	Если Не ЗначениеЗаполнено(Контрагент) Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(
			НСтр("ru = 'Поле ""Контрагент"" не заполнено.'"),
			,
			"Контрагент");
		Возврат;
	КонецЕсли;
	
	ЗапроситьНовуюСправку();
	
КонецПроцедуры

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

&НаКлиенте
Процедура КакПользоватьсяСправкой(Команда)
	
	URLИнструкций = "http://downloads.v8.1c.ru/content/Instruction/1spark-report.pdf";
	ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(URLИнструкций);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура УстановитьОтборПоКонтрагенту()
	
	Если ЗначениеЗаполнено(Контрагент) Тогда
		
		ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(
			Список.Отбор,
			"Контрагент",
			Контрагент,
			,
			,
			Истина);
		
	Иначе
		
		ОтборыПоКонтрагенту = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(Список.Отбор, "Контрагент");
		Для Каждого ТекущийОтбор Из ОтборыПоКонтрагенту Цикл
			ТекущийОтбор.Использование = Ложь;
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

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

&НаСервере
Процедура ПоказатьУведомления()
	
	УведомленияМонитораПортала = СПАРКРиски.УведомлениеПользователя(
		СПАРКРиски.ИдентификаторУслугиСправкиПоКомпаниям());
	
	Если УведомленияМонитораПортала = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Элементы.ГруппаУведомлениеСервиса.Видимость = Истина;
	Элементы.ДекорацияТекстУведомления.Заголовок = УведомленияМонитораПортала.ТекстУведомления;
	
КонецПроцедуры

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

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