Вход | Регистрация

1С:Предприятие ::

Метки:OLE и COM

OLE и бухгалтерские итоги

Я
   Листвиница
14.07.04 - 06:54
хочу получить итоги через OLE, но ни как не получается, может кто подскажет где ошибка?
БазаОле=СоздатьОбъект("V77.Application");
ИтогиOLE = БазаОле.CreateObject("БухгалтерскиеИтоги");
ИтогиOLE.ИспользоватьСубконто(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы,,,1);
ИтогиOLE.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода,"91.1.2",,,3,,);
ИтогиOLE.ВыбратьСубконто(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы);
Пока ИтогиOLE.ПолучитьСубконто(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы) = 1 Цикл

***

КонецЦикла
 
 
   Valery
 
1 - 14.07.04 - 08:42
Здесь я думаю необходимо сделать так:
ИтогиOLE.EvalExpr(ИспользоватьСубконто(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы,,,1)); 
и т.д.
   Листвиница
2 - 14.07.04 - 09:05
ИтогиOLE.EvalExpr(ИспользоватьСубконто<<?>>(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы,,,1));

err: Функция не обнаружена (ИспользоватьСубконто)
   Valery
 
3 - 14.07.04 - 09:10
Виноват.
БазаОле.EvalExpr(ИтогиOLE.ИспользоватьСубконто(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы,,,1));
Вот так.
   Листвиница
4 - 14.07.04 - 09:15
опять еррор, такой я ещё не разу не видел :)
БазаОле.EvalExpr(ИтогиOLE.ИспользоватьСубконто(БазаОле.ВидыСубконто.ПрочиеДоходыИРасходы,,,1));
1С:Предприятие:
   CzujMao
5 - 14.07.04 - 09:29
Пример 100% рабочего кода - получение итогов по всем субсчетам некоторго счёта
лИт=мБаза.CreateObject("БухгалтерскиеИтоги");
лСчет=мБаза.CreateObject("Счет");
лСчет.НайтиПоКоду(КодНужногоМнеСчета);
Для К=1 По лСчет.КоличествоСубконто() Цикл
 лИт.ИспользоватьСубконто(лСчет.ВидСубконто(К),,1,0);
КонецЦикла;
лИт.ВключатьСубсчета(1);
Если лИт.ВыполнитьЗапрос(лДатаДок,лДатаДок,лСчет)=0 Тогда
 Предупреждение("Запрос не выполнен!");
 Возврат;
КонецЕсли;
    
лИт.ВыбратьСчета();
Пока лИт.ПолучитьСчет() = 1 Цикл
 Если лИт.Счет.ЭтоГруппа()=1 Тогда
  Продолжить;
 КонецЕсли;
 лКоличествоСубконто=лИт.Счет.КоличествоСубконто();
 лИтПоСчету=мБаза.CreateObject("БухгалтерскиеИтоги");
 Для К=1 По лКоличествоСубконто Цикл
  лИтПоСчету.ИспользоватьСубконто(лИт.Счет.ВидСубконто(К),,1,0);
 КонецЦикла;
 лИтПоСчету.ВключатьСубсчета(0);
 Если лИтПоСчету.ВыполнитьЗапрос(лДатаДок, лДатаДок, лИт.Счет) = 0 Тогда
  Предупреждение("Запрос не выполнен!");
  Возврат;
 КонецЕсли;
 лИтПоСчету.ВыбратьСубконто(1);
 Пока лИтПоСчету.ПолучитьСубконто(1) = 1 Цикл
  Если лКоличествоСубконто=1 Тогда
// Делаем чего надо

  Иначе
   лИтПоСчету.ВыбратьСубконто(2);
   Пока лИтПоСчету.ПолучитьСубконто(3) = 1 Цикл
// ну и так далее


Возможно тебе просто нужно добавить лИт.ВыбратьСчета();
   laeg
 
6 - 14.07.04 - 09:36
Посмотри вот тут ... может поможет
http://1c.realnet.ru/kuban/140662.html
   Листвиница
7 - 14.07.04 - 10:19
а чем отличается ИтOLE = БазаОле.EvalExpr("CreateObject(""БухгалтерскиеИтоги"")") от ИтOLE = БазаОле.CreateObject("БухгалтерскиеИтоги");
   Valery
 
8 - 14.07.04 - 10:20
Я все время забываю.
Создать надо таким чудом.
В предыдущем примере ошибка из-за того, что
ИтогиOLE создан CreateObject("БухгалтерскиеИтоги")
БазаОле.eValExpr(ИтогиOLE=СоздатьОбъект("БухгалтерскиеИтоги"));
   Valery
 
9 - 14.07.04 - 10:21
Все остальное по аналогии.
   Листвиница
10 - 14.07.04 - 10:43
ну вообщем немного разобрался,вот это рабочий вариант
//****ВАРИАНТ № 1*************************

ИтOLE = БазаОле.CreateObject("БухгалтерскиеИтоги");
ОлеВидСубконто=БазаОле.EvalExpr("ВидыСубконто.ПрочиеДоходыИРасходы");
ИтOLE.ИспользоватьСубконто(ОлеВидСубконто,,1,0);
ИтOLE.ВыполнитьЗапрос(НачальнаяДата, КонечнаяДата,"91.1.2",,,3,,);
ИтOLE.ВыбратьСубконто(ОлеВидСубконто);
Пока ИтOLE.ПолучитьСубконто(ОлеВидСубконто) = 1 Цикл
   ***
КонецЦикла;

2Valery
как Вы советуете не получается, может напишете сюда Ваш метод, только полностью
 
 
   Valery
 
11 - 14.07.04 - 11:08
Если код был под рукой, я бы сразу его написал. К сожалению код навряд ли найду, уж года два прошло. Помню только методику.
Смысл такой: В базе ОЛЕ мы получаем доступ только к значениям реквизитов справочников,документов, регистров, а функциям доступа нет. Но для того чтобы получить теже итоги по ОЛЕ базе необходимо воспользоваться функцией расчета итогов. Поэтому здесь и пригождается evalexpr(), которая позволяет получить доступ к таким функциям.


Список тем форума
Рекламное место пустует   Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует