mirror of
https://github.com/salexdv/mysql_1c.git
synced 2024-12-02 09:01:34 +02:00
«Класс» для упрощения работы с MySQL из 1С. Позволяет просто выполнять любые виды запросов и получать данные в виде таблицы значений.
src/MySQL | ||
MySQL.epf | ||
README.md |
mysql_1c
«Класс» для упрощения работы с MySQL из 1С в Windows. Позволяет просто выполнять любые виды запросов и получать данные в виде таблицы значений.
Для работы необходимо скачать и установить MySQL ODBC Connector
Пример получения данных
// Подключение к базе данных
ИмяODBC = "local_base";
ИмяБазы = "base_name";
ИмяПользователя = "base_name_user";
Пароль = "*******";
MySQL = Обработки.MySQL.Создать();
MySQL.Инициализация(ИмяODBC, ИмяБазы, ИмяПользователя, Пароль);
Если НЕ MySQL.УстановитьСоединение(Ложь) Тогда
Сообщить(MySQL.ОписаниеОшибки);
Возврат Ложь;
КонецЕсли;
// Получение таблицы значений и работа с ней
Запрос =
"SELECT order_id,
| order_date,
| order_summ,
| order_customer
|FROM tamble_orders
|WHERE order_loaded=""N""";
ТаблицаЗаказов = MySQL.ПолучитьТаблицуЗначенийПоЗапросу(Запрос);
Если ТаблицаЗаказов = Неопределено Тогда
Сообщить(MySQL.ОписаниеОшибки);
Возврат Ложь;
КонецЕсли;
Если ТаблицаЗаказов.Количество() = 0 Тогда
Сообщить("На сайте нет новых заказов для загрузки.");
Иначе
Для Каждого СтрокаТЗ ИЗ ТаблицаЗаказов Цикл
НомерЗаказа = СтрокаТЗ.order_id;
Покупатель = СтрокаТЗ.order_customer;
КонецЦикла;
КонецЕсли;
Пример записи данных
// Добавление новых записей в таблицу базы MySQL
// Одиночная запись
// Соответствие со значениями полей для новой записи таблицы
Товар = Новый Соответствие();
Товар["product_id"] = "158742";
Товар["product_name"] = "1С Управление торговлей 10.3";
Товар["product_price"] = 12000;
// Построение запроса
MySQL.СоздатьЗапрос("INSERT", "table_products", Товар);
// Выполнение
Если НЕ MySQL.ВыполнитьЗапрос() Тогда
Сообщить(MySQL.ОписаниеОшибки);
Возврат Ложь;
КонецЕсли;
// Несколько записей
// Массив в который вставляются соответстия
НовыеТовары = Новый Массив();
Товар = Новый Соответствие();
Товар["product_id"] = "158742";
Товар["product_name"] = "1С Управление торговлей, редакция 10.3";
Товар["product_price"] = 12000;
НовыеТовары.Добавить(Товар);
Товар = Новый Соответствие();
Товар["product_id"] = "158743";
Товар["product_name"] = "1С Управление торговлей, редакция 11";
Товар["product_price"] = 12500;
НовыеТовары.Добавить(Товар);
MySQL.СоздатьЗапрос("INSERT", "table_products", НовыеТовары);
Если НЕ MySQL.ВыполнитьЗапрос() Тогда
Сообщить(MySQL.ОписаниеОшибки);
Возврат Ложь;
КонецЕсли;
// Обновление полей записи
// Соответствие с новыми значениями полей
Товар = Новый Соответствие();
Товар["product_price"] = 13000;
Товар["product_rest"] = 10;
// В четвертом параметре можно указать условие, по которым осуществляется поиск записей для обновления
MySQL.СоздатьЗапрос("UPDATE", "table_products", Товар, "WHERE product_id='158742'");
Если НЕ MySQL.ВыполнитьЗапрос() Тогда
Сообщить(MySQL.ОписаниеОшибки);
Возврат Ложь;
Иначе
Сообщить("Обновлено товаров: " + MySQL.КоличествоИзменныхЗаписей);
КонецЕсли;
// Выполнение произвольного запроса
Запрос = "DELETE FROM table_products WHERE product_id='158742'";
Если НЕ MySQL.ВыполнитьЗапрос(Запрос) Тогда
Сообщить(MySQL.ОписаниеОшибки);
Возврат Ложь;
КонецЕсли;
Есть возможность разбить INSERT запрос с несколькими записями на подзапросы, чтобы не вставлять за раз много значений. Например, при добавлении в таблицу более 1000 записей, можно сделать это 10-ю запросами по 100 записей в каждом. Для этого достаточно вызвать код:
MySQL.ЭлементовВЗапросе = 100;
После этого все массивные INSERTы будут делаться по 100 записей за раз. Полный текст запроса можно получить так:
MySQL.СоздатьЗапрос("INSERT", "table_products", НовыеТовары);
Сообщить(MySQL.ТекстЗапроса());
В случае, когда прямой доступ к MySQL запрещен, можно воспользоваться ssh-туннелем. Для этого в обработке есть настройки для запуска Putty.
MySQL.ИспользоватьPutty = Истина;
MySQL.Putty = "c:\Program Files\PuTTY\putty.exe"; // Путь к программе Putty (Kitty)
MySQL.User_put = "ssh_user"; // Имя пользователя для установки ssh-соединения
MySQL.Pass_put = "******"; // Пароль
MySQL.Name_put = "session_name"; // Имя сохраненной сесии Putty с настройками соединения
Основные методы:
- Инициализация - Первоначальная инициализация для сохранения параметров ODBC
- ВыполнитьТестовоеПодключение - Тестирование соединения
- СоздатьЗапрос - Создает INSERT/UPDATE/REPLACE/DELETE запросы на основе переданных параметров
- ВыполнитьЗапрос - Выполнение переданного или построенного запроса
- ПолучитьТаблицуЗначенийПоЗапросу - Выполняет запрос через Recordset и заполняет таблицу значений полученными данными
- ПолучитьМассивЗначенийПоЗапросу - Выполняет запрос через Recordset и заполняет массив значений полученными данными
- ДобавитьЗапрос - Добавляет текст запроса для выполнения в пакетном режиме
- ЗакрытьСоединение - Закрывает существующее подключение к базе MySQL