Простая работа с MySQL из 1С

08.12.16

Разработка - Инструментарий разработчика

«Класс» для упрощения работы с MySQL из 1С. Позволяет просто выполнять любые виды запросов и получать данные в виде таблицы значений.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
MySQL.epf
.epf 8,46Kb ver:20161208
230 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Для соединения используется 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 с настройками соединения

Вступайте в нашу телеграмм-группу Инфостарт

MySQL phpMyAdmin INSERT UPDATE DELETE ODBC внешние источники данных обмен с сайтом putty kitty ssh ssh-туннель

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    202450    1116    410    

1021

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    35586    206    104    

195

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    23973    62    26    

92

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    16460    69    39    

88

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    34665    123    53    

165

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1722    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107152    249    100    

313

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    2864    6    0    

11
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MegaSwitch 24.06.15 09:32 Сейчас в теме
Вот тут что-то похожее, только с использованием внешней компоненты.
2. salexdv 2400 24.06.15 09:55 Сейчас в теме
(1) MegaSwitch, спасибо за ссылку! Внешние компоненты я люблю, но тут все достаточно просто и легко реализуется на встроенном языке. Единственное "неудобство" - это то, что Putty для SSH висит отдельным процессом и никак не контролируется, хотя проблем с этим не возникало.
3. MegaSwitch 24.06.15 15:16 Сейчас в теме
Putty для SSH висит отдельным процессом и никак не контролируется

Вот как раз во этой причине в компоненте встроен ssh-клиент и полностью контролируется из 1С.
Так же, если присвоить СозданныйComObject = Неопределено, соединение автоматически закрывается с освобождением памяти.

У меня была практика использования Putty с 1С, но периодически клиент зависал, и приходилось убивать его руками, т.к. он занимал порт 3306.
К тому же, были какие-то проблемы при работе в клиент-серверном варианте, но какие - уже не помню.
4. salexdv 2400 24.06.15 16:45 Сейчас в теме
(3) MegaSwitch, тут никаких проблем не наблюдается. Putty запустился, обмен выполнился, при закрытии соединения Putty убился и все хорошо.
5. vasyak319 155 24.06.15 17:01 Сейчас в теме
Товар = Новый Соответстие()


Не откомпилируется.
6. salexdv 2400 24.06.15 17:14 Сейчас в теме
(5) vasyak319, спасибо, поправил.
7. ExpertAdmin 28.09.15 18:03 Сейчас в теме
8. salexdv 2400 28.09.15 21:04 Сейчас в теме
(7) Что именно не работает? Какой код выполняете? Какую ошибку возвращает?
9. al2ko 72 07.12.16 15:51 Сейчас в теме
Бодрого времени суток.
А можно при использовании вашего класса реализовать пакетное обновление данных? Используя UPDATE с разными параметрами WHERE?
Есть 20000 строк и их нужно обновить.
Если по одному запросу отрабатывать то 1 час уходит.
10. salexdv 2400 08.12.16 09:02 Сейчас в теме
(9) Здравствуйте! Пока такой возможности нет, но попробую реализовать.
11. salexdv 2400 08.12.16 12:43 Сейчас в теме
(9) Добавил два метода. Работа выглядит так:
MySQL.ОчиститьТекстЗапроса();
MySQL.ДобавитьЗапрос("UPDATE product SET price = '69' WHERE product_id = 1250");
MySQL.ДобавитьЗапрос("UPDATE product SET price = '137' WHERE product_id = 417");
MySQL.ВыполнитьЗапрос();

