Как передать параметры запрос к MySQL

1. SvetaS2014 15.01.24 23:38 Сейчас в теме
УПП формы не управляемые.
Добрый день уважаемые форумчани.
такой вопрос
подключаюсь к MySQL
 Параметры = ВнешниеИсточникиДанных.Битрикс.ПолучитьОбщиеПараметрыСоединения();
 Параметры.АутентификацияСтандартная = Истина;
 Параметры.ИмяПользователя ="Analyst";
  Параметры.СтрокаСоединения = "
 |DRIVER={MySQL ODBC 8.2 ANSI Driver};
 |PORT= 62394;
 |DATABASE=dbalupro;
 |UID=Analyst;
 |PWD="";
 |LANGUAGE=русский";
 
 Параметры.СУБД = "MySQL";
 ВнешниеИсточникиДанных.Битрикс.УстановитьОбщиеПараметрыСоединения(Параметры);
 ВнешниеИсточникиДанных.Битрикс.УстановитьПараметрыСоединенияПользователя(ИмяПользователя(), Параметры);
 ВнешниеИсточникиДанных.Битрикс.УстановитьПараметрыСоединенияСеанса(Параметры);     
 
Попытка
	ВнешниеИсточникиДанных.Битрикс.УстановитьСоединение();
Исключение

КонецПопытки; 
 
Показать

но вот как передать параметры в запрос
Запрос = Новый Запрос("ВЫБРАТЬ
          |   sk_task_change_key_person.TASK_ID,
	  |   sk_task_change_key_person.USER_ID,
	  |   sk_task_change_key_person.USER_FIO,
	  |   sk_task_change_key_person.USER_TYPE
      |ИЗ
          |   ВнешнийИсточникДанных.Битрикс.Таблица.sk_task_change_key_person КАК sk_task_change_key_person    
	  |ГДЕ
	   |     sk_task_change_key_person.TASK_ID =&Задача 
	   |");
 
    Запрос.УстановитьПараметр("Задача", "50793");

    Таблица = Запрос.Выполнить().Выгрузить();
    
    Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
	    Сообщить(выборка.USER_FIO);
	конеццикла;	
Показать

параметр
&Задача
не видит и запрос не работает, но если заменить значением "50793", то работает.
Но нужно передать строковые параметры
Запрос.УстановитьПараметр("Состояние1", "Соисполнитель");
для
|  и  sk_task_change_key_person.USER_TYPE=&Состояние1
- Вопрос как это сделать (передать строковые параметры)?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1880116 16.01.24 08:30 Сейчас в теме
(1)
sk_task_change_key_person.TASK_ID =&Задача
Запрос.УстановитьПараметр("Задача", "50793");

Я, конечно, знаю, что Битрикс делали, скажем так... альтернативно одаренные разработчики.
Но использовать строку в качестве идентификатора было бы слишком даже для них.
2. Fox-trot 158 16.01.24 07:03 Сейчас в теме
самое простое использовать в лоб СтрЗаменить() или СтрШаблон()
4. user1880116 16.01.24 09:01 Сейчас в теме
5. SvetaS2014 16.01.24 10:14 Сейчас в теме
если заменить
 sk_task_change_key_person.TASK_ID = &Задача 
на
 sk_task_change_key_person.TASK_ID ПОДОБНО &Задача 


Ошибка при вызове метода контекста (Выполнить)
{Отчет.Отчет1.Форма.ФормаОтчета.Форма(46)}: Таблица = Запрос.Выполнить().Выгрузить();
по причине:
{(9, 6)}: Неверные параметры "ПОДОБНО"
<<?>>sk_task_change_key_person.TASK_ID ПОДОБНО &Задача
6. user1880116 16.01.24 10:33 Сейчас в теме
Зайди уже в метаданные внешнего источника и посмотри какой тип у поля, над которым ты издеваешся.
SvetaS2014; +1 Ответить
7. SvetaS2014 16.01.24 11:07 Сейчас в теме
user1880116 , у USER_TYPE - Короткий текст
USER_ID -Числовой
и в чём ошибка?
Прикрепленные файлы:
8. SvetaS2014 16.01.24 11:47 Сейчас в теме
спасибо
заработало
 Запрос = Новый Запрос("ВЫБРАТЬ
      |   sk_task_change_key_person.TASK_ID,
	  |   sk_task_change_key_person.USER_ID,
	  |   sk_task_change_key_person.USER_FIO,
	  |   ВЫРАЗИТЬ (sk_task_change_key_person.USER_TYPE КАК СТРОКА(13))
      |ИЗ
      |   ВнешнийИсточникДанных.Битрикс.Таблица.sk_task_change_key_person КАК sk_task_change_key_person    
	  |ГДЕ
	    |      ВЫРАЗИТЬ (sk_task_change_key_person.TASK_ID КАК Число(10))=&Задача
	    |   и  (ВЫРАЗИТЬ (sk_task_change_key_person.USER_TYPE КАК СТРОКА(13))=&Состояние1
		|  или  ВЫРАЗИТЬ (sk_task_change_key_person.USER_TYPE КАК СТРОКА(13))=&Состояние2)
		|    и  ВЫРАЗИТЬ (sk_task_change_key_person.USER_TYPE КАК СТРОКА(13))<>&Состояние3
        |");
    Запрос.УстановитьПараметр("Состояние1", "Соисполнитель");
    Запрос.УстановитьПараметр("Состояние2", "Ответственный");  
	Запрос.УстановитьПараметр("Состояние3", "Постановщик");  
    Запрос.УстановитьПараметр("Задача", 50793);

    Таблица = Запрос.Выполнить().Выгрузить();
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот