Проверки (БСП)

Автор: 1С
ОбщийМодуль.ПроверкаИКорректировкаДанных
БСП

Проверки. Возвращает таблицу модулей проверки.

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

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

Рекомендации

Похожие публикации

Проверка заполнения на клиенте

Проверка поля на существование

ВыполнитьПроверкуПодключения (БСП)

УзлыДляПроверкиДоступности (БСП)

Проверка, есть ли ключ у соответствия

Проверка справочника или документа на модифицированность

ПроверкаПоИдентификатору (БСП)

Проверка_ПослеВыполненияGetSignOIDFromCert (БСП)

Проверка_ПослеВыполненияC14N_SignedInfo (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз