«Класс» для упрощения работы с MySQL из 1С. Для соединения используется MySQL ODBC Connector. Позволяет просто выполнять любые виды запросов и получать данные в виде таблицы значений.
// Добавление новых записей в таблицу базы 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 = "c:\Program Files\PuTTY\putty.exe"; // Путь к программе Putty (Kitty)
MySQL.User_put = "ssh_user"; // Имя пользователя для установки ssh-соединения
MySQL.Pass_put = "******"; // Парол
MySQL.Name_put = "session_name"; // Имя сохраненной сесии Putty с настройками соединения
[stextbox id=»download»]
[/stextbox]