Имя: Пароль:
1C
1С v8
проблема с вставкой в sql server 2008
0 dron4ikkk
 
11.06.13
09:31
Есть такой запрос:

Результат запроса..необходимо вставить в базу находящуюся в sql servere


Запрос = Новый Запрос;
   Запрос.Текст =      
   "ВЫБРАТЬ
|       РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
|       РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник,
|       РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
|    ВЫБОР
|        КОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &ДатаОтчета
|                ИЛИ СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения = &НулеваяДата
|            ТОГДА СостояниеРаботниковОрганизацийСрезПоследних.Состояние
|        ИНАЧЕ СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
|    КОНЕЦ КАК Состояние
|    
|  ИЗ
|    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаОтчета, ) КАК СостояниеРаботниковОрганизацийСрезПоследних
|        ПО (СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)
|   ГДЕ
|    (РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
|            ИЛИ РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство))
|    И РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
|
|   УПОРЯДОЧИТЬ ПО
|   Подразд";  


   СтрокаСоединение1="Provider=SQLOLEDB;driver={sql server};server=OV9;UID=sa;PWD=12345678";
   
   
   Соединение = Новый Массив(6);

   Connection = Новый COMОбъект("ADODB.Connection");
   Catalog = Новый COMОбъект("ADOX.Catalog");  

   Command = Новый COMОбъект("ADODB.Command");  
   RecordSet = Новый COMОбъект("ADODB.RecordSet");
       
       
           
Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
   Запрос.УстановитьПараметр("НулеваяДата", '00010101');

   Результат = Запрос.Выполнить().Выбрать();
   
   
   Пока Результат.Следующий() Цикл
       item = фабрикаXDTO.Создать(rowType);
       item.fio = Строка(Результат.Сотрудник);
       item.dolgnost = Строка(Результат.Долж);
       item.podrazdelenie = Строка(Результат.Подразд);
       item.status = Строка(Результат.Состояние);
       data.items.Добавить(item);
       
       Если Результат.Состояние = null Тогда
           Статус="Работает";
       КонецЕсли;
           
   КонецЦикла;
           
   
СтрокаЗапроса = "INSERT INTO [адинц].[dbo].[Allfio] (Fio, Dolgn, Podrazd, Status) Values( '"+item.fio+"','"+item.dolgnost+"','"+item.podrazdelenie+"','"+item.status+"','172.16.0.17','1C:ЗУП 8.2','db-5')";


не знаю..правильно ли..вообще...не уверен с настройками '172.16.0.17','1C:ЗУП 8.2','db-5')"; что здесь писать, если база 1с и база в sql server находится у меня на компе.
1 Sammo
 
модератор
11.06.13
09:33
v8: 1c и sql
Дублирующая тема?
2 dron4ikkk
 
11.06.13
09:42
(1) нет другая
3 dron4ikkk
 
11.06.13
10:45
выдает ошибку Обработка.Обработка2.Форма.Отчет.Форма(175)}: Ошибка при вызове метода контекста (Execute)
           Command.Execute();
по причине:
Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается  в данном контексте.
вот код:

СтрокаЗапроса = "INSERT INTO [адинц].[dbo].[Allfio] (Fio, Dolgn, Podrazd, Status) Values( '"+item.fio+"','"+item.dolgnost+"','"+item.podrazdelenie+"','"+item.status+"')";
           Command.CommandText = СтрокаЗапроса;
           Command.Execute();