2009
24
октября
1С и MySQL. Обмен данными. Пример переноса данных справочника
октября 24, 2009 | Комментариев: 29
Цель взаимодействия MySQL и 1С
В последнее время наблюдается активное развитие интернет-магазинов в России, где продавцы предлагают заказать товар напрямую с сайта.
В то же время программы для бухгалтерского и управленческого учета остаются старыми – в основном это 1С Предприятие.
Необходимо уйти от ручного труда и автоматизировать обмен данными между базами данных 1С и MySQL, переносить справочники, например номенклатуру, контрагентов, цены, скидки и другие, а так же переносить заказы.
Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru
Мне поставили задачу перенести справочники из 1С в базу даннх MySQL, как это сделать в кратце я описывал в статье Как подключить 1С к базе данных MySQL. Теперь я постараюсь описать процесс более подробно и с примерами переноса данных. В интернете предлагают в начале сделать выгрузку во внешний файл, а потом загрузить его в MySQL. Я расскажу как можно обойтись без этих фалойв, а выполнить перенос напрямую через ODBC-драйвер.
Страницы статьи:
Комментарии
Комментариев: 29

А если база MySQL располагается не на локальном компе, и прямого доступа к нет (только phpmyadmin) как быть, что можно придумать?
а че нельзя прям к dbf файлу mysql падключить?
как выгрузить данные из 1с теперь понятно, а как из MySQL загрузить в 1с?
Это еще проще. Читать всегда проще, чем записывать.
Просто необходимо выполнить нужный запрос.
Стр = “SELECT * FROM `tovar` WHERE `kod` = «чемуто»; // Это MySQL запрос в чистом виде. справку по ним можно найти в нете.
ну и далее
Соединение.Execute(Стр);
вроде так.
2 Гель можно, наверное, средствами php. Да и средствами 1С в этом случае можно, но не к той DBF ке, которая входит в состав 1С
2 Макс как ты обращаешься к phpmyadmin?
наверное в адресной строке пишешь что то вроде 882.245.144.14/tools/phpmyadmin
или
extremallife.ru/phpmyadmin (например)
ну и указывай в качестве сервера например
SERVER=882.245.144.14
или
SERVER=extremallife.ru
Если хост в нете, то все отлично работает – я пробовал
а чем 1с dbf плоха? там инфа мгновенно обнавляется, и перебросы никакие ненужны..
Гель, это нужно для обновление информации на сайте (к примеру), а не для хранения вместо dbf.
admin, на счёт phpmyadmin я потом сам понял, затормозил малехо =)
Процедура Загрузить()
Стр = «SELECT * FROM `tovar` WHERE `kod` = 2867″;
Соединение.Execute(Стр);
КонецПроцедуры
я так и сделал впринципе, процедура выполнилась без ошибок (значит всё ок, эта строка из БД получена), а вот как бы её увидеть, например при помощи Сообщить() ?
Гель, dbf файлу mysql можно подключить при помощи php, но это довольно мудрёные скрипты, и это не удобно, если ты будешь обращаться к файлику dbf, а 1С будет открыта, то ни файл не сможет открыться, т.к он уже открыт 1С_кой.
ещё видел народ записывал данные в mysql из 1С при помощи php используя сслыки $_GET, но это и не безопасно и на мой взгляд не особо удобно, и таким способом из mysql в 1С уже не получишь данные, хотя как вариант можно иметь ввиду =)).
кстати, какие ещё команды кроме Execute, Open, Close можно выполнять?
Ребята, если кто забредет сюда также как и я в поисках информации о том, как устранить ошибку при использовании моста jdbc-odbc: «источник данных не найден и не указан драйвер, используемый по умолчанию» (ошибка появляется не только в Java), то вот дополнительная инфа. Устанавливать драйвер надо как написано в этой статье. Затем можно будет подключаться к базе по такому URL
String url = «jdbc:odbc:ConnectionToDB»;
…………
connection = DriverManager.getConnection(url,login,pass);
Здесь ConnectionToDB – это не имя базы данных, как говорится в некоторых статьях и мануалах. Это имя источника данных. В качестве него автор статьи использовал «MySQL ODBC 5.1 Driver»
Абсолютно точно, это видно из строки
СтрокаСоединения = «DRIVER=MySQL ODBC 5.1 Driver;SERVER=localhost;DataBase=test;UID=root;PWD=;»
Это имя можно посмотреть в ПУСК-настрока – панель управления – Администрирование – Источникик данных (ODBC)- Источники данных пользователя (в поле Имя)
нашёл внешнюю компоненту, при помощи которой теперь могу сделать всё что угодно с базой MySQL из 1С http://turbobit.net/56uk7adunp22.html
спасибо админу за помощь.
Здравствуйте , мне очень понравился extremallife.ru , как можно обменяться ссылками ? или купить у вас место под рекламу?
Если конечно администрация этим занимается , куда писать? И что насчет расценнок?
p/s
Куда писать не знал поэтому написал сюда
если что извеняюсь перед администрацией.
Афтар пеши есчо… Все равно одобряю камменты руками и удаляю левые сцылки.
А хранимые процедуры или функции кто-нибудь использует?
Про Insert – эффективней использовать запись сразу всех данных или максимально-возможного количества (многострочная вставка, кажется называется).
Про Select – получение быстрее происходит при использовании объекта Рекордсет.
Rst=CreateObject(»ADODB.Recordset»);
…
Rst.Open(Команда,Conn,РежКурсора,РежЧтения);
где,
Команда – «select …»;
Conn – объект ADODB.Connection;
РежКурсора – 1/0 – перемещать курсор по выборке только вперед (по умолчанию 0);
РежЧтения – 0/1 – режим чтения/записи (по умолчанию 0, записывать через Conn.Execute(»insert/update …»)).
Сорри, опечатка – Режим чтения по умолчанию 1!
Цитата:
«нашёл внешнюю компоненту, при помощи которой теперь могу сделать всё что угодно с базой MySQL из 1С http://turbobit.net/56uk7adunp22.html
спасибо админу за помощь.»
А что это за ВК? Есть ее описание? Мануал? Als-файл?
Сорри, поспешил с воросами. Я знаю эту компоненту, она подглючивает
.
я её хорошо затестил, у меня ни разу ни глюконула
Прошу прощения,нельзя ли ОЧЕНЬ ПОДРОБНО остановиться на синтаксисе и построении запроса(Начиная со «Стр=……).Очень-очень нужно.Заранее благодарен.
Константин, напиши своё мыло, я тебе вышлю готовый ert, мой предыдущий пост дядя админ уничтожил, как обычно! =(
Посты с внешними ссылками удаляются автоматом, потому как спама много.)))
Видимо в комментарии ссылка была.
Руками я практически ничего не удаляю, тем более в таких темах.
вот фигово, у меня уже второй пост ущел в небытие, ссылка была и в первом и во втором.
я уже дважды не смог помочь, хотя мог, и время тратил на написание, зря только
А вот такие, как выше, комментарии я чищу руками. Потому как содержат ссылку на твой сайт, Евсенкин Максим Александрович)))
Если хочешь, чтобы была ссылка на твой блог/сайт – отпиши прямо, хочу ссылку – договоримся)))
Чтоб всем было хорошо, и тебе и мне и сайты продвигались)))
Макс!!заранее благодарен…berconst@ukr.net
Макс!!тоже буду очень благодарен… manoulenko@ukr.net
Макс М. отправил =)