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