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