Описание
При выполнении запроса к MySQL в 1С 8.3 столкнулся с проблемой преобразования запросов такого вида.
SELECT p.id_prod FROM product
1С преобразует этот запрос к виду
SELECT p.»id_prod» FROM product
Это вызывает ошибку синтаксиса и запрос не выполняется.
Я немного модифицировал ODBC драйвер, который преобразует запрос полученный от 1С к виду
SELECT p.`id_prod` FROM product
Это позволяет полноценно использовать Внешние источники для работы с MySQL.
Для подключения использовать строку вида
Установка
Распаковать архив и запустиь install.bat.
Проверить что драйвер успешно установился можно командой
binmyodbc-installer.exe -d -l
он отобразит нечто такое
C:Program Files (x86)MySQL_Connector_ODBCin>myodbc-installer -d -l
SQL Server
Microsoft ODBC for Oracle
Microsoft Access Driver (*.mdb)
Microsoft Access-Treiber (*.mdb)
Driver do Microsoft Access (*.mdb)
Microsoft dBase Driver (*.dbf)
Microsoft dBase-Treiber (*.dbf)
Driver do Microsoft dBase (*.dbf)
Microsoft Excel Driver (*.xls)
Microsoft Excel-Treiber (*.xls)
Driver do Microsoft Excel(*.xls)
Microsoft Paradox Driver (*.db )
Microsoft Paradox-Treiber (*.db )
Driver do Microsoft Paradox (*.db )
Microsoft Text Driver (*.txt; *.csv)
Microsoft Text-Treiber (*.txt; *.csv)
Driver da Microsoft para arquivos texto (*.txt; *.csv)
Microsoft Visual FoxPro Driver
Microsoft FoxPro VFP Driver (*.dbf)
Microsoft dBase VFP Driver (*.dbf)
Microsoft Visual FoxPro-Treiber
Driver para o Microsoft Visual FoxPro
SQL Server Native Client 11.0
MySQL ODBC 5.2(w) Driver
Использование
При подключении к источнику необходимо использовать строку следующего вида.
DRIVER={MySQL ODBC 5.2(w) Driver};SERVER=127.0.0.1;DATABASE=testbase;UID=admin;PWD=admin;»
Примечание
Тестировалось на Win7 x64 и Win7 x64. Драйвер собран под платформу x32 поэтому должен нормально работать и под другими версиями ОС.
ЭХ!
ЛЮБЛЮ Я ЗАПИСЫВАТЬ ПЕРВЫЕ КОММЕНТАРИИ К СТАТЬЯМ!!!
А ПОЧЕМУ ???
—————————————————-
А ПОТОМУ, ЧТО:
1) Можно смайлов в комментарий навставлять.
2) В сообщения рассылаемых сайтом по почте говорится, что Я АВТОР ПУБЛИКАЦИИ.
—————————————————-
а вот изменять первый пост со смайлами не советую — смайлики пропадють.
—————————————————-
😀 😀 😀 😀 😀 😀 😀
😎 😎 😎 😎 😎 😎 😎
Так это косяк функционала внешних источников 1С
или ODBC драйвера?
А если попробывать работать напрямую через ADO,
а в СКД данные запихивать через набор данных объект в виде таблицы значений ???
Естьподсистемка для работы из 1С с COM-объектами и в частности с ADO.
Было б интересно узнать как она работает с MySQL.
Запросы к нему можно выполнять прямо из консоли в составе подсистемы.
(1) Что, правда? 🙂
(2) 1С «официально» поддерживает MsSQL, Postgres, DB2, Oracle. Всё остальное — «прочие», и никто не обещает что будет работать.
Вон с Firebird приколы жесткие есть — она не понимает SELECT TOP 10, ей надо SELECT FIRST 10 ну или лучше в конце диапазон с-по указывать. Из-за чего динамический список не работает — пришлось патчить драйвер ODBC.
А по моей проблеме помочь не сможете ?
http://forum.infostart.ru/forum9/topic81462/message862353/?result=reply#message862353
(2)
Можно еще десятью способами подключаться. Тут смысл был в создании внешнего источника как обьекта метаданных.
Это не косяк ODBC драйвера, это косяк транслирования запроса 1С-кой. Просто mysql не поддерживает синтаксис который она ему навязывает.
Да, проблема актуальная. В свое время побороли ее через создание вьюх на стороне MySQL.
С их помощью удалось не только вычистить все подчеркивания из полей таблицы, но и привести имена колонок в «человечий» русский вид (назвали колонки русскими буквами), что MySQL благополучно проглотил…
За старание, конечно, отдельный плюс.
(5) quick,
так получается, что
автор работы идет по пути наименьшего для него сопротивления
и для исправления 1С-ных косяков
подламывает драйвер ODBC ???
(7)
остальные приложения хоть будут после этого нормально работать через это драйвер???
(4) Trotter_NN,
в смысле — как заставить 1С-7.7 работать нормально под Win > XP ???
(9)
если проблемма в этом …
… набираем в строке поиска по сайту слово «секретный»
и первое что в списке предлагаемых ссылок:
решение с минимальными извратами.
(8) остальные приложения не делают таких ужасов в запросах
(7) :)) посмешил.. но получается что все так и есть. То ли еще будет когда за линукс плотно возьмемся…
(12)
— Урра! Мы научились вырезать гланды!!!
— Фуууу!
— Через **** !!!
— УУУУУ!
Народный мудрость
Селяви, то есть особенности национальной жизни.
🙂
quick,
Герман
а слабо написать ODBC драйвер для файловой 1с-ной базы ???
тебя бы расцеловал бы…
…а может даже бы озолотил.
(14)
«а слабо написать ODBC драйвер для файловой 1с-ной базы ??? «(с)
Юрий (yuraos).
Логичнее её заменить на другую сУБД у которой уже есть ODBC драйвер.
И много чего ещё — есть… 😉
P.S.
А написать ODBC драйвер для файловой версии БД 1С-а сначала потребует написать SQL-ную СУБД для не полностью изученного формата хранения и способов обработки информации. И уже после этого можно будет приступить к написанию ODBC драйвера… 😉
(16)
Юрий (yuraos).
Думаю, будет достаточно, если Вы меня послушаете
сь.И поймете всю глупость Вашей идеи/вопроса про написание ODBC драйвера для файловой версии 1С-а.
P.S.
В (15) сообщении была попытка объяснить Вам это вежливо. Извините…
(17) Владимир(hogik), как говорится, извинения принимаются.
andrewks эту идею глупостью не считает,
прямыми запросами в 1С-7.7
🙂
правда эта глупость довольно распространенная.
Например
дословно цитирую:
«задачка нетривиальная. основная проблема — нехватка времени. поэтому на чистом альтруизме поднять это вряд ли получится«.
Сам он правда пошел другим путем, как раз что-то вроде альтернативной СУБД для прямого доступа к файловой базе сделал.
—
ЗЫ:
да и вы, как я посмотрю, в молодости тоже баловались
😉
(18)
http://infostart.ru/public/15211/
http://infostart.ru/public/14664/
«… в молодости тоже баловались прямыми запросами в 1С-7.7″(с)
Юрий (yuraos).
Я никогда ими не «баловался».
Данная поделка сделана, исключительно, по просьбам трудящихся. 😉
Моё мнение по «проблеме» файловой версии 1С-а выражено в:
Чего и надо, по моему мнению, делать для файловой версии 1С 8.х.
Что касается мнения о «нетривиальности задачки», то это слабо сказано. 🙂
Нормально она не реализуема без «вскрытия» родного 1С интерфейса к движку БД.
А если еще учесть, что этот интерфейс не является SQL-подобным, то и идея писать ODBC драйвер становится совсем «глупостью».
(19) hogik,
Эх эти трудящиеся-трудящиеся !
Они такие нудные !!
Все время требуют сделать для них какую-нибудь «глупость» !!!
😉
(19) Никак не вразумею.. нафига что то делать для файловой 1С8?
Я всегда полагал что когда начинаются проблемы с файловой версией, то нужно переходить на SQL вариант.
(21)
«нафига что то делать для файловой 1С8″(с)
Евгений (quick).
Согласен с Вами. О чем и пишу выше по теме.
Надо делать не «для»(с), а вместо файловой.
Т.к. задумка концепции 1С-продукта плохо укладывается в РМ с «запросным» ЯМД.
И 1С-разработчикам пришлось делать переходник в лице т.н. сервера приложений.
При использовании более подходящей сУБД можно обойтись без «переходника».
И устранить основные недостатки файловых СУБД. И получить более дешёвую и простую в эксплуатации систему. Именно на замену файловой версии в случае «когда начинаются проблемы»(с). Т.е. промежуточный вариант между родной файловой и клиент-серверной версией. Т.к. большому количеству пользователей 1С-продукта вполне хватило бы варианта надежной работы системы на 10-50 пользователей.
(20)
Юрий (yuraos).
Чувствую Вас сильно задело слово «глупость».
Попробуйте читать в моих сообщения не только это слово. 🙂
И расскажите нам КТО и ГДЕ будет выполнять SQL запрос в ODBC для файловой версии 1С-а? И как можно обойтись без написания «альтернативной СУБД для прямого доступа к файловой базе»(с) которую делает andrewks при, допустим, написания этого самого ODBC драйвера?
На XP не хочет устанавливаться.
Здравствуйте!
Винсервер 2008R2 x64, сервер 1С 8.3.3.641, тоже x64.
Драйвер успешно устанавливается, виден через myodbc-installer -d -l и через 32-битный odbcad32.exe.
А вот 1С его в упор не замечает. Как и вообще все 32-битные ODBC-драйверы (проверял на обычном MySQL ODBC драйвере).
Есть ли возможность собрать версию под x64?
Даа..))) А я просто писал обработку, которая создает sql-скрипт, создающий вьюшки без нижнего подчеркивания, в «верблюжей» нотации. А как можно подключиться в Linux? Через какие драйвера? и возможно ли вообще?
Спасибо за разработку
Присоединяюсь к Ватсону, есть ли возможность реализации драйвера под версию x64, или настройки текущего под x64? Либо описание каким образом выполнялось изменение драйвера ODBC.
Текущая версия платформы 8.3.4.408, версия Connector ODBC MySQL 5.2.6.
Интересная разработка, а товарищ (27) ReSY, есть ли возможность реализации драйвера под версию x64, или настройки текущего под x64? Либо описание каким образом выполнялось изменение драйвера ODBC. тоже интересует этот вопрос ?
Пожалуйста соберите под Win7 x64. Очень нужно.
При выполнении binmyodbc-installer.exe -d -l
есть куча драйверов а MySQL ODBC 5.2(w) Driver — нету. Помогите спасите.
Пожет я что то не правильно делаю? У кого нибудь работает ?
Что самое интересное дя этих манипуляций я удалил оригинальные драйвера на 32 и 64. Когда я понял что этот не устанавливается — поставил обратно оригинальный на 64 (mysql-connector-odbc-5.3.2-winx64) но 1С его не увидела, а 32 (mysql-connector-odbc-5.3.2-win32) 1С съела без проблем. Наверное от 1С тоже зависит 32 разрадная или 64 ??? Кто то знает правильный ответ?
Если у меня 1С приняля оригинальный 32-разрядный драйвер, тогда и этот должен былу становится и подхватиться. Значит проблема не в том что у меня винда 64-ая. Тогда в чем?
Вобщем сдела копию таблицы на MySQL. Переименовал колонки с нижним подчеркиванием. Избавился от подчеркивания. Пересоздал источник в 1С — При открытии из формы — ошибка таже.
Но тем не менее такой код работает:
Объект = ВнешниеИсточникиДанных.site.Таблицы.tovari.СоздатьОбъект();
Объект.id = «99»;
Объект.skuid = «88»;
Объект.hash = Null;
Объект.ip = Null;
Объект.count = 3;
Объект.price = 40;
Объект.Записать();
Если с чтением еще можно решить что то создавая Представления для таблиц на MySQL. То с записью во внешние источники беда. Через представления запись не работает, а на прямую мешает ошибка нижнего подчеркивания. Обложили.
У меня тоже под windows 2007 server x64 Драйвер этот 1С не видит. Хотя устанавливается вроде корректно и в списке драйверов отображается.
на x64 надо поставить полноценный MSI потом подменить дрова на дрова автора из папочки lib. Только вот проблемы это не решает. Как не работали запросы к полям с подчеркиванием, так и не работают. Зря только копеечку потратил.
Убило примечание: тестировалось на 2-х совершенно одинаковых системах Win7 x64? Зачем? А собрано под x32? Жесть 🙂
В общем давно я на инфостарт не заглядывал. За это время много чего изменилось в моих проектах. Например я отказался от прямого доступа к внешним базам, т.к. ОС меняются, версии MySQL обновляются, сервера постоянно переезжают… и все превращается в непрерывный кошмар. Да и тянуть данные приходится не из одной базы а сразу с четырех расположенных на разных серверах, иногда в нескольких потоках. Поэтому последнее время перешел на написание веб сервисов на python + spyne.io и размещении их возле нужной внешней системы (mysql, postgresql, redis), а в 1С использую встроенные механизмы работы soap. Несмотря на первоначальную «сложность», в поддержке эта связка оказалась удобней, т.к. к ней же вяжется веб интерфейс и 1С 7.7.
https://github.com/WorldException/v7py если кому интересно
Да и к 1С 7.7 уже написал парсер sql запросов с разбором md файла.
Если время будет как нибудь опубликую готовый набор для быстрого старта…
столкнулись с аналогичной проблемой — кавычки в запросе и специфичный синтаксис SQL (select first) для СУБД Informix. Можете рассказать про технологию модификации ODBC драйвера? Как можно повторить это на своем драйвере?
(38) vitek1, качаете исходники odbc драйвера, немного правите раздел где обрабатывается приходящий текст запроса и компилируете.
Но как уже говорил, лучше сделать промежуточный веб сервис с готовой выборкой на каком нибудь нормальном языке, если конечно у вас не разработка на «отдал и забыл».
(39) насколько понимаю, поскольку informix коммерческий продукт, то исходников драйвера нет, в отличие от MySQL?
с веб сервисом — сама идея не очень подходит. На 1С придется реализовывать очень много бизнес-логики по работе с базой. Писать для этого отдельные веб-сервисы не хочется. Да и лишаться возможности работы с базой с помощью стандартных упр. форм с встроенными функциями поиска и отборов не хочется. В этом вся и идея есть.
(3) Подскажите, как пропатчить, не могу найти инфу. Спасибо
(41) Подробностей уже не вспомню, результат вот тут:http://magister.in.ua/lang/en/2013/11/firebird-odbc-driver-patched-for-1centerprise/