Имя: Пароль:
1C
1С v8
1c и sql
0 dron4ikkk
 
11.06.13
08:25
как в 1с...результата запроса поместить в sqlserver 2008 r2? наачать лучше с простого c подключения к базе нарыл такой код:


con = СоздатьОбъект("adodb.connection");
Str="Provider='sqloledb';Data Source=Имя_Сервера;Initial Catalog=Имя_Базы";
Попытка
con.open(str, "Пользователь", "Пароль");
исключение
Сообщить("Не верно указаны данные для подключения к БД");
Сообщить(ОписаниеОшибки());
КонецПопытки;
command=CreateObject("adodb.command");
command.ActiveConnection=con;
con.BeginTrans();
command.CommandText=SQL_Скрипт;
command.Execute();
......
Попытка
con.CommitTrans();
Исключение
Сообщить("Не удалось зафиксировать транзакцию! Попытаемся откатить...");
con.RollbackTrans();
КонецПопытки;
con.Close();


а что дальше?


запрос такой:

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



   Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
   Запрос.УстановитьПараметр("НулеваяДата", '00010101');

   Результат = Запрос.Выполнить().Выбрать();
   
   
   Пока Результат.Следующий() Цикл
       item = фабрикаXDTO.Создать(rowType);
       item.fio = Строка(Результат.Сотрудник);
       item.dolgnost = Строка(Результат.Долж);
       item.podrazdelenie = Строка(Результат.Подразд);
       item.status = Строка(Результат.Состояние);
       data.items.Добавить(item);
       
       Если Результат.Состояние = null Тогда
           Статус="Работает";
       КонецЕсли;
           
   КонецЦикла;
1 rbcvg
 
11.06.13
08:30
"результата запроса поместить в sqlserver 2008 r2" - накой он там?
2 dron4ikkk
 
11.06.13
08:39
(1) нагрузку на сервак таким образом уменьшит..выгружаешь базу ночью..один раз в сутки..и уже потом идет работа с sql serverom чем каждый раз обращаться к серваку и заново получать данные..типа как кэша!
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn