• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

7.7 Универсальный Запрос

  • Автор темы Автор темы olga13
  • Дата начала Дата начала
O

olga13

Добрый день!
Подскажите, возможно ли построить запрос, который бы обрабатывал не конкретный вид справочника, а выбранный пользователем интерактивно. Текст запроса примитивный, но не писать же его для каждого вида справочника.
Код:
Процедура СформироватьСписок()
Перем Запрос, ТекстЗапроса;

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = 
"//{{ЗАПРОС(СформироватьСписок)
|ТекущийЭлемент = Справочник.Товары.ТекущийЭлемент;
|Группировка ТекущийЭлемент без групп;
|"//}}ЗАПРОС
;

Если КромеВыбТовары = 0 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие(ТекущийЭлемент в ВыбТовары);
|";
ИначеЕсли КромеВыбТовары = 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|Условие(НЕ(ТекущийЭлемент в ВыбТовары));
|";
КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

Сп = СоздатьОбъект("СписокЗначений");
Пока Запрос.Группировка(1) = 1 Цикл
Сп.ДобавитьЗначение(Запрос.ТекущийЭлемент);
КонецЦикла;

КонецПроцедуры
 
Конечно!
Делаете цикл по метаданным справочников ( виды справочников, что есть в системе) . Загоняете в список. После выбора значения формируете цикл по метаданным "реквизит" этого справочника и составляете текст запроса. Исполняете и выводите что надо.

Для поля выбора делаете назначение типа после выбора справочника из списка.
 
Конечно!
Делаете цикл по метаданным справочников ( виды справочников, что есть в системе) . Загоняете в список. После выбора значения формируете цикл по метаданным "реквизит" этого справочника и составляете текст запроса. Исполняете и выводите что надо.

Для поля выбора делаете назначение типа после выбора справочника из списка.

Так в том-то и весь вопрос, как должен выглядеть текст запроса. Цикл с метаданными организовать не проблема. А как написать ТекущийЭлемент = ЧТО??? Пробовала и внешние переменные, и строковые операторы. Ругается на неправильный синтаксис запроса.
 
"ТекущийЭлемент = Справочник."+ИмяСправочника+"ТекущийЭлемент
 
"ТекущийЭлемент = Справочник."+ИмяСправочника+"ТекущийЭлемент

Дык я самого начала так пробовала, не работает!

-------------------- СформироватьСписок --------------------
ТекущийЭлемент = Справочник. <<?>> " + ВыбСпр + ".ТекущийЭлемент;
Запрос[3] : Неожиданное выражение '" + ВыбСпр + "'
Группировка ТекущийЭлемент <<?>> без групп;
Запрос[4] : Переменная 'ТекущийЭлемент' не опеределена
Ошибок - 2, Предупреждений - 0.

И так тоже не работает:
Код:
	ТекСправочник = "Справочник." + ВыбСпр + ".ТекущийЭлемент";

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = 
"//{{ЗАПРОС(СформироватьСписок)
|ТекущийЭлемент = ТекСправочник;
|Группировка ТекущийЭлемент без групп;
|"//}}ЗАПРОС
;
-------------------- СформироватьСписок --------------------
ТекущийЭлемент = <<?>> ТекСправочник;
Запрос[2] : Неверно заданный путь 'ТекСправочник'
Группировка ТекущийЭлемент <<?>> без групп;
Запрос[3] : Переменная 'ТекущийЭлемент' не опеределена
Ошибок - 2, Предупреждений - 0.
 
Всё, поборола!
Надо было так:

ТекстЗапроса = ТекстЗапроса + "ТекущийЭлемент = " + ТекСправочник + ";";

Спасибо всем, кто откликнулся.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD