Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 21:46

Синтаксис обращения из 1С 7.7 к 1С 8

Автор wees, 30 ноя 2011, 09:01

0 Пользователей и 1 гость просматривают эту тему.

wees

    Возникло острая необходимость загрузки из базы 1С 8 в базу 1С 7.7. Подключение идет нормально, но дальше что-то не идет. Начиная с простейшего не могу перебрать элементы справочника из 1С 8. Код следующий:

   Com = "";
   Com = СоздатьОбъект("V81.COMConnector"); 
   Состояние("Подключение к базе");    
   Попытка
      База = Com.Connect("Usr=""Закачка"";Pwd=""123"";File=""" + СокрЛП(ПутьКБазе) + """");
      ЕстьПодключение = 1;
   Исключение
      ЕстьПодключение = 0;
      Сообщить("Не удалось подключиться к базе данных!!! " + СокрЛП(ОписаниеОшибки()));
      Предупреждение("Не удалось подключиться к базе данных!!!");
      Возврат;
   КонецПопытки;   
   
   Если ЕстьПодключение = 1 Тогда 
      СпрКонтр = База.Справочники.Контрагенты;
      ВыбКонтр = СпрКонтр.Выбрать();
      Пока ВыбКонтр.Следующий() = 1 Цикл 
         Сообщить("Бла бла бла");
      КонецЦикла; 
   КонецЕсли;

   Сообщение не выводится, хотя и не ругается. В инете не нашел нормального примера по обращению из 7.7 к 8, помогите пожалуйста кто-чем может. Выгрузку в DBF и подключение из восьмерки не предлагать, просто этим будет заниматься человек которому лишнее телодвижение смерти подобно, поэтому стараюсь максимально упростить.


wanderer6


AIFrame

Работа с объектами в другой базе через com-коннектор отличается в ряде моментов.
Например, нельзя собрать что-то по запросу в выборку. Запрос нужно предварительно создать в той базе через методы com-объекта NewObject. И работать надо в контексте "той" базы.
Пример запроса из базы в базу, где код написан только на стороне инициатора подключения.
Функция COM_ПолучитьИнформациюПоБазе()
СтруктураРозницы = Новый Структура;
СтруктураРозницы.Вставить("ВерсияИБ", ""+ РезультатПодключения.Метаданные.Имя + ": " + РезультатПодключения.Метаданные.Версия);

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

СтруктураРозницы.Вставить("Структура", ТЧ);

Возврат СтруктураРозницы;
КонецФункции

Обрати внимание, что Запрос - это не Новый Запрос;, а com-object.NewObject("Запрос"); И запрос описан так, как если бы я писал его в конфигураторе "той базы".
Короче, переделай свою ВыбКонтр = СпрКонтр.Выбрать(); в запрос.

Теги:
Рейтинг@Mail.ru

Поиск