Имя: Пароль:
1C
1С v8
Можно ли по OLE выполнять запросы из 1с 7.7 в 1с 8.2
,
0 sidalexsandr
 
13.12.12
17:54
Можно ли по OLE выполнять запросы из 1с 7.7 в 1с 8.2?
1 ДенисЧ
 
13.12.12
17:55
Тебе нужно разрешение? :-)
2 Popkorm
 
13.12.12
17:56
(0) разрешаю
3 Ахиллес
 
13.12.12
17:56
(0) Даже к экселю можно.
4 Popkorm
 
13.12.12
17:57
Запрос = V7.CreateObject("Запрос");
5 sidalexsandr
 
13.12.12
17:59
(4) К 8.
6 Popkorm
 
13.12.12
18:00
7 Popkorm
 
13.12.12
18:00
(5) в (4) делается из 8-ке
8 Popkorm
 
13.12.12
18:02
+(7) можно из 8-ки в 7.7 читать/записывать/создавать
9 palpetrovich
 
13.12.12
18:06
Процедура Подключить()    
   База82 = CreateObject("V82.ComConnector");
   Попытка
       Соединение = База82.Connect("File="+КаталогБазы82+"; Usr="+Пользователь82+"; Pwd="+Пароль82);
   Исключение
       Возврат;
   КонецПопытки;
КонецПроцедуры
                 
Процедура ПрочитатьНоменклатуру()  
   Запрос = Соединение.NewObject("Запрос");  
   Запрос.Текст = "
   |ВЫБРАТЬ
   |СписокНоменклатуры.Ссылка КАК Номенклатура
   |ИЗ
   |Справочник.Номенклатура КАК СписокНоменклатуры
   |";
     Рез = Запрос.Выполнить();    
     ТЗ = Рез.Выгрузить();
     Для инд=1 По ТЗ.Количество()-1 Цикл
         ТекСтрока = ТЗ.Получить(инд);
       Сообщить("Номенклатура  "+ТекСтрока.Номенклатура.Наименование);
     КонецЦикла;
КонецПроцедуры
10 sidalexsandr
 
13.12.12
18:54
(9) Через ТаблицуЗначений вариант. Но таблица значений может переполниться и начать глючить.

А так не будет ?: Рез = Запрос.Выполнить();  
Р = Рез.Выбрать();
Пока Р.Следующий() Цикл
   // ....
КонецЦикла;
11 Serginio1
 
13.12.12
19:08
Пока Р.Следующий()<>0 Цикл
   // ....

КонецЦикла;
12 hhhh
 
13.12.12
20:16
(10) это в 7.7 глючит. А в 8 не заглючит.
13 Рэйв
 
13.12.12
20:19
Я лично предпоситаю по СОМ из 77 к 8 , а не наоборот

Запрос=NewObject("Запрос")
Запрос.Текст="Выьрать..."

и так дале.
14 sidalexsandr
 
14.12.12
09:46
(13) Спасибо, но можно по подробней.
15 Serginio1
 
14.12.12
11:37
Процедура ЗагрузитьГуидыБанков()
Спр=СоздатьОбъект("Справочник.Банки");
Сервер=ПодключитьсяКВосьмерке();
   Спр8=Сервер.справочники.Банки;
   Выборка=Спр8.Выбрать();
   
   Пока Выборка.Следующий()<>0  Цикл
   Объект = Выборка.ПолучитьОбъект();
    Код=Объект.Код;
   
   Если спр.НайтиПоКоду(Код,0)=1 Тогда
       Если Спр.Ref<>Сервер.XMLСтрока(Объект.Ссылка) Тогда
           Спр.Ref=Сервер.XMLСтрока(Объект.Ссылка);
           Спр.Записать();
           Сообщить("---"+Спр);
       КонецЕсли;
   КонецЕсли;    
КонецЦикла;
КонецПроцедуры

Можешь создать внешнюю обработку в которой вызвать что тебе нужно создать в модуле обработки методы например

Функция ВычислитьВыражение(Выражение) Экспорт
 возврат вычислить(Выражение);    
КонецФункции

Функция ВычислитьСвойствоОбъекта(Объект,Свойство) Экспорт
 возврат Объект[Свойство];    
КонецФункции


И вызывать из семерки

ПутьКОбработке=ТвойПутьКepf;
   ДляВнешнегоСоединения= Сервер.ВнешниеОбработки.Создать(ПутьКОбработке);


Если Мета="Справочник" Тогда
       Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Справочники."+ВидПриемник+".СоздатьЭлемент()");    ИначеЕсли Мета="Документ" Тогда
           Объект=ДляВнешнегоСоединения.ВычислитьВыражение("Документы."+ВидПриемник+".СоздатьДокумент()");
           ДляВнешнегоСоединения.ВычислитьСвойствоОбъекта(Объект,ТЧПриемника).Добавить();
               Иначе
               Объект=ДляВнешнегоСоединения.ВычислитьВыражение("РегистрыНакопления."+ВидПриемник+".СоздатьНаборЗаписей()");
КонецЕсли;
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.