Текст запроса к SQL-базе больше 255 символов

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Виктор13245234, 18 апр 2019.

  1. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    251
    Симпатии:
    6
    Баллы:
    29
    Коллеги, всем добрый день!

    Столкнулся с похожей проблемой. Запрос формируется динамически с кучей INSERT, но в SQL таблицу пишутся далеко не все данные. Делаю через ADO^

    Код:
    СтрокаСоединения = "DRIVER=" + Driver + ";SERVER=" + Server + ";DataBase=" + DataBase + ";UID=" + Login + ";PWD=" + Password;
       
        //Создаем подключение к базе MySQL
        Соединение = Новый COMОбъект("ADODB.Connection");
        Соединение.ConnectionTimeOut = 600;   
        Соединение.ConnectionString = СтрокаСоединения;
       
        //Открываем соединение
        Попытка
            Соединение.Open();       
        Исключение
            Соединение = Неопределено;
            ЗаписьЖурналаРегистрации("Загрузка данных по визуализации", УровеньЖурналаРегистрации.Ошибка,,, "Не удалось подключиться к базе." + Символы.ПС + ОписаниеОшибки());
           
            Возврат;   
        КонецПопытки;
       
        МассивНГ = ПолучитьМассивНГДляВизуализацииПланФакт();
       
        Если МассивНГ.Количество() = 0 Тогда
            ЗаписьЖурналаРегистрации("Загрузка данных по визуализации", УровеньЖурналаРегистрации.Ошибка,,, "Не указаны номенклатурные группы для выгрузки");
            Возврат;
        КонецЕсли;
       
        // ОбрабатываемФакт
        РезультатЗапросаДанные = ПолучитьРезультатЗапросаФакт(МассивНГ);
       
        Если Не РезультатЗапросаДанные = Неопределено Тогда
           
            ВыборкаДанные = РезультатЗапросаДанные.Выбрать();
           
            ТекстЗапросаADO = "TRUNCATE TABLE Fact_Day";
            Соединение.Execute(ТекстЗапросаADO,,128);
           
            ТекстЗапросаADO = "";
           
            Пока ВыборкаДанные.Следующий() Цикл
               
                ТекстЗапросаADO = ТекстЗапросаADO + "INSERT INTO Fact_Day (mDate, Organization, Product, Qty) VALUES ("                  
                + "'" + Формат(ВыборкаДанные.ПериодДень, "ДФ='гггг.ММ.дд'") + "'" + ", "
                + "'" + ВыборкаДанные.Организация +  "'" + ", "
                + "'" + ВыборкаДанные.НоменклатурнаяГруппа + "'" + ", "
                + "'" + СтрЗаменить(Формат(ВыборкаДанные.СуммаФакт, "ЧДЦ=2; ЧРД=."),Символы.НПП,"") + "'" + ")";   
               
            КонецЦикла;
           
            Попытка
                Соединение.Execute(ТекстЗапросаADO,,128);
            Исключение
                ЗаписьЖурналаРегистрации("Загрузка данных по визуализации", УровеньЖурналаРегистрации.Ошибка,,, "Не удалось записать данные по факту." + Символы.ПС + ОписаниеОшибки());
            КонецПопытки;
           
        Иначе
            ЗаписьЖурналаРегистрации("Загрузка данных по визуализации", УровеньЖурналаРегистрации.Ошибка,,, "Нет данных для загрузки по факту");       
        КонецЕсли;
    
    Как исправить? Спасибо.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.518
    Симпатии:
    985
    Баллы:
    204
    Перестать значения вставлять в текст запроса и использовать параметры или вообще работать как с набором записей.

    Отправлено с моего MI 5s Plus через Tapatalk
  3. TopicStarter Overlay
    Виктор13245234
    Offline

    Виктор13245234 Опытный в 1С

    Регистрация:
    17 мар 2015
    Сообщения:
    251
    Симпатии:
    6
    Баллы:
    29

    Хорошо. А примеры есть?
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.518
    Симпатии:
    985
    Баллы:
    204