Необходимо выгружать данные из 1С в БД MySQL.
Решил использовать ODBC драйвер.
Но возникла проблема: составленный в коде 1С многострочный ddl-запрос не хочет выполнятся. Возникает синтаксическая ошибка в таком месте где ее нет.
На мисте нашел следующий код:
В моей задаче нужно делать 3 вида запроса в цикле: UPDATE, INSERT и DELETE в разные таблицы, поэтому не подходит.
В документации к ODBC драйверу нашел опцию: FLAG_MULTI_STATEMENTS (Enables support for batched statements. Added in 3.51.18.). Думаю это то что мне нужно, осталось только найти пример как эту опцию прописать в строке инициализации соединения.
Да, так и есть. Добавление "Option=67108864;" в строку соединения решает проблему!
Решил использовать ODBC драйвер.
Но возникла проблема: составленный в коде 1С многострочный ddl-запрос не хочет выполнятся. Возникает синтаксическая ошибка в таком месте где ее нет.
На мисте нашел следующий код:
внНаборЗаписейИзменений = Новый COMОбъект("ADODB.RecordSet");
внНаборЗаписейИзменений.CursorLocation = 2;
внНаборЗаписейИзменений.LockType = 3;
внНаборЗаписейИзменений.Open("journ_rec", внСоединение);
Для Каждого Строки Из ИзмененияТЧ Цикл
внНаборЗаписейИзменений.AddNew();
внНаборЗаписейИзменений.Fields("journ_uid").Value = ИДЗаписиВЖурнале;
Если НЕ ПустаяСтрока(Строки.ИмяТЧ) Тогда
внНаборЗаписейИзменений.Fields("nametp").Value = Строки.ИмяТЧ;
внНаборЗаписейИзменений.Fields("numtp").Value = Строки.НомерСтрокиТЧ;
КонецЕсли;
внНаборЗаписейИзменений.Fields("namerec").Value = Строки.ИмяРеквизита;
внНаборЗаписейИзменений.Fields("typerec").Value = Строки.ТипРеквизита;
Если НЕ ПустаяСтрока(Строки.НовоеПредставление) Тогда
внНаборЗаписейИзменений.Fields("newview").Value = Строки.НовоеПредставление;
КонецЕсли;
Если НЕ ПустаяСтрока(Строки.НовоеЗначение) Тогда
внНаборЗаписейИзменений.Fields("newval").Value = Строки.НовоеЗначение;
КонецЕсли;
внНаборЗаписейИзменений.Update();
КонецЦикла;
внНаборЗаписейИзменений.Close();
В моей задаче нужно делать 3 вида запроса в цикле: UPDATE, INSERT и DELETE в разные таблицы, поэтому не подходит.
В документации к ODBC драйверу нашел опцию: FLAG_MULTI_STATEMENTS (Enables support for batched statements. Added in 3.51.18.). Думаю это то что мне нужно, осталось только найти пример как эту опцию прописать в строке инициализации соединения.
Да, так и есть. Добавление "Option=67108864;" в строку соединения решает проблему!
Комментариев нет:
Отправить комментарий