&ИзменениеИКонтроль("ОбъектыПоКритериюОтбора")
Функция ОбъектыПоКритериюОтбора(ЗначениеКритерияОтбора)
ШаблонЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПсевдонимТаблицы.Ссылка КАК Ссылка
|ИЗ
| ИмяТаблицы КАК ПсевдонимТаблицы
|ГДЕ
| ПсевдонимТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";
ШаблонЗапросаОбъединения = "ВЫБРАТЬ
| ПсевдонимТаблицы.Ссылка КАК Ссылка
|ИЗ
| ИмяТаблицы КАК ПсевдонимТаблицы
|ГДЕ
| ПсевдонимТаблицы.ИмяРеквизита = &ЗначениеКритерияОтбора";
ЧастиЗапроса = Новый Массив;
ТекстЧастиЗапроса = "";
Для Каждого ЭлементСостава Из Метаданные.КритерииОтбора.СвязанныеДокументы.Состав Цикл
Если НЕ ЭлементСостава.Тип.СодержитТип(ТипЗнч(ЗначениеКритерияОтбора)) Тогда
Продолжить;
КонецЕсли;
ПутьКДанным = ЭлементСостава.ПолноеИмя();
Если СтрНайти(ПутьКДанным, "ТабличнаяЧасть") Тогда
ОбъектМетаданных = ЭлементСостава.Родитель().Родитель();
Иначе
ОбъектМетаданных = ЭлементСостава.Родитель();
КонецЕсли;
Если НЕ ПравоДоступа("Чтение", ОбъектМетаданных) Тогда
Продолжить;
КонецЕсли;
Точка = СтрНайти(ПутьКДанным, ".", НаправлениеПоиска.СКонца);
ИмяРеквизита = Сред(ПутьКДанным, Точка + 1);
ИмяТаблицы = ЭлементСостава.Родитель().ПолноеИмя();
ИмяТаблицы = СтрЗаменить(ИмяТаблицы, "ТабличнаяЧасть.", "");
Точка = СтрНайти(ИмяТаблицы, ".", НаправлениеПоиска.СКонца);
ПсевдонимТаблицы = "Таблица_" + Сред(ИмяТаблицы, Точка + 1);
ТекстЧастиЗапроса = ?(ТекстЧастиЗапроса = "", ШаблонЗапроса, ШаблонЗапросаОбъединения);
ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяТаблицы", ИмяТаблицы);
ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ПсевдонимТаблицы", ПсевдонимТаблицы);
ТекстЧастиЗапроса = СтрЗаменить(ТекстЧастиЗапроса, "ИмяРеквизита", ИмяРеквизита);
ЧастиЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЦикла;
Если ЧастиЗапроса.Количество() > 0 Тогда
Запрос = Новый Запрос;
Разделитель = Символы.ПС + "ОБЪЕДИНИТЬ" + Символы.ПС;
Запрос.Текст = СтрСоединить(ЧастиЗапроса, Разделитель);
Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ЗначениеКритерияОтбора);
Возврат Запрос.Выполнить().Выгрузить();
Иначе
Возврат Новый ТаблицаЗначений;
КонецЕсли;
КонецФункции