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

получить данные из регистра 7.7 по COM соединению

Автор alex_sysadm, 01 фев 2012, 17:19

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

alex_sysadm

Есть база 8.2 и есть другая база 7.7 В семерке регистр и процедура работы с этим регистром (получить простой отчет за период).
Задача - подключиться из 8-ки к базе 7.7 и получить этот отчет.


код, представленный ниже работает нормально.

База77  =  Новый COMОбъект("V77S.Application");
Открыта=База77.Initialize(База77.RMTrade ...
РасчетыСПокупателями=База77.CreateObject("Регистр.РасчетыСПокупателями");
...
   РасчетыСПокупателями.ВыбратьДвижения (НачДата, КонДата);
   Попытка
      Пока РасчетыСПокупателями.ПолучитьДвижение() = 1  Цикл
         Если РасчетыСПокупателями.Контрагент.Код = КодКонтрагента Тогда
            
            Сообщить (РасчетыСПокупателями.РасчДокумент.Вид() + "   Долг:" + РасчетыСПокупателями.Долг + "    Дата:" + РасчетыСПокупателями.РасчДокумент.ДатаДок);
         КонецЕсли;
      КонецЦикла
   Исключение
   // чтото не срослось...   
   КонецПопытки;


а вот этот код не работает:
...
РасчетыСПокупателями.ВременныйРасчет(1);
РассчитатьРегистрыНа(НачДата,);
РассчитатьРегистрыПо(КонДата,);

Пишет - метод не найден...
Подскажите, как в данной ситуации исполнить расчет регистра на заданный период?

has

Текст ошибки писать следует полностью. На какую строчку то ругается? Ну вобще предполагаю что ошибка тут

РасчетыСПокупателями.ВременныйРасчет(1);
База77.РассчитатьРегистрыНа(НачДата,);
База77.РассчитатьРегистрыПо(КонДата,);

alex_sysadm

{Обработка.Выписка.Форма.Форма.Форма(52)}: Метод объекта не обнаружен (РассчитатьРегистрыНа)
   РасчетыСПокупателями.РассчитатьРегистрыНа(НачДата,);


alex_sysadm

{Обработка.Выписка.Форма.Форма.Форма(52)}: Ошибка при вызове метода контекста (РассчитатьРегистрыНа)
   База77.РассчитатьРегистрыНа(НачДата);   
по причине:
Неизвестная ошибка

sergejK74

Так попробуй.

ВремРегистры = База77.CreateObject("Регистры");
РасчетыСПокупателями=ВремРегистры.РасчетыСПокупателями;
РасчетыСПокупателями.ВременныйРасчет(1);
ВремРегистры.РассчитатьРегистрыНа(НачДата,);
Кнопочка Спасибо - слева!

alex_sysadm

Да, похоже прошла. Считала, правда очень долго (порядка 30-40 сек), хотя на 7 эта процедура выполняется мгновенно. Теперь затык строчкой ниже...


ТЗ=Новый ТаблицаЗначений ;
{Обработка.Выписка.Форма.Форма.Форма(59)}: Ошибка при вызове метода контекста (ВыгрузитьИтоги)
   РасчетыСПокупателями.ВыгрузитьИтоги(ТЗ,,);   
по причине:
Типы не совпадают (2)

alex_sysadm

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

sergejK74

ТЗ = База77.CreateObject("ТаблицаЗначений");
Таблицы значений мало того что в разных базах, так еще и разные в 7.7 и 8.
Кнопочка Спасибо - слева!

alex_sysadm

Еще вопрос: Пытаюсь поставить фильтр по регистру:

РасчетыСПокупателями.УстановитьФильтр(Контрагент,,,,,);

Измерение "Контрагент" - это ссылка на Справочник.Контрагенты из семерки.
У меня известен код Контрагента - текст. Как получить ссылку на справочник, а то о5 несовпадение типов при установке фильтра...

sergejK74

Наверно как-то так

Контрагент=База77.CreateObject("Справочник.Контрагенты");

Если Контрагент.НайтиПоКоду(КодКонтрагента) = 1 Тогда
РасчетыСПокупателями.УстановитьЗначениеФильтра("Контрагент",Контрагент.ТекущийЭлемент(),1);
КонецЕсли;
Кнопочка Спасибо - слева!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск