8.х Запись таблицы значений во внешнию SQL базу

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ProFan, 21 фев 2010.

  1. TopicStarter Overlay
    ProFan
    Offline

    ProFan

    Регистрация:
    14 фев 2010
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Доброго всем времени суток.
    Еще раз спасибо за помощь, но апетит появляется........
    Пролема: занимаюсь синхронизацией существующего приложения с вновь внедряемой бухгалтерией 1С.
    Подсказали способ создания таблицы значений на основе запроса к внешней базе SQL.
    Тоесть вопрос передачи данных из внешней базы в 1С решен вполне приемлимо.
    Програмное формирование запроса для передачи в обратном направлении позволяет создать запрос для передачи 1 записи.
    Передача целой таблицы таким способом занимает не приемлемо большое время.
    Просьба: Кто решил эту проблему - вышлите кусок кода.

    Сейчас это выглядит так:

    Код:
    Процедура выполнитьSQL( ТекстЗапроса, ConnectionTimeout = 5000, CommandTimeOut = 5000) Экспорт
    пСоед = Новый COMОбъект("ADODB.Connection");
    пСоед.Provider = "SQLOLEDB";
    пСоед.ConnectionTimeout = ConnectionTimeout;
    пСоед.CommandTimeOut= CommandTimeOut;	
    пСоед.ConnectionString = СокрЛП(СтрокаПодключения);
    пСоед.Open();
    Результат = Новый COMОбъект("ADODB.RecordSet");
    сообщить(ТекстЗапроса);
    Результат.Open(СокрЛП(ТекстЗапроса) + "", пСоед);
    //
    //Результат.Close();	
    пСоед.Close();
    конецПроцедуры
    
    Код:
    Процедура ОсновныеДействияФормыВыгрузиьРасход(Кнопка)
    // Вставить содержимое обработчика.
    // очистить таблицу
    ТекстЗапроса="DELETE FROM OcRashod Where  Da23>='"+началоДня(ДатаНач)+"' AND Da23<=convert(datetime,'"+Формат(ДатаКон,"ДФ=гггг.ММ.дд")+" 23:59:59"+"',120)";  
    //'"+КонецДня(началоДня(ДатаКон))+"' ";
    ВыполнитьSQL(ТекстЗапроса); 
    ТЗТовар=новый таблицаЗначений;
    выборкаОПЗС =документы.ОтчетПроизводстваЗаСмену.Выбрать(началоДня(ДатаНач),КонецДня(началоДня(ДатаКон)));
    Пока выборкаОПЗС.Следующий()Цикл
    если  выборкаОПЗС.Проведен тогда
    ё=0;
    Для каждого стрПродукт из выборкаОПЗС.Продукция цикл  // запишем данные по продукции
    ТекстЗапроса="INSERT INTO OcRashod       SELECT 
    |NewId() as id,
    |zkzVW.id as zkz ,
    |0  as Uslga ,
    |'ОПЗС' as vidDoc,
    |'"+ выборкаОПЗС.номер+"' as NomDoc ,
    |'" + выборкаОПЗС.Дата+"' as Da23 ,
    |'"+стрПродукт.Номенклатура.код +"' as NN,
    |'шт.' as edIz,
    |"+Стр2стрSQL(строка(стрПродукт.Количество)) +" as n,
    |"+Стр2стрSQL(строка(стрПродукт.СуммаПлановая))+" as [SUM] ,
    |'-' as prim,0 as Hand 
    | FROM zkzVW where  zkzVW.DCod='"+  стрЗаменить(стрПродукт.Номенклатура.код ,"/",".")+"'" ;
    //(NomDoc,NN) Values ('"+выборкаРТУ.номер+"','"+стрТовар.Номенклатура.код+"' ) ";
    ё=ё+1;
    ВыполнитьSQL(ТекстЗапроса); 
    конеццикла;
    конецесли;
    
    конецЦикла;
    КонецПроцедуры
    
    Заранее спасибо.

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