V7 Бух.итоги По Ole-соединению

Тема в разделе "1C и всё что с ней связано", создана пользователем MaxiMina, 12 фев 2013.

  1. MaxiMina

    MaxiMina New Member

    Регистрация:
    8 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте. Помогите пожалуйста разобраться в использовании бух.итогов посредством OLE-соединения.
    У меня есть две базы неидентичные. Из одной базы в другую подключаюсь и пытаюсь использовать бух.итоги. В базе, к которой подключаюсь, использую следующий код, который работает верно:

    ВСчет = ВыбСчет79;
    БИ=СоздатьОбъект("БухгалтерскиеИтоги");
    БИ.ИспользоватьСубконто(ВидыСубконто.Подразделения,Подразделение);
    БИ.ВыполнитьЗапрос(НачДата,КонДата,ВыбСчет79,,,,"Проводка");
    БИ.ВыбратьПериоды();
    Пока БИ.ПолучитьПериод()=1 Цикл
    флД=0;
    флК=0;
    //ДебИт - дабы не зацензурено было
    Если (БИ.Операция.Дебит.Счет=Всчет) и (БИ.Операция.Кредит.Счет=Всчет) Тогда
    Если БИ.Операция.Дебит.Субконто(1)<>Подразделение Тогда
    флД=1;
    КонецЕсли;
    Если БИ.Операция.Кредит.Субконто(1)<>Подразделение Тогда
    флК=1;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    При подключении использую следующий код:

    БазаОле = СоздатьОбъект("V77.Application");
    .......
    ВыбСчет79 = БазаОле.CreateObject("Счет");
    Если ВыбСчет79.НайтиПоКоду("79.2.1") = 1 Тогда
    ВСчет = ВыбСчет79.ТекущийСчет();
    КонецЕсли;
    справПодр = БазаОле.CreateObject("Справочник.Подразделения");
    справПодр.ВыбратьЭлементы();
    Пока справПодр.ПолучитьЭлемент() = 1 Цикл
    Вхожд = найти(справПодр.Наименование, "МоеПодразделение");
    Если Вхожд > 0 Тогда
    Подразделение = справПодр.ТекущийЭлемент();
    Прервать;
    КонецЕсли;
    КонецЦикла;
    БИ = БазаОле.CreateObject("БухгалтерскиеИтоги");
    ВидСубкПодрОле = БазаОле.ВидыСубконто.Подразделения;
    БИ.ИспользоватьСубконто(ВидСубкПодрОле, Подразделение);
    БИ.ВыполнитьЗапрос(НачДата,КонДата,ВСчет,,,1,"Проводка",);
    БИ.ВыбратьПериоды(0,0,0,0);
    Пока БИ.ПолучитьПериод()=1 Цикл
    флД=0;
    флК=0;
    Если (БИ.Операция.Дебит.Счет=Всчет) и (БИ.Операция.Кредит.Счет=Всчет) Тогда
    Если БИ.Операция.Дебит.Субконто(1)<>Подразделение Тогда
    флД=1;
    КонецЕсли;
    Если БИ.Операция.Кредит.Субконто(1)<>Подразделение Тогда
    флК=1;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;

    Дальше в код не вдаюсь. В базе, к которой подключаюсь, код отрабатывает по определенному подразделению. Во втором случае подразделение не проходит и перебирает все бух.итоги. Подскажите пожалуйста, где ошибка?
    Заранее спасибо.
     
  2. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Я думаю - обычный глюк. Часто наблюдал, что поведение OLE неадекватно внутренним командам.
    Я нельзя ли сделать проще:
    - написать глобальную функцию - ПолучитьКакойТоРезультат(ИмяПодр)
    - спокойно отладить
    - а в OLE ее вызвать. Не знаю точно, но думаю так сойдет: Рез = БазаОле.ПолучитьКакойТоРезультат("Мое");
     
  3. MaxiMina

    MaxiMina New Member

    Регистрация:
    8 фев 2013
    Сообщения:
    2
    Симпатии:
    0
    Следуя Вашему совету, результат остался тем же. Может быть есть еще какие-нибудь варианты?
     
Загрузка...
Похожие Темы - Бух итоги По
  1. Paume
    Ответов:
    3
    Просмотров:
    1.772
  2. KiR
    Ответов:
    5
    Просмотров:
    6.225
  3. KiR
    Ответов:
    2
    Просмотров:
    2.632
  4. KiR
    Ответов:
    11
    Просмотров:
    6.786
  5. raissa
    Ответов:
    5
    Просмотров:
    3.842

Поделиться этой страницей