Приветствую дорогие форумчане, прошу помощи. Накатал код по данным из нета на выгрузку справочника в базу MySQL но уже не знаю как менять эту конструкцию. Основная проблема это цикл для записи данных. Прошу помощи, 1с 7.7 ТиС для Украины пример кода прилагаю.
Процедура Выполнить()
Попытка
DB = СоздатьОбъект("ADODB.Connection");
Исключение
Сообщить("Ошибка создания объекта ADODB.Connection: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
СтрокаСоединения = "DSN=Kontakt_x86;UID=***;PWD=***;CHARSET=cp1251";
Попытка
DB.Open(СтрокаСоединения);
Исключение
Сообщить("Ошибка соединения с базой данных: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
// Получение данных из справочника "Дисконт"
Запрос = СоздатьОбъект("Запрос");
Запрос.Текст =
"ВЫБРАТЬ Код, ШтрихКод, ФИО, Телефон, ID_TG " +
"ИЗ Справочник.Дисконт";
Попытка
Результат = Запрос.Выполнить();
Исключение
Сообщить("Ошибка выполнения запроса: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
Если Результат.Пустой() Тогда
Сообщить("Справочник 'Дисконт' пуст.");
Возврат;
КонецЕсли;
Выборка = Результат.Выбрать();
Пока Выборка.НайтиСледующий() = 1 Цикл
Код = Выборка.Код;
ШтрихКод = Выборка.ШтрихКод;
ФИО = Выборка.ФИО;
Телефон = Выборка.Телефон;
ID_TG = Выборка.ID_TG;
// Формирование SQL-запроса для вставки данных
SQL = "INSERT INTO discont (code, barcode, full_name, phone_number, tg_id) " +
"VALUES ('" + Код + "', '" + ШтрихКод + "', '" + ФИО + "', '" + Телефон + "', '" + ID_TG + "')";
Попытка
DB.Execute(SQL);
Исключение
Сообщить("Ошибка выполнения SQL-запроса: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Сообщить("Выгрузка данных завершена успешно.");
КонецПроцедуры
Прошу прощения можно закрывать тему. Вопрос решил по другому. Всем спасибо
Я не позиционирую это как 100% верный код но он рабочий и может кому-то пригодится в разработке.
Процедура Выполнить()
Попытка
DB = СоздатьОбъект("ADODB.Connection");
Исключение
Сообщить("Ошибка создания объекта ADODB.Connection: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
СтрокаСоединения = "DSN=ваш DSN;UID=логин;PWD=пароль;CHARSET=cp1251";
Попытка
DB.Open(СтрокаСоединения);
Исключение
Сообщить("Ошибка соединения с базой данных: " + ОписаниеОшибки());
Возврат;
КонецПопытки;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Выполнить)
|ОбрабатыватьДокументы все;
|Код = Справочник.Дисконт.Код;
|ШтрихКод = Справочник.Дисконт.ШтрихКод;
|ФИО = Справочник.Дисконт.Наименование;
|Телефон = Справочник.Дисконт.Телефон;
|Группировка Код;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
Код = Запрос.Код;
ШтрихКод = Запрос.ШтрихКод;
ФИО = Запрос.ФИО;
Телефон = Запрос.Телефон;
// Формирование SQL-запроса для вставки данных
SQL = "INSERT INTO discont (code, barcode, full_name, phone_number) " +
"VALUES ('"+Код+"', '"+ШтрихКод+"', '"+ФИО+"', '"+Телефон+"')";
Попытка
DB.Execute(SQL);
Исключение
Сообщить("Ошибка выполнения SQL-запроса: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Сообщить("Выгрузка данных завершена успешно.");
КонецПроцедуры
вообще-то уходим от цикла так -
ТекстЗапрос = "UPDATE orders SET `status`="+Выборка.Статус+ " WHERE id = ";
Сч = 0;
Пока ВыборкаДетЗаписи.Следующий() Цикл
Если Сч <> 0 Тогда
ТекстЗапрос = ТекстЗапрос + " OR id= ";
КонецЕсли;
ТекстЗапрос = ТекстЗапрос + ВыборкаДетЗаписи.ВебЗаказ;
Сч = Сч + 1;
КонецЦикла;
Command.CommandText = ТекстЗапрос;
Command.ActiveConnection = Connection;
Command.CommandType = 1;
Command.Execute();
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua