Версия для печати темы (https://pro1c.org.ua/index.php?s=255e037156116a53853ad032c01e64da&showtopic=67446)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Как передать параметры в запрос MySQL

Автор: Svetas_2024 15.01.24, 22:42

Добрый день, уважаемые форумчани. Прошу помощи
1С:Предприятие 8.3 (8.3.15.1869), "Управление производственным предприятием для Украины", редакция 1.3 (1.3.66.1) , формы обычные (не управляемые)
вопрос

подключаюсь к MySQL

 Параметры = ВнешниеИсточникиДанных.Битрикс.ПолучитьОбщиеПараметрыСоединения();
Параметры.АутентификацияСтандартная = Истина;
Параметры.ИмяПользователя ="Analyst";
  Параметры.СтрокаСоединения = "
|DRIVER={MySQL ODBC 8.2 ANSI Driver};
|PORT= 62394;
|DATABASE=dbalupro;
|UID=Analyst;
|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"
- Вопрос как это сделать (передать строковые параметры)?

Автор: sava1 16.01.24, 8:15

возможно, длина строки различная - попробуйте ПОДОБНО или привести длину строки
а так с ВнешнийИсточникДанных параметр должен проходить

Автор: Svetas_2024 16.01.24, 10:09

sava1 @ Сегодня, 8:15 * ,
ошибку даёт

Цитата
Ошибка при вызове метода контекста (Выполнить)
{Отчет.Отчет1.Форма.ФормаОтчета.Форма(46)}: Таблица = Запрос.Выполнить().Выгрузить();
по причине:
{(9, 6)}: Неверные параметры "ПОДОБНО"
<<?>>sk_task_change_key_person.TASK_ID ПОДОБНО &Задача


https://pro1c.org.ua/redirect.php?https://ibb.co/dQSgtB4

у USER_TYPE - Короткий текст
USER_ID -Числовой
и в чём ошибка?

Автор: sava1 16.01.24, 10:35

ну наверно Задача = "%АААААА%"

Автор: Svetas_2024 16.01.24, 10:46

sava1 @ Сегодня, 8:15 * ,
спасибо
заработало

 Запрос = Новый Запрос("ВЫБРАТЬ
      |   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);

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua