Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
17 апр 2026, 15:12

запрос из базы SQL

Автор Funt432286, 04 мар 2026, 13:25

0 Пользователей и 1 гость просматривают эту тему.

Funt432286

Всем доброго времени суток!

Получаю данные из старой базы через запросы в SQL.
Результатом запроса возвращаю ТаблицуЗначений, но общим списком. Не получается в запросе к Базе поставить условия выбора из базы.
Может кто подскажет как запихнуть параметр условия, знаю что он прописывается в запросе как WHREE, но как передать значение?

Просто приходится закидывать в созданную ТЗ и из нее обычным запросом уже выбирать данные
Запрос = "SELECT
|   Zakazchik._Description AS Заказчик,
|   Manager._Description AS Менеджер

|FROM dbo._Reference229 Manager
|   LEFT JOIN dbo._Reference136 Zakazchik
| ON Manager._IDRRef =Zakazchik._Fld32055RRef";

РезультатЗапроса = А_Общий.ПолучитьТаблицуНаСервере(Запрос);

// **************************************************************
// ***** Создание таблицы с типами данных ************
ТаблЗаказчикВТ = Новый ТаблицаЗначений;
ТаблЗаказчикВТ.Колонки.Добавить("Заказчик", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)));
ТаблЗаказчикВТ.Колонки.Добавить("Менеджер", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(100)));

Для Каждого Стр Из А_Общий.ПолучитьТаблицуНаСервере(Запрос) Цикл
НоваяСтрока = ТаблЗаказчикВТ.Добавить();
НоваяСтрока.Заказчик = Стр.Заказчик;
НоваяСтрока.Менеджер = Стр.Менеджер;
КонецЦикла;

// **************************************************************
ЗапросВТ = Новый Запрос;
ЗапросВТ.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗапросВТ.Текст=
"ВЫБРАТЬ
|    *
|ПОМЕСТИТЬ ЗаказчикВТ
|ИЗ
|    &ТаблЗаказчикВТ КАК ЗаказчикВТ";
ЗапросВТ.УстановитьПараметр("ТаблЗаказчикВТ",  ТаблЗаказчикВТ);
ЗапросВТ.Выполнить();

ЗапросВТ.Текст =
"ВЫБРАТЬ
| ЗаказчикВТ.Заказчик
//| ЗаказчикВТ.Менеджер
|ИЗ
| ЗаказчикВТ КАК ЗаказчикВТ
|ГДЕ
| ЗаказчикВТ.Менеджер = &МенеджерФорма
|УПОРЯДОЧИТЬ ПО
| ЗаказчикВТ.Заказчик";

ЗапросВТ.УстановитьПараметр("МенеджерФорма",  МенеджерФорма.Наименование);


antoneus

Ну, наверно, так.

"SELECT
|   Zakazchik._Description AS Заказчик,
|   Manager._Description AS Менеджер
|FROM dbo._Reference229 Manager
|   LEFT JOIN dbo._Reference136 Zakazchik
|        ON Manager._IDRRef =Zakazchik._Fld32055RRef
|WHERE
|     Manager._Description = '" + МенеджерФорма.Наименование + "'

LexaK

Funt432286, у вас текстовые данные, так в условии и пишите 
where Zakazchik._Description = 'ваш текст'
and ...

Запрос = Запрос + Условиеwhere; //Условие формируете программно
если помогло нажмите: Спасибо!

Funt432286

спасибо большое, в данном варианте мне необходимо как параметр с формы  Manager._Description = '" + МенеджерФорма.Наименование + "'

Funt432286

подскажите пожалуйста

Пытаюсь в качестве параметра в запросе внести массив

    СписокМенеджеров = Новый Массив;
СписокМенеджеров.Добавить(МенеджерФорма.ИмяСтароеБД);

.............

    // ************ запрос из СТАРОЙ базы ***************
Запрос = "
|SELECT
| Заказчик._Description AS Заказчик,
| Заказчик._Fld2632 AS ЮрЛицо,
| Заказчик._Fld2637 AS КодПоОКПО,
| Заказчик._Fld2638 AS ИНН,
| Заказчик._Fld2639 AS КПП,
| Менеджер._Description AS Менеджер
|FROM
| dbo._Reference136 Заказчик
| LEFT JOIN dbo._Reference229 Менеджер
| ON Заказчик._Fld32055RRef = Менеджер._IDRRef
|WHERE Менеджер._Description IN(" + СписокМенеджеров + ")";

РезультатБД = А_Общий.ПолучитьТаблицуНаСервере(Запрос);

Но система выдает ошибку
Ошибка при вызове метода контекста (Execute)
{ОбщийМодуль.А_Общий.Модуль(152)}: RecordSet = СоединениеSQL.Execute(ТекстЗапроса);
{ОбщийМодуль.А_Общий.Модуль(110)}: ТЗ = ПолучитьТаблицуИзВД(Соединение, ТекстЗапроса);
{Справочник.Заказчики.Форма.ФормаВыбора.Форма(70)}: РезультатБД = А_Общий.ПолучитьТаблицуНаСервере(Запрос);
{Справочник.Заказчики.Форма.ФормаВыбора.Форма(87)}: НетВСпискеНаСервере();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимое имя столбца "Массив".
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимое имя столбца "Массив".

Подскажите пожалуйста как это вылечить?

LexaK

нет, не так
в цикле формируете строку, типа
СписокМенеджеров = "'ИвановА','СидоровА','ПетровА'";

и уже ее подставляете в текст запроса

|WHERE Менеджер._Description IN(" + СписокМенеджеров + ")";
   
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск