НайтиВариантыОтчетовДляВывода (БСП)

Автор: 1С
ОбщийМодуль.ВариантыОтчетов
БСП

Найти варианты отчетов для вывода.

Процедура НайтиВариантыОтчетовДляВывода(ПараметрыЗаполнения, АдресРезультата) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Подсистемы.Ссылка КАК Подсистема,
	|	Подсистемы.РазделСсылка КАК РазделСсылка,
	|	Подсистемы.Представление КАК Представление,
	|	Подсистемы.Приоритет КАК Приоритет
	|ПОМЕСТИТЬ втПодсистемы
	|ИЗ
	|	&ТаблицаПодсистем КАК Подсистемы
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВариантыОтчетов.Ссылка КАК Ссылка,
	|	ПредопределенныеРазмещение.Подсистема КАК Подсистема,
	|	ПредопределенныеРазмещение.Важный КАК Важный,
	|	ПредопределенныеРазмещение.СмТакже КАК СмТакже,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|			ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000))
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияВариантов.Наименование) КАК СТРОКА(1000))
	|	КОНЕЦ КАК Наименование,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|				И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
	|			ТОГДА ВЫРАЗИТЬ(ВариантыКонфигурации.Описание КАК СТРОКА(1000))
	|		КОГДА НЕ &ЭтоОсновнойЯзык
	|				И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
	|			ТОГДА ВЫРАЗИТЬ(ПредставленияИзКонфигурации.Описание КАК СТРОКА(1000))
	|		ИНАЧЕ ВЫРАЗИТЬ(ВариантыОтчетов.Описание КАК СТРОКА(1000))
	|	КОНЕЦ КАК Описание,
	|	ВариантыОтчетов.Отчет КАК Отчет,
	|	ВариантыОтчетов.ТипОтчета КАК ТипОтчета,
	|	ВариантыОтчетов.КлючВарианта КАК КлючВарианта,
	|	ВариантыОтчетов.Автор КАК Автор,
	|	ВЫБОР
	|		КОГДА ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена
	|			ТОГДА ВариантыОтчетов.ВидимостьПоУмолчанию
	|		ИНАЧЕ ВариантыКонфигурации.ВидимостьПоУмолчанию
	|	КОНЕЦ КАК ВидимостьПоУмолчанию,
	|	ВариантыОтчетов.Родитель КАК Родитель,
	|	ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров
	|ПОМЕСТИТЬ втПредопределенные
	|ИЗ
	|	Справочник.ВариантыОтчетов КАК ВариантыОтчетов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК ПредопределенныеРазмещение
	|		ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском)
	|				ИЛИ (&НетОтбораПоПодсистемамИОтчетам
	|					ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском)))
	|			И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка
	|			И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем))
	|			И (ВариантыОтчетов.ПометкаУдаления = ЛОЖЬ)
	|			И (&НетОтбораПоПодсистемамИОтчетам
	|				ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя))
	|			И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы))
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации
	|		ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации
	|		ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка
	|			И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов
	|		ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка
	|			И (ПредставленияВариантов.КодЯзыка = &КодЯзыка)
	|ГДЕ
	|	НЕ ВариантыОтчетов.ПометкаУдаления
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ВариантыОтчетов.Ссылка,
	|	ПредопределенныеРазмещение.Подсистема,
	|	ПредопределенныеРазмещение.Важный,
	|	ПредопределенныеРазмещение.СмТакже,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|			ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ВариантыРасширений.Наименование, ВариантыОтчетов.Наименование) КАК СТРОКА(1000))
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзРасширений.Наименование, ПредставленияВариантов.Наименование) КАК СТРОКА(1000))
	|	КОНЕЦ,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|				И ПОДСТРОКА(ВариантыОтчетов.Описание, 1, 1) = """"
	|			ТОГДА ВЫРАЗИТЬ(ВариантыОтчетов.ПредопределенныйВариант.Описание КАК СТРОКА(1000))
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ПредставленияИзРасширений.Описание, ПредставленияВариантов.Описание) КАК СТРОКА(1000))
	|	КОНЕЦ,
	|	ВариантыОтчетов.Отчет,
	|	ВариантыОтчетов.ТипОтчета,
	|	ВариантыОтчетов.КлючВарианта,
	|	ВариантыОтчетов.Автор,
	|	ВЫБОР
	|		КОГДА ВариантыОтчетов.ВидимостьПоУмолчаниюПереопределена
	|			ТОГДА ВариантыОтчетов.ВидимостьПоУмолчанию
	|		ИНАЧЕ ВариантыРасширений.ВидимостьПоУмолчанию
	|	КОНЕЦ,
	|	ВариантыОтчетов.Родитель,
	|	ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров
	|ИЗ
	|	Справочник.ВариантыОтчетов КАК ВариантыОтчетов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Размещение КАК ПредопределенныеРазмещение
	|		ПО (ВариантыОтчетов.Ссылка В (&ВариантыНайденныеПоиском)
	|				ИЛИ (&НетОтбораПоПодсистемамИОтчетам
	|					ИЛИ ПредопределенныеРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском)))
	|			И ВариантыОтчетов.ПредопределенныйВариант = ПредопределенныеРазмещение.Ссылка
	|			И (ПредопределенныеРазмещение.Подсистема В (&МассивПодсистем))
	|			И (&НетОтбораПоПодсистемамИОтчетам
	|				ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя))
	|			И (НЕ ПредопределенныеРазмещение.Ссылка В (&ОтключенныеВариантыПрограммы))
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений
	|		ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений
	|		ПО ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка
	|			И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ПредставленияВариантов
	|		ПО ВариантыОтчетов.Ссылка = ПредставленияВариантов.Ссылка
	|			И (ПредставленияВариантов.КодЯзыка = &КодЯзыка)
	|ГДЕ
	|	НЕ ВариантыОтчетов.ПометкаУдаления
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ВариантыРазмещение.Ссылка КАК Ссылка,
	|	ВариантыРазмещение.Подсистема КАК Подсистема,
	|	ВариантыРазмещение.Использование КАК Использование,
	|	ВариантыРазмещение.Важный КАК Важный,
	|	ВариантыРазмещение.СмТакже КАК СмТакже,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|			ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Наименование, ВариантыРасширений.Наименование), ВариантыОтчетов.Наименование) КАК СТРОКА(1000))
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Наименование, ПредставленияИзРасширений.Наименование), ВариантыПредставления.Наименование) КАК СТРОКА(1000))
	|	КОНЕЦ КАК Наименование,
	|	ВЫБОР
	|		КОГДА &ЭтоОсновнойЯзык
	|			ТОГДА ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ВариантыКонфигурации.Описание, ВариантыРасширений.Описание), ВариантыОтчетов.Описание) КАК СТРОКА(1000))
	|		ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ЕСТЬNULL(ПредставленияИзКонфигурации.Описание, ПредставленияИзРасширений.Описание), ВариантыПредставления.Описание) КАК СТРОКА(1000))
	|	КОНЕЦ КАК Описание,
	|	ВариантыОтчетов.Отчет КАК Отчет,
	|	ВариантыОтчетов.ТипОтчета КАК ТипОтчета,
	|	ВариантыОтчетов.КлючВарианта КАК КлючВарианта,
	|	ВариантыОтчетов.Автор КАК Автор,
	|	ВЫБОР
	|		КОГДА ВариантыОтчетов.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка)
	|			ТОГДА ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка)
	|		КОГДА ВариантыОтчетов.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка)
	|			ТОГДА ВариантыОтчетов.Родитель
	|		ИНАЧЕ ВариантыОтчетов.Родитель.Родитель
	|	КОНЕЦ КАК Родитель,
	|	ВариантыОтчетов.ВидимостьПоУмолчанию КАК ВидимостьПоУмолчанию,
	|	ВариантыОтчетов.ПредопределенныйВариант.КлючЗамеров КАК КлючЗамеров
	|ПОМЕСТИТЬ втВарианты
	|ИЗ
	|	Справочник.ВариантыОтчетов.Размещение КАК ВариантыРазмещение
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов КАК ВариантыОтчетов
	|		ПО (ВариантыОтчетов.Ссылка = ВариантыРазмещение.Ссылка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыОтчетов.Представления КАК ВариантыПредставления
	|		ПО (ВариантыОтчетов.Ссылка = ВариантыПредставления.Ссылка)
	|			И (ВариантыПредставления.КодЯзыка = &КодЯзыка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов КАК ВариантыКонфигурации
	|		ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыКонфигурации.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетов.Представления КАК ПредставленияИзКонфигурации
	|		ПО (ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзКонфигурации.Ссылка)
	|			И (ПредставленияИзКонфигурации.КодЯзыка = &КодЯзыка)
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений КАК ВариантыРасширений
	|		ПО ВариантыОтчетов.ПредопределенныйВариант = ВариантыРасширений.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПредопределенныеВариантыОтчетовРасширений.Представления КАК ПредставленияИзРасширений
	|		ПО (ВариантыОтчетов.ПредопределенныйВариант = ПредставленияИзРасширений.Ссылка)
	|			И (ПредставленияИзРасширений.КодЯзыка = &КодЯзыка)
	|ГДЕ
	|	(ВариантыРазмещение.Ссылка В (&ВариантыНайденныеПоиском)
	|			ИЛИ (&НетОтбораПоПодсистемамИОтчетам
	|				ИЛИ ВариантыРазмещение.Подсистема В (&ПодсистемыНайденныеПоиском)))
	|	И (НЕ ВариантыОтчетов.ТолькоДляАвтора
	|			ИЛИ ВариантыОтчетов.Автор = &ТекущийПользователь)
	|	И ВариантыРазмещение.Подсистема В(&МассивПодсистем)
	|	И (&НетОтбораПоПодсистемамИОтчетам
	|			ИЛИ ВариантыОтчетов.Отчет В (&ОтчетыПользователя))
	|	И НЕ ВариантыОтчетов.ПредопределенныйВариант В (&ОтключенныеВариантыПрограммы)
	|	И (НЕ ВариантыОтчетов.Пользовательский
	|			ИЛИ НЕ ВариантыОтчетов.ИнтерактивнаяПометкаУдаления)
	|	И (ВариантыОтчетов.Пользовательский
	|			ИЛИ НЕ ВариантыОтчетов.ПометкаУдаления)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	|	ЕСТЬNULL(втВарианты.Ссылка, втПредопределенные.Ссылка) КАК Ссылка,
	|	ЕСТЬNULL(втВарианты.Подсистема, втПредопределенные.Подсистема) КАК Подсистема,
	|	ЕСТЬNULL(втВарианты.Важный, втПредопределенные.Важный) КАК Важный,
	|	ЕСТЬNULL(втВарианты.СмТакже, втПредопределенные.СмТакже) КАК СмТакже,
	|	ЕСТЬNULL(втВарианты.Наименование, втПредопределенные.Наименование) КАК Наименование,
	|	ЕСТЬNULL(втВарианты.Описание, втПредопределенные.Описание) КАК Описание,
	|	ЕСТЬNULL(втВарианты.Автор, втПредопределенные.Автор) КАК Автор,
	|	ЕСТЬNULL(втВарианты.Отчет, втПредопределенные.Отчет) КАК Отчет,
	|	ЕСТЬNULL(втВарианты.ТипОтчета, втПредопределенные.ТипОтчета) КАК ТипОтчета,
	|	ЕСТЬNULL(втВарианты.КлючВарианта, втПредопределенные.КлючВарианта) КАК КлючВарианта,
	|	ЕСТЬNULL(втВарианты.ВидимостьПоУмолчанию, втПредопределенные.ВидимостьПоУмолчанию) КАК ВидимостьПоУмолчанию,
	|	ЕСТЬNULL(втВарианты.Родитель, втПредопределенные.Родитель) КАК Родитель,
	|	ВЫБОР
	|		КОГДА ЕСТЬNULL(втВарианты.Родитель, втПредопределенные.Родитель) = ЗНАЧЕНИЕ(Справочник.ВариантыОтчетов.ПустаяСсылка)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК ВерхнийУровень,
	|	ЕСТЬNULL(втВарианты.КлючЗамеров, втПредопределенные.КлючЗамеров) КАК КлючЗамеров
	|ПОМЕСТИТЬ втВсеВарианты
	|ИЗ
	|	втПредопределенные КАК втПредопределенные
	|		ПОЛНОЕ СОЕДИНЕНИЕ втВарианты КАК втВарианты
	|		ПО втПредопределенные.Ссылка = втВарианты.Ссылка
	|			И втПредопределенные.Подсистема = втВарианты.Подсистема
	|ГДЕ
	|	ЕСТЬNULL(втВарианты.Использование, ИСТИНА)
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	втВсеВарианты.Ссылка КАК Ссылка,
	|	втВсеВарианты.Подсистема КАК Подсистема,
	|	втПодсистемы.Представление КАК ПодсистемаПредставление,
	|	ЕСТЬNULL(втПодсистемы.Приоритет, """") КАК ПодсистемаПриоритет,
	|	втПодсистемы.РазделСсылка КАК РазделСсылка,
	|	ВЫБОР
	|		КОГДА втВсеВарианты.Подсистема = втПодсистемы.РазделСсылка
	|				И втВсеВарианты.СмТакже = ЛОЖЬ
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК БезГруппы,
	|	втВсеВарианты.Важный КАК Важный,
	|	втВсеВарианты.СмТакже КАК СмТакже,
	|	ВЫБОР
	|		КОГДА втВсеВарианты.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Дополнительный)
	|			ТОГДА ИСТИНА
	|		ИНАЧЕ ЛОЖЬ
	|	КОНЕЦ КАК Дополнительный,
	|	ЕСТЬNULL(ЛичныеНастройки.Видимость, втВсеВарианты.ВидимостьПоУмолчанию) КАК Видимость,
	|	ЕСТЬNULL(ЛичныеНастройки.БыстрыйДоступ, ЛОЖЬ) КАК БыстрыйДоступ,
	|	ВЫБОР
	|		КОГДА втВсеВарианты.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Внутренний)
	|				ИЛИ втВсеВарианты.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Расширение)
	|			ТОГДА втВсеВарианты.Отчет.Имя
	|		КОГДА втВсеВарианты.ТипОтчета = ЗНАЧЕНИЕ(Перечисление.ТипыОтчетов.Дополнительный)
	|			ТОГДА """"
	|		ИНАЧЕ ПОДСТРОКА(ВЫРАЗИТЬ(втВсеВарианты.Отчет КАК СТРОКА(150)), 14, 137)
	|	КОНЕЦ КАК ИмяОтчета,
	|	ЕСТЬNULL(втВсеВарианты.Наименование, """") КАК Наименование,
	|	втВсеВарианты.Описание КАК Описание,
	|	втВсеВарианты.Автор КАК Автор,
	|	втВсеВарианты.Отчет КАК Отчет,
	|	втВсеВарианты.ТипОтчета КАК ТипОтчета,
	|	втВсеВарианты.КлючВарианта КАК КлючВарианта,
	|	втВсеВарианты.Родитель КАК Родитель,
	|	втВсеВарианты.ВерхнийУровень КАК ВерхнийУровень,
	|	втВсеВарианты.КлючЗамеров КАК КлючЗамеров
	|ИЗ
	|	втВсеВарианты КАК втВсеВарианты
	|		ЛЕВОЕ СОЕДИНЕНИЕ втПодсистемы КАК втПодсистемы
	|		ПО втВсеВарианты.Подсистема = втПодсистемы.Подсистема
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиВариантовОтчетов КАК ЛичныеНастройки
	|		ПО втВсеВарианты.Подсистема = ЛичныеНастройки.Подсистема
	|			И втВсеВарианты.Ссылка = ЛичныеНастройки.Вариант
	|			И (ЛичныеНастройки.Пользователь = &ТекущийПользователь)
	|ГДЕ
	|	(&НетОтбораПоВидимости
	|			ИЛИ ЕСТЬNULL(ЛичныеНастройки.Видимость, втВсеВарианты.ВидимостьПоУмолчанию))
	|
	|УПОРЯДОЧИТЬ ПО
	|	ПодсистемаПриоритет,
	|	Наименование";
	
	ПоискПоСтроке = ЗначениеЗаполнено(ПараметрыЗаполнения.СтрокаПоиска);
	ТолькоТекущийРаздел = ПараметрыЗаполнения.РежимНастройки Или Не ПоискПоСтроке Или ПараметрыЗаполнения.ИскатьВоВсехРазделах = 0;
	ТаблицаПодсистем = ПараметрыЗаполнения.ПодсистемыПрограммы;
	ТаблицаПодсистем.Индексы.Добавить("Ссылка");
	МассивПодсистем = ТаблицаПодсистем.ВыгрузитьКолонку("Ссылка");
	
	ПараметрыПоиска = Новый Структура;
	Если ПоискПоСтроке Тогда
		ПараметрыПоиска.Вставить("СтрокаПоиска", ПараметрыЗаполнения.СтрокаПоиска);
	КонецЕсли;
	Если ТолькоТекущийРаздел Тогда
		ПараметрыПоиска.Вставить("Подсистемы", МассивПодсистем);
	КонецЕсли;
	РезультатПоиска = НайтиВариантыОтчетов(ПараметрыПоиска, Ложь, Истина);
	
	Запрос.УстановитьПараметр("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
	Запрос.УстановитьПараметр("МассивПодсистем", МассивПодсистем);
	Запрос.УстановитьПараметр("ТаблицаПодсистем", ТаблицаПодсистем);
	Запрос.УстановитьПараметр("РазделСсылка", ПараметрыЗаполнения.ТекущийРазделСсылка);
	Запрос.УстановитьПараметр("ЭтоОсновнойЯзык", ТекущийЯзык() = Метаданные.ОсновнойЯзык);
	Запрос.УстановитьПараметр("КодЯзыка", ТекущийЯзык().КодЯзыка);
	Запрос.УстановитьПараметр("ВариантыНайденныеПоиском", РезультатПоиска.Ссылки);
	Запрос.УстановитьПараметр("ПодсистемыНайденныеПоиском", РезультатПоиска.Подсистемы);
	Запрос.УстановитьПараметр("ОтчетыПользователя", ПараметрыПоиска.ОтчетыПользователя);
	Запрос.УстановитьПараметр("ОтключенныеВариантыПрограммы", ПараметрыПоиска.ОтключенныеВариантыПрограммы);
	Запрос.УстановитьПараметр("НетОтбораПоПодсистемамИОтчетам", Не ПоискПоСтроке И ПараметрыПоиска.Подсистемы.Количество() = 0);
	Запрос.УстановитьПараметр("НетОтбораПоВидимости", ПараметрыЗаполнения.РежимНастройки Или ПоискПоСтроке);
	
	ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
	ЗаполнитьИменаОтчетов(ТаблицаРезультат);
	
	ТаблицаРезультат.Колонки.Добавить("ВыводитсяВместеСОсновным", Новый ОписаниеТипов("Булево"));
	ТаблицаРезультат.Колонки.Добавить("КоличествоПодчиненных", Новый ОписаниеТипов("Число"));
	ТаблицаРезультат.Индексы.Добавить("Ссылка");
	
	Если ПоискПоСтроке Тогда
		// Удаление записей о вариантах, связанных с подсистемами, если запись не фигурирует в связи.
		Для Каждого КлючИЗначение Из РезультатПоиска.ВариантыСвязанныеСПодсистемами Цикл
			ВариантСсылка = КлючИЗначение.Ключ;
			СвязанныеПодсистемы = КлючИЗначение.Значение;
			Найденные = ТаблицаРезультат.НайтиСтроки(Новый Структура("Ссылка", ВариантСсылка));
			Для Каждого СтрокаТаблицы Из Найденные Цикл
				Если СвязанныеПодсистемы.Найти(СтрокаТаблицы.Подсистема) = Неопределено Тогда
					ТаблицаРезультат.Удалить(СтрокаТаблицы);
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
		// Удаление записей о родителях, связанных с вариантами, если родитель пытается вывестись один (без вариантов).
		Для Каждого РодительСсылка Из РезультатПоиска.РодителиСвязанныеСВариантами Цикл
			МестаВывода = ТаблицаРезультат.НайтиСтроки(Новый Структура("Ссылка", РодительСсылка));
			Для Каждого СтрокаТаблицы Из МестаВывода Цикл
				Найденные = ТаблицаРезультат.НайтиСтроки(Новый Структура("Подсистема, Родитель", СтрокаТаблицы.Подсистема, РодительСсылка));
				Если Найденные.Количество() = 0 Тогда
					ТаблицаРезультат.Удалить(СтрокаТаблицы);
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
	КонецЕсли;
	
	Если ТолькоТекущийРаздел Тогда
		ДругиеРазделы = Новый Массив;
	Иначе
		КопияТаблицы = ТаблицаРезультат.Скопировать();
		КопияТаблицы.Свернуть("РазделСсылка");
		ДругиеРазделы = КопияТаблицы.ВыгрузитьКолонку("РазделСсылка");
		Индекс = ДругиеРазделы.Найти(ПараметрыЗаполнения.ТекущийРазделСсылка);
		Если Индекс <> Неопределено Тогда
			ДругиеРазделы.Удалить(Индекс);
		КонецЕсли;
	КонецЕсли;
	
	МассивСлов = ?(ПоискПоСтроке, 
		ВариантыОтчетовКлиентСервер.РазложитьСтрокуПоискаВМассивСлов(ВРег(СокрЛП(ПараметрыЗаполнения.СтрокаПоиска))),
		Неопределено);
	
	Результат = Новый Структура;
	Результат.Вставить("ТолькоТекущийРаздел", ТолькоТекущийРаздел);
	Результат.Вставить("ТаблицаПодсистем", ТаблицаПодсистем);
	Результат.Вставить("ДругиеРазделы", ДругиеРазделы);
	Результат.Вставить("Варианты", ТаблицаРезультат);
	Результат.Вставить("ИспользоватьПодсветку", ПоискПоСтроке);
	Результат.Вставить("РезультатПоиска", РезультатПоиска);
	Результат.Вставить("МассивСлов", МассивСлов);
	
	ПоместитьВоВременноеХранилище(Результат, АдресРезультата);
КонецПроцедуры

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

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

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

НайтиВариантыОтчетов (БСП)

УстановитьРежимВыводаВПанеляхОтчетов (БСП)

УдалитьВариантОтчета (БСП)

УдалитьПользовательскийВариантОтчета (БСП)

ПриУдаленииПользовательскихВариантовОтчета (БСП)

ТаблицаВариантовОтчетов (БСП)

ОтключенныеВариантыОтчетов (БСП)

ПредопределенныеВариантыОтчетов (БСП)

ВариантОтчета (БСП)

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