Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проблема выборки данных из внешнего источника с "_" в названиях полей [mySql, 1Cv8.2.18+]

Проблема выборки данных из внешнего источника с "_" в названиях полей [mySql, 1Cv8.2.18+]
Я
   SleepyFly
 
03.07.19 - 16:42
Коротко - есть баг от 2012-06-14 порд номером 10103123  (SW672486):
При обращении к полю внешнего источника данных MySQL, содержащему в имени знак подчеркивания, происходит ошибка - это поле обрамляется двойными кавычками и SQL запрос не проходит проверку синтаксиса. Этот баг появился после версии 8.2.14.519 и не исправлен до версии 8.3.13.1690 включительно (что с более позними не знаю)
Так вот - я нашел достаточно элегантное решение этой проблемы. Дело в том, что MySQL синтаксис позволяет интерпретировать двойные кавычки, как одинарную косую кавычку (которая и используется для обрамления имен полей и таблиц) при включенном режиме ANSI_QUOTES.
Чтобы использовать эту возможность - необходимо:
1. Создать системный MySQL ODBC DSN со всеми нужными данными для подключения.
2. В поле Initial Statement вписать запрос на установку нужного режима для сессии: SET SESSION SQL_MODE=ANSI_QUOTES;
3. Рекомендую установить галочку Allow Multiple Statements для возможности исполнения нескольких запросов за раз.
4. НЕ ИСПОЛЬЗОВАТЬ двойные кавычки в тексте запроса, заменить их одинарными при необходимости.
5. Для подключения к внешнему источнику я использую следующий код:
    ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
    ПараметрыСоединения.АутентификацияОС = Истина; //Без этой строки данные аутентификации DSN не учитываются
    ПараметрыСоединения.СтрокаСоединения = "DSN=" + ИмяВашегоDSN;
      ВнешниеИсточникиДанных.mysql.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
      ВнешниеИсточникиДанных.mysql.УстановитьСоединение();
    ...
    ВнешниеИсточникиДанных.mysql.РазорватьСоединение();

Надеюсь было полезно.
 
 
   shuhard
 
1 - 03.07.19 - 18:42
(0)[Надеюсь было полезно.]
нет, от слова совсем
   rsv
 
2 - 03.07.19 - 20:18
(0) ...что мешает юзать ADO и не подсаживаться на зависимость от движка 1с ?
   Garykom
 
3 - 03.07.19 - 20:54
(2) Кто мешает написать обертку на чем угодно которое предоставляет для 1С http-сервис?
   rsv
 
4 - 03.07.19 - 20:59
(3) опять что то ваять ... смысл. Адо в винде по умолчанию дрова поставить только для мускула
   rsv
 
5 - 03.07.19 - 20:59
сервисы сервера обертки ....
   Garykom
 
6 - 03.07.19 - 21:01
(4) Сервер не на винде уже давно не редкость или фреш.
К черту ado.
   Garykom
 
7 - 03.07.19 - 21:02
Кто все еще использует ADO в 2019 году, просто не смог освоить ничего получше.
   Garykom
 
8 - 03.07.19 - 21:04
   rsv
 
9 - 03.07.19 - 21:04
(7) пописывать http сервисы и парясь мегапростыни Jason?
   Garykom
 
10 - 03.07.19 - 21:05
(9) Не освоил? Там писать меньше чем с ADO, работает быстрее и удобнее.
Можно сразу в объекты 1С превращать.
 
 Рекламное место пустует
   rsv
 
11 - 03.07.19 - 21:07
(10)  так где ваять ? На стороне  мускула ?
   Garykom
 
12 - 03.07.19 - 21:08
(11) На стороне 1С или на стороне сервиса, mysql не трогается.
   rsv
 
13 - 03.07.19 - 21:08
(12) вот и я про то ... на стороне  того кто отдаёт
   Garykom
 
14 - 03.07.19 - 21:09
(12)+ И если что достаточно просто сменить mysql на нечто иное ибо у нас есть прокладка в виде rest.
Не переписывая 1С часть.
   Garykom
 
15 - 03.07.19 - 21:09
(13) Не обязательно, можно и в 1С.
   rsv
 
16 - 03.07.19 - 21:10
(14) :) если есть желание городить огород по отдаче инфы от источника в виде прокладок ...это выбор .
   rsv
 
17 - 03.07.19 - 21:11
А можно по простому и понадёжней . Доступ к табличкам и норм
   rsv
 
18 - 03.07.19 - 21:12
Или в мускуле таблицы в виде... треугольника ?:)
   Garykom
 
19 - 03.07.19 - 21:14
(17) Для меня ADO это не "просто и надежно" а deprecated
   rsv
 
20 - 03.07.19 - 21:18
даже городя огород с прокладками в видео сервиса все равно придётся задействовать sql для дергания инфы из таблиц .... лучше уж сразу дергать из получателя без посредников
   Garykom
 
21 - 03.07.19 - 21:27
(20) ADO по вашему не посредник?
   rsv
 
22 - 03.07.19 - 21:35
(21) естественно это универсальный посредник для доступа к данным
   rsv
 
23 - 03.07.19 - 21:39
Но без этих всех шаманств с жесонами хмелями вебсерверами :)
   rsv
 
24 - 03.07.19 - 21:40
Как то было дело .работал работал сервис соап а потом 
Закончилось банальщиной адо и табличками :)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует