|
Проблема выборки данных из внешнего источника с "_" в названиях полей [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 | Как то было дело .работал работал сервис соап а потом
Закончилось банальщиной адо и табличками :) |