8.х Выгрузка данных в MySql

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем AntonioCarlos, 11 ноя 2009.

  1. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток, пишу код, он должен записи из справочника по средством sql запроса перенести в базу mysql, скачал специальный для жого драйвер, но код не работает, вылетает ошибка:

    {Форма.ФормаОтчета(22)}: Метод объекта не обнаружен (Следующий)
    Пока ВыбратьЭлемент.Следующий() Цикл


    Код:
    Перем  Соединение;
    Перем Т;
    Процедура Подключить()
    Соединение = новый COMобъект("ADODB.Connection");
    СтрокаСоединение = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;DataBase=test;UID=***;PWD=***";
    Соединение.ConnectionTimeOut = 600;
    Соединение.ConnectionString = (СтрокаСоединение);
    Попытка
    Соединение.Open();
    Сообщить("MySQL база подключена!!!");
    Исключение
    Сообщить("Не могу подключиться к базе!!!");
    КонецПопытки;
    КонецПроцедуры 
    
    Процедура Перенос()
    ВыбратьЭлемент = Справочники.Номенклатура.Выбрать();
    Пока ВыбратьЭлемент.Следующий()  Цикл
    ОбработкаПрерыванияПользователя();
    Если ВыбратьЭлемент.ЭтоГруппа = истина  Тогда
    Продолжить;
    КонецЕсли;
    Сообщить (ВыбратьЭлемент);
    Попытка
    Стр = "INSERT INTO `tovar` SET `id` = '"+Строка(ВыбратьЭлемент.Код)+"' and `name` ='"+Строка(ВыбратьЭлемент.Наименование)+"'";
    Сообщить(Стр);
    ВыбратьЭлемент = Соединение.Execute(Стр);
    Исключение
    Сообщить("Невозможно выполнить запрос");
    КонецПопытки;
    Сообщить("Перенесли - ");
    КонецЦикла;
    КонецПроцедуры
    
    Подскажите пожалуйтса как заставить его работать
  2. eviloid
    Offline

    eviloid Опытный в 1С

    Регистрация:
    15 май 2008
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВыбратьЭлемент = Справочники.Номенклатура.Выбрать();
    Пока ВыбратьЭлемент.Следующий()  Цикл
    ...
    ВыбратьЭлемент = Соединение.Execute(Стр);
    ...
    КонецЦикла;
    
    
    Вы в теле цикла изменяете переменную ВыбратьЭлемент, поэтому и возникает ошибка на второй итерации, т.к. в ВыбратьЭлемент уже не выборка элементов справочника номенклатура, а результат вызова функции Execute...
  3. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    А как можно это исправить, я для проверки за цикл вынес запрос все работает, а в цикле не получается. Еще вопрос в 1с можно указать кодировку символов, просто когда запрос выполняется в mysql заносятся пустые поля, подозреваю что это из за несовместимости кодировок
  4. eviloid
    Offline

    eviloid Опытный в 1С

    Регистрация:
    15 май 2008
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    использовать другую переменную:
    Код:
    	Результат = Соединение.Execute(Стр);
    
    или вообще так:
    Код:
    	Соединение.Execute(Стр);
    
    ответ можно найти тут
  5. TopicStarter Overlay
    AntonioCarlos
    Offline

    AntonioCarlos

    Регистрация:
    11 ноя 2009
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Ссылка не работает
  6. eviloid
    Offline

    eviloid Опытный в 1С

    Регистрация:
    15 май 2008
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    вчера работало, ну да ладно, сделайте так:

    Соединение.Execute("SET NAMES cp1251"); // устанавливаем кодировку
    Соединение.Execute(Стр); // выполняем запрос

Поделиться этой страницей