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

  • Автор темы Автор темы MaxiMina
  • Дата начала Дата начала
M

MaxiMina

Здравствуйте. Помогите пожалуйста разобраться в использовании бух.итогов посредством 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;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Дальше в код не вдаюсь. В базе, к которой подключаюсь, код отрабатывает по определенному подразделению. Во втором случае подразделение не проходит и перебирает все бух.итоги. Подскажите пожалуйста, где ошибка?
Заранее спасибо.
 
Я думаю - обычный глюк. Часто наблюдал, что поведение OLE неадекватно внутренним командам.
Я нельзя ли сделать проще:
- написать глобальную функцию - ПолучитьКакойТоРезультат(ИмяПодр)
- спокойно отладить
- а в OLE ее вызвать. Не знаю точно, но думаю так сойдет: Рез = БазаОле.ПолучитьКакойТоРезультат("Мое");
 
Я думаю - обычный глюк. Часто наблюдал, что поведение OLE неадекватно внутренним командам.
Я нельзя ли сделать проще:
- написать глобальную функцию - ПолучитьКакойТоРезультат(ИмяПодр)
- спокойно отладить
- а в OLE ее вызвать. Не знаю точно, но думаю так сойдет: Рез = БазаОле.ПолучитьКакойТоРезультат("Мое");
Следуя Вашему совету, результат остался тем же. Может быть есть еще какие-нибудь варианты?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!