Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 1C 8.2 УПП хранимая процедура SQL в Цикле
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
alexandr_f
Нужно выгрузить данные из 1С в SQL 2008
  Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    РаботникиОрганизацийСрезПоследних.Период,
|    РаботникиОрганизацийСрезПоследних.Регистратор,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Ссылка,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Ссылка,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Код,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.ДатаРождения КАК ДатаРождения,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.КодПоДРФО КАК ИНН,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо.Пол КАК Пол,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.Код КАК ТабНом,
|    РаботникиОрганизацийСрезПоследних.Должность.Ссылка,
|    РаботникиОрганизацийСрезПоследних.Должность.Код,
|    РаботникиОрганизацийСрезПоследних.Должность.Категория.Ссылка,
|    РаботникиОрганизацийСрезПоследних.Должность.Грейд,
|    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.ВнешнийКод,
|    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.НомерЦеха,
|    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование,
|    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Родитель.НомерЦеха,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.ВидДоговора,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаПриемаНаРаботу КАК ДатаПриемаНаРаботу,
|    РаботникиОрганизацийСрезПоследних.Сотрудник.ДатаУвольнения КАК ДатаУвольнения,
|    ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия,
|    ФИОФизЛицСрезПоследних.Имя Как Имя,
|    ФИОФизЛицСрезПоследних.Отчество КАК Отчество
|ИЗ
|    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
|        ПО РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = ФИОФизЛицСрезПоследних.ФизЛицо";

Результат = Запрос.Выполнить().Выбрать();
КоличествоСтрок=Результат.Количество();
   Попытка
    Соединение = Новый COMОбъект("ADODB.Connection");
    ДатаЛ = Новый COMОбъект("DataLinks");
    Соединение.ConnectionString = "Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=;Data Source=";
       ConnectionString = Соединение.ConnectionString;
    Сообщить(ConnectionString);
    Соединение.Open(ConnectionString);
    
        

    Команда = Новый COMОбъект("ADODB.Command");

   Команда.ActiveConnection = Соединение;

    Команда.CommandType = 4;
    Команда.CommandText="UPP_1C.insert_PersonalAll";


    Результат.Следующий();
    ПАРАМ=ЧИСЛО(Результат.ТабНом);
    

     Параметр1=Команда.CreateParameter("@persid", 3, 1, 4, ПАРАМ);
    
     Команда.Parameters.Append(Параметр1);
     Команда.Execute();
    


    
  
  
Исключение
        Предупреждение("Не удалось создать подключение!");
КонецПопытки;

Вот там выполняет
А нужно в цикле
  Пока Результат.Следующий() Цикл
  
     ПАРАМ=ЧИСЛО(Результат.ТабНом);
    
     Команда.Execute();
    КонецЦикла;

Там не выполняется. Где ошибка?
sava1
Стесняюсь спросить: А зачем сие рукоблудие?
alexandr_f
Цитата(sava1 @ 21.05.15, 12:28) необходимо зарегистрироваться для просмотра ссылки
Стесняюсь спросить: А зачем сие рукоблудие?

Мне надо выгрузить список работников в SQL таблицу
sava1
Неужели УПП файловая?
alexandr_f
нет она SQL.
Но я выгружаю в на другой не 1С сервер
sava1
Сервер совсем другой?
alexandr_f
Цитата(sava1 @ 21.05.15, 12:39) необходимо зарегистрироваться для просмотра ссылки
Сервер совсем другой?

Совсем другой . И не 1С
sava1
Заходим в менеджер сервера, прилинковываем другой сервер, в Експлорере перетаскиваем таблицу из одной базы в другую (КопиДата если не ошибаюсь).
Но перед этим советую посмотреть в ту таблицу - что Вы собираетесь делать с сылочными данными - там будут Гуиды.
2й вариант.
Там-же пишем запрос вида
INSERT INTO ... SELECT

Обращение к таблицам Имя_сервера.Имя_базы.dbo.Имя_таблицы
в запросе выбирать примитивы (Сотрудник.Наименование а не Сотрудник)
alexandr_f
Цитата(sava1 @ 21.05.15, 12:57) необходимо зарегистрироваться для просмотра ссылки
Заходим в менеджер сервера, прилинковываем другой сервер, в Експлорере перетаскиваем таблицу из одной базы в другую (КопиДата если не ошибаюсь).
Но перед этим советую посмотреть в ту таблицу - что Вы собираетесь делать с сылочными данными - там будут Гуиды.
2й вариант.
Там-же пишем запрос вида
INSERT INTO ... SELECT

Обращение к таблицам Имя_сервера.Имя_базы.dbo.Имя_таблицы
в запросе выбирать примитивы (Сотрудник.Наименование а не Сотрудник)

У меня нет доступа к SQL серверу 1С - и это правильно
sava1
Тогда пусть админы и дрочат...

Выгружаем базу 1с , загружаем на свой сервер и дальше по натоптаной тропе..
alexandr_f
Цитата(sava1 @ 21.05.15, 13:04) необходимо зарегистрироваться для просмотра ссылки
Тогда пусть админы и дрочат...

Выгружаем базу 1с , загружаем на свой сервер и дальше по натоптаной тропе..

Это не база не обслуживание 1С .
Это простой запрос
daveal
Append вы тоже в цикле делаете? А если попробовать CreateParameter и Append сделать перед циклом, а в цикле менять через Параметр1.Value?
sava1
О каком цыкле Вы говорите - УВас задача "Загрузить сервер" ?
alexandr_f
Цитата(sava1 @ 21.05.15, 13:45) необходимо зарегистрироваться для просмотра ссылки
О каком цыкле Вы говорите - УВас задача "Загрузить сервер" ?

Какой сервер
Мне надо загрузить результаты запроса в таблицу которая работает в другом (не 1С приложении)
sava1
А цикл зачем ? Нельзя передать рекордсет?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.