Имя: Пароль:
1C
1С v8
БИ Запрос через OLE в ИБ 7.7.
,
0 Zeratul
 
07.12.11
15:54
Все привет! Пишу следующую функцию


Функция ОстаткиМатериалов77(ДатаС,ДатаПо,Материал)
   Ит = База77.CreateObject("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто(База77.ВидыСубконто.Материалы, Материал, 1);
   Ит.ВыполнитьЗапрос(ДатаС, ДатаПо, "10",,, 1,, "СК");
   Ит.ВыбратьСубконто(База77.ВидыСубконто.Материалы);
   Пока Ит.ПолучитьСубконто(База77.ВидыСубконто.Материалы) = 1 Цикл
       ОбработкаПрерыванияПользователя();
   КонецЦикла;
   
   
КонецФункции

выскакивает ошибка
{ВнешняяОбработка.ПодключениеК77.МодульОбъекта(17)}: Ошибка при установке значения атрибута контекста (Материалы)
по причине:
Типы не совпадают (0)


данной функцией смотрю остатки по кол-ву и сумму опеределенного материала в баз 1с 7.7
1 Skylark
 
07.12.11
15:57
И чего?
МодульОбъекта(17) это где? Телепаты должны догадаться, какая это строка?
2 Zeratul
 
07.12.11
15:59
Ит.ИспользоватьСубконто(База77.ВидыСубконто.Материалы, Материал, 1);
вот на этой строке ругается
3 Skylark
 
07.12.11
16:03
Материал
что это? это элемент справочника Материалы в ОЛЕ-базе 7.7?
4 GreyK
 
07.12.11
16:05
(0) Не парься, по ОЛЕ передаются только строка, число, дата.
Поменяй истоник и приемник местами, ну если это возможно.
5 Zeratul
 
07.12.11
16:08
Материал - это ComObject, тип справочник материалы в 1с77
(4) поменять не варинат никак.....
6 Zeratul
 
07.12.11
16:19
Ит = База77.CreateObject("БухгалтерскиеИтоги");
   Ит.ИспользоватьСубконто("Материалы", Материал, 1,0);
   Ит.ВыполнитьЗапрос(Формат(ДатаС,"ДЛФ=Д"), Формат(ДатаПо,"ДЛФ=Д"), "10",0,0,1,0,"СК");
   Ит.ВыбратьСубконто("Материалы");
   Пока Ит.ПолучитьСубконто("Материалы") = 1 Цикл
       ОбработкаПрерыванияПользователя();
   КонецЦикла;
   
сделал так и почти заработало
7 Zeratul
 
07.12.11
16:20
теперь на строке

Ит.ВыбратьСубконто("Материалы");
вылетает ошибка

Метод объекта не обнаружен (ВыбратьСубконто)
8 Skylark
 
07.12.11
16:21
(7) а там точно есть чего-нибудь?
9 Skylark
 
07.12.11
16:22
может Ит.ВыполнитьЗапрос ничего не выдает
10 Skylark
 
07.12.11
16:23
попробуй этот кусок кода выполнить в той базе
11 Zeratul
 
07.12.11
16:23
пробовал уже, запрос работает в базе 77
12 Zeratul
 
07.12.11
16:24
Ит = База77.CreateObject("БухгалтерскиеИтоги");
   ВидыСуб = База77.ВидыСубконто.Материалы;
   Ит.ИспользоватьСубконто("Материалы", Материал, 1,0);
   Ит.ВыполнитьЗапрос(Формат(ДатаС,"ДЛФ=Д"), Формат(ДатаПо,"ДЛФ=Д"), "10",0,0,1,0,"СК");
   Ит.ВыбратьСубконто(ВидыСуб);
   Пока Ит.ПолучитьСубконто(ВидыСуб) = 1 Цикл
       ОбработкаПрерыванияПользователя();
   КонецЦикла;





теперь на получитьСубконто() ругается ))))
13 GreyK
 
07.12.11
16:26
(5) Обрисуй задачу. Что, из чего и зачем тебе нужно получить.
Сходу, если скорость не важна, то не отбирай а разворачивай по субконто. А отбор делай в выборке.
14 Kreont
 
07.12.11
16:27
Через ОЛе надо задавать все параметры, даже те что в СП 7-ки пишет "по умолчанию и не обязательно задвать"
15 Skylark
 
07.12.11
16:28
(14) это да, это ценное воспоминание
:-)
16 Смотрящий от 1С
 
07.12.11
16:30
(0) на твою задачу похоже http://lada-it.ru/index.php/-1/64-ole.html
17 Zeratul
 
07.12.11
16:30
Мне нужно получить остатки по конкретному материалу в Базе 77, кол-во и сумму
18 Zeratul
 
07.12.11
16:31
(16) спасибо, очень полезная статья