Чтобы заработало, в настройках соединения необходимо включить "Allow multiple statements" http://take.ms/KOKJR
12. kuril 30 08.12.16 15:43 Сейчас в теме
для получения данных на лету, в том числе в СКД можно использовать внешний источник данных
Прикрепленные файлы:
13. salexdv 2400 08.12.16 16:41 Сейчас в теме
(12) Можно. Обработка больше для изменения данных в базе, хотя читать её тоже удобно.
14. gospodenkods 10.02.17 16:16 Сейчас в теме
Отличный механизм вышел !! Респект автору.
15. nghleb 22.03.19 11:54 Сейчас в теме
Вручную SSH+ODBC работает отлично. Но при запуске в регламентном задании odbc не видит туннель. Куда копать?
16. salexdv 2400 22.03.19 12:29 Сейчас в теме
(15) Если регламентные задания выполняются на сервере, то у пользователя, под которым работает сервер (по умолчанию USR1CV8X) должны быть настроены источники данных ODBC. Возможно, проблема в этом.
user811769; +1 Ответить
17. nghleb 22.03.19 12:51 Сейчас в теме
(16) Да все верно. Это уже к тому моменту попробовал. Плюс к этому PuTTY тоже нужно настраивать под этим пользователем. Спасибо большое!
user811769; +1 Ответить
26. Greek26rusa 2 12.05.20 00:17 Сейчас в теме
MySQL.Инициализация(ИмяODBC, ИмяБазы, ИмяПользователя, Пароль);

{Обработка.MySQL.Форма.Форма.Форма(16)}: Метод объекта не обнаружен (Инициализация)
MySQL.Инициализация(ИмяODBC, ИмяБазы, ИмяПользователя, Пароль);

пытаюсь подключиться.Если вам не трудно можете подсказать почему такая ошибка?
единственно у меня ubuntu
но через workbench я подключаюсь норм
18. mort64ram 24 01.06.19 12:23 Сейчас в теме
Отличный "класс", автор большой молодец, спасибо.
19. maxster545 31.07.19 15:17 Сейчас в теме
соединение через COM в обработке?
20. salexdv 2400 31.07.19 16:12 Сейчас в теме
21. AlenaSa 30 07.11.19 12:08 Сейчас в теме
Все работает! Спасибо автору!
22. pinkz80 150 28.11.19 18:39 Сейчас в теме
отличная работа, спасибо!
23. SD3388 13.01.20 17:54 Сейчас в теме
Добрый день.
Как можно с Вами на прямую связаться по вопросам обработки ?
24. salexdv 2400 13.01.20 21:01 Сейчас в теме
(23) Пишите здесь, постараюсь помочь.
25. portal80 01.02.20 21:57 Сейчас в теме
Добрый вечер! Подключаюсь к базе Mysql через Putty

Само подключение происходит, всплывает окно PUTTY http://prntscr.com/qw58c9


Но дальше всплывает ошибка

{Обработка.MySQL.МодульОбъекта(30)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

Драйвер устанавливал и 32 и 64 https://dev.mysql.com/downloads/connector/odbc/ отсюда

В чем причина помогите!?
27. Greek26rusa 2 12.05.20 00:59 Сейчас в теме
MySQL.Инициализация(ИмяODBC, ИмяБазы, ИмяПользователя, Пароль);
тут получаю ошибку не понятно что такое инициализация
28. salexdv 2400 12.05.20 09:26 Сейчас в теме
(27) Покажите полный код. Как создаете объект MySQL, обработку встроили в свою конфигурацию?
Должно быть вот так, если делаете так, как описывал я
MySQL = Обработки.MySQL.Создать();
MySQL.Инициализация(ИмяODBC, ИмяБазы, ИмяПользователя, Пароль);
29. Greek26rusa 2 24.05.20 21:22 Сейчас в теме
(28)разобрался а с линукса что то похожее есть?
30. salexdv 2400 25.05.20 09:13 Сейчас в теме
(29) Для linux у меня готового ничего нет
31. salexdv 2400 25.05.20 09:16 Сейчас в теме
(29) Можно попробовать установить ODBC-коннектор для соответствующей ОС, например, отсюда https://dev.mysql.com/downloads/connector/odbc/
Возможно, всё будет работать так, как надо. Сам я этого не пробовал
32. Greek26rusa 2 25.05.20 12:39 Сейчас в теме
(31)это я пробывал. так не срабатывает
33. salexdv 2400 26.05.20 21:14 Сейчас в теме
(32) В linux данная обработка вам мало чем поможет, там можно работать с MySQL только через внешние источники данных. В конфигураторе создаете источник, импортируете таблицы, с которыми хотите работать и делаете то, что вам нужно.
Код для получения данных будет примерно такой:
СтрокаСоединения = "DRIVER={MySQL ODBC 8.0 Unicode Driver};"; // Если установили последний на данный момент отсюда https://dev.mysql.com/downloads/connector/odbc/
СтрокаСоединения = СтрокаСоединения + "SERVER=XXX.XXX.XXX.XX;";
СтрокаСоединения = СтрокаСоединения + "DATABASE=basename;";	

ПараметрыСоединения = ВнешниеИсточникиДанных.MySQL.ПолучитьОбщиеПараметрыСоединения();
ПараметрыСоединения.АутентификацияСтандартная = Истина;
ПараметрыСоединения.АутентификацияОС = Ложь;

ПараметрыСоединения.ИмяПользователя = "username";
ПараметрыСоединения.Пароль = "userpassword";	
ПараметрыСоединения.СтрокаСоединения = СтрокаСоединения;
ПараметрыСоединения.СУБД = "MySQL";

ВнешниеИсточникиДанных.MySQL.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);	// MySQL - имя внешнего источника данных в конфигураторе
ВнешниеИсточникиДанных.MySQL.УстановитьСоединение();

Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ ВнешнийИсточникДанных.MySQL.Таблица.customers");
ТаблицаПользователей = Запрос.Выполнить().Выгрузить();
Показать
34. Greek26rusa 2 27.05.20 14:13 Сейчас в теме
(33)Это вариант известен( к сожалению в расширении не работает. не хотелось бы изменять конфигурацию
35. salexdv 2400 27.05.20 14:26 Сейчас в теме
(34) Ну тогда простых решений я не вижу. Остаются только следующие варианты:
1. Ждать пока кто-нибудь напишет нативную компоненту для работы через ODBC.
2. Организовать какую-нибудь прокладку (php, python, java и т.п.), которая будет отдавать и принимать данные
3. Писать обмен через JSON/XML.
Тут третий вариант мне видится самым оптимальным.
А что страшного в добавлении источника данных в конфигурацию? На обновлении это практически не скажется. Весь код взаимодействия с источником можно сделать через расширение или внешнюю обработку. Изменений в конфигурации считай, что нет никаких.
36. mrostovsky 09.07.21 16:48 Сейчас в теме
Всем Доброго...
шоб исправить эту ошибку:
{Обработка.MySQL.МодульОбъекта(30)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан

в модуле обработке необходимо по образу и подобию внести изменения:


// Функция возвращает строку, используемую для подключения к базе MySQL
//
Функция ПолучитьСтрокуСоединения()
	
	//СтрокаСоединения = "DSN=" + СокрЛП(ODBC) + ";";
	//СтрокаСоединения = СтрокаСоединения + "Database=" + СокрЛП(DB) + ";";
	//СтрокаСоединения = СтрокаСоединения + "Uid=" + СокрЛП(User) + ";";
	//СтрокаСоединения = СтрокаСоединения + "Pwd=" + СокрЛП(Pass) + ";";
	
	СтрокаСоединения = "Provider=MSDASQL" + ";";
	СтрокаСоединения = СтрокаСоединения + "DRIVER={MySQL ODBC 8.0 ANSI Driver}" + ";";
	СтрокаСоединения = СтрокаСоединения + "SERVER=192.168.1.4" + ";";
	СтрокаСоединения = СтрокаСоединения + "Database=" + СокрЛП(DB) + ";";
	СтрокаСоединения = СтрокаСоединения + "Uid=" + СокрЛП(User) + ";";
	СтрокаСоединения = СтрокаСоединения + "Pwd=" + СокрЛП(Pass) + ";";
	
	Возврат СтрокаСоединения;
	
КонецФункции
Показать
37. GoR1313 23.05.22 11:53 Сейчас в теме
Спасибо большое! Очень выручила! )))
38. GoR1313 10.06.22 13:37 Сейчас в теме
Так, а вот такой вопрос, напрямую к базе подключается отлично, а вот через putty уже не может. Сможете мне помочь?

	ИмяODBC = "...";
	ИмяБазы = "...";
	ИмяПользователя = "...";
	Пароль = "...";
	
	MySQL = Обработки.MySQL.Создать();
	MySQL.Инициализация(ИмяODBC, ИмяБазы, ИмяПользователя, Пароль);
	
	MySQL.ИспользоватьPutty = Истина;
	MySQL.Putty = "C:\Program Files\PuTTY\putty.exe"; // Путь к программе Putty (Kitty)
	MySQL.User_put = ИмяПользователя;
	MySQL.Pass_put = Пароль;
	MySQL.Name_put = "meters";
	
	Если НЕ MySQL.УстановитьСоединение(Ложь) Тогда
		Сообщить(MySQL.ОписаниеОшибки);		
		Возврат;
	КонецЕсли;
Показать


и вот на установке соединения все и падает с ошибкой:

{РаботаСMySQL Обработка.MySQL.МодульОбъекта(50)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 8.0(a) Driver]Can't connect to MySQL server on '127.0.0.1:3306' (10061)
39. salexdv 2400 10.06.22 13:41 Сейчас в теме
(38) Putty при этом стартует? Порт в который смотрит ODBC через туннель проброшен в настройках Putty?
40. GoR1313 10.06.22 13:44 Сейчас в теме
(39) да, стартует без проблем. Так, а вот по настройкам подробнее. Порты где надо пробрасывать? У меня только так настроено:
Прикрепленные файлы:
43. salexdv 2400 10.06.22 13:53 Сейчас в теме
(40) Если проброс настроен правильно и сессия putty запущена, тогда тест соединения в настройках ODBC должен проходить успешно.
41. salexdv 2400 10.06.22 13:51 Сейчас в теме
(40) Смысл использовать putty есть тогда, когда порт MySQL на удаленном сервере закрыт для доступа извне. В таком случае можно пробросить порт через туннель на любой порт локальной машины, и уже именно локальный порт указывается в настройках ODBC. Подробнее про проброс портов можно почитать тут
42. GoR1313 10.06.22 13:52 Сейчас в теме
(41) Оки )))) Буду читать! Спасибо!
44. Zmey_72 54 13.01.23 13:44 Сейчас в теме
Огромное спасибо за обработку. Внедрил в свой обмен с сайтом. Правда пришлось немного дорабатывать, нашёл несколько недочётов. Например, у меня ключи полей обязательно нужно указывать по краям строки сиvволом апострофа, так он фроде называется. Вываливалась ошибка при выполнении запроса.

Вот код процедуры:

Функция ПолучитьТекстДляЗапросаОбновления(ЗначенияПолей)
	
	Текст = "";
	
	НомерПоля = 0;
	
	Для Каждого Обход ИЗ ЗначенияПолей Цикл		
		
		НомерПоля = НомерПоля + 1;
		
		Апостраф="";  // ;)
		
		Если Не ТипЗнч(Обход.Значение)=Тип("Число") Тогда 
			Апостраф="'";
		КонецЕсли;
		

// И ключ и значение обрамил знаками, иначе вываливалась ошибка 

		Текст = Текст +"`"+Обход.Ключ+"`"+ "="+Апостраф + Обход.Значение + Апостраф;
		
		Если НомерПоля < ЗначенияПолей.Количество() Тогда
			Текст = Текст + "," + Символы.ПС;
		КонецЕсли;
		
	КонецЦикла;
	
	Возврат Текст;
	
КонецФункции
Показать
45. user1155991 29.08.23 18:00 Сейчас в теме
при записи в базу SQL вместо русских букв знаки вопроса. Понятно, что вопрос в кодировке, но как его решить? В базе данных кодировка utf8-general-ci
46. salexdv 2400 11.09.23 08:29 Сейчас в теме
(45) Возможно, стоит посмотреть в настройки ODBC или установлена не та версия ODBC Connector. Если я ничего не путаю, то есть ANSI-версия и Unicode.
47. user1155991 11.09.23 09:45 Сейчас в теме
(46)Проблема решилась сама собой. Может админы MySql увидели и что-то сделали. Либо повлияло то, что я перешел на другой физический сервер 1С. Возможно на новом сервере 1С и были другие настройки ODBC
Оставьте свое сообщение