Имя: Пароль:
1C
1C 7.7
v7: Не работает расчет в режиме ВыполнитьЗапрос()
0 IrinaBrik
 
22.09.11
11:00
Добрых суток!

Суть моей проблемы:

БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
БИ.ВключатьСубсчета(1,0);  
БИ.ВыполнитьЗапрос(НачДата, КонДата, "41.1, 60.1, 10, 90",,,1,,1);
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто(1) = 1 Цикл
   БИ.ВыбратьСубконто(2);
   Пока БИ.ПолучитьСубконто(2)=1 Цикл
       Сообщить(БИ.ОБ("41.1", "60.1"));
   КонецЦикла;
КонецЦикла;


1. ВЫДАЕТ ОШИБКУ "Слишком много параметров передано при вызове функции/процедуры объекта" НА Сообщить(БИ.ОБ("41", "60")), хотя кол-во параметров в соответствии с документацией. Почему?
если делать обычный расчет, без запроса - все ОК                                    
2. Мне кажется, что еще может не считать из-за того, что в 41.1 счете есть субконто "Номенклатура", а в 60.1 его нет. И наоборот: в 60.1 есть субконто "Контрагенты", а 41.1 его нет.

Как быть?
1 viktor_vv
 
22.09.11
11:03
БИ.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты);
2 viktor_vv
 
22.09.11
11:04
И это. В режиме запроса другое обращение к рультатам. Просто ДО() или КО().
3 viktor_vv
 
22.09.11
11:05
И если только обороты нужны, то читай про параметры ВыполнитьЗапрос.
4 zak555
 
22.09.11
11:09
пол : мужской

странно
5 zak555
 
22.09.11
11:09
что нужно получить ?
6 chief accountant
 
22.09.11
11:11
(5) обороты 41-60
7 zak555
 
22.09.11
11:12
(6) у неё ещё есть 90 счёт
вот и спросил - на кой ?
8 chief accountant
 
22.09.11
11:14
(7) женская логика для меня не постижима
9 IrinaBrik
 
22.09.11
11:18
>пол : мужской
я не заходила в настройки профиля)

>Просто ДО() или КО()
не работает - пишет, что мало параметров.

>что нужно получить ?
мне нужен отчет с градацией сперва по контрагентам, а по каждому контрагенту еще все номенклатуры. у каждой номенклатуры необходимо рассчитать оборот между счетами
10 IrinaBrik
 
22.09.11
11:21
да, и еще обороты 90-41
11 zak555
 
22.09.11
11:23
(9) срочно менять https://1cers.ru/users.php?action=show&id=76806&mode=edit , фотки выставлять
12 zak555
 
22.09.11
11:23
(10) хочешь получить отчёт шахматку ?
13 IrinaBrik
 
22.09.11
11:27
нет, не шахматку. нужен отчет по движению ТМЦ
14 zak555
 
22.09.11
11:30
(13) ну ты хоть нарисуй что хочешь
15 IrinaBrik
 
22.09.11
11:37
вот, набросала

http://i.imgur.com/IBeIg.png
16 zak555
 
22.09.11
11:41
(15) это фигня
17 IrinaBrik
 
22.09.11
11:42
объясните
18 chief accountant
 
22.09.11
11:45
Если КО()<>0 Тогда
Получено=ДО();
Себест=КО();
КонецЕсли;
19 IrinaBrik
 
22.09.11
11:48
(18) а если у 41 счета будут еще проводки, помимо 90 и 60?
20 chief accountant
 
22.09.11
11:49
(19) Тык не учитывай их в запросе
21 zak555
 
22.09.11
11:54
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
БИ.ВключатьСубсчета(-1,-1);  
БИ.ВыполнитьЗапрос(НачДата, КонДата, "41.1", "60.1, 10",,2,,1);
БИ.ВыбратьСубконто(1);
Пока БИ.ПолучитьСубконто(1) = 1 Цикл
    Получено = БИ.КорКО(1);
    Списано  = БИ.КорДО(1);

КонецЦила;
22 IrinaBrik
 
22.09.11
11:57
ребята, оттакенное спасибо!
23 1Сергей
 
22.09.11
11:57
(22) фотку добавь
24 chief accountant
 
22.09.11
11:58
(21) А где 90?
25 chief accountant
 
22.09.11
11:59
(22) Рано радуешься :)
26 zak555
 
22.09.11
12:01
(24) чётр
тогда нужно добавить но поставить условие на корДо только =)
27 IrinaBrik
 
22.09.11
12:04
(21) а так точно будет по контрагентам отбирать?
28 chief accountant
 
22.09.11
12:05
(27) В (21) рыба, а не готовый запрос
29 zak555
 
22.09.11
12:06
(27) в (15) контрагентов нет
30 chief accountant
 
22.09.11
12:07
(29) Есть
31 IrinaBrik
 
22.09.11
12:08
да, там код контрагента есть) ну и отбор по ним го
32 zak555
 
22.09.11
12:09
что такое КОД контрагента СМГ ?
33 chief accountant
 
22.09.11
12:14
(32) СпецМед группа :)
34 IrinaBrik
 
22.09.11
12:14
вот что еще:
ваши решения подходят под данную задачу, но мне необходимо сделать отчет с более сложными условиями. То есть не будет получено/списано ОДНОГО счета, а несколько столбцов с примерно такими условиями:

1    Д10.8+16.1  К60.1
2    Д20,23,25 К 10.8
3    Д26 К 10.8
4    Д91 К 10.8
5    Д44 К 10.8

как быть тогда?

и можно ли в запросе делать несколько вложенных субконто? пока я вижу только иерархию условий Субконто-корСубконто
35 chief accountant
 
22.09.11
12:15
(34) Нее, такое точно без фотки не взлетит
36 zak555
 
22.09.11
12:15
(34) запрос по оборотам по 10.8
37 zak555
 
22.09.11
12:16
(35) стоит уже
38 zak555
 
22.09.11
12:16
+ какая аналитика нужна ?
39 chief accountant
 
22.09.11
12:17
(37) Угумс
40 chief accountant
 
22.09.11
12:20
(34) Проверять коррсчета типа:
Если Ит.Корсчет=СчетПоКоду("00") Тогда
41 IrinaBrik
 
22.09.11
12:23
нужно разбиение 10 счета по группе материалов. и контрагенты, конечно)

(36) примерно так же думаю
42 zak555
 
22.09.11
12:23
(40) зачем ?
43 zak555
 
22.09.11
12:27
тогда так (34) :

БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,,1,0);
БИ.ИспользоватьКорСубконто(,,1,0);

БИ.ВключатьСубсчета(-1,0);  
БИ.ВыполнитьЗапрос(НачДата, КонДата, "10.8
", "60.1,20,23,25,26,44,91",,2,,1);
44 chief accountant
 
22.09.11
12:29
(43) Я так понял, что в (34) 1-5 это столбцы
45 zak555
 
22.09.11
12:31
chief accountant так она не хочет нарисовать
я играю в телепата пока
46 chief accountant
 
22.09.11
12:32
(45) не понял тогда (42)
47 zak555
 
22.09.11
12:32
(46) так лучше через ПолучитьКорСчет же
48 IrinaBrik
 
22.09.11
12:36
49 chief accountant
 
22.09.11
12:39
(47) Ну да
Ит.ВыбратьКорСчета();  
Пока Ит.ПолучитьКорСчет()=1 Цикл  
Если Ит.Корсчет=СчетПоКоду("00") Тогда
...
50 zak555
 
22.09.11
12:39
(49)

вот это имел ввиду :


ПолучитьКорСчет(,,СчетПоКоду("00") )
51 zak555
 
22.09.11
12:40
(48) уууу
а теперь ответь на (32)
52 chief accountant
 
22.09.11
12:40
(50) Я обычно как в (49) пишу. Привычка :)
53 chief accountant
 
22.09.11
12:41
(51) Ответ же был :)))
54 zak555
 
22.09.11
12:44
здесь фоткой уже не отделаешься =)
55 IrinaBrik
 
22.09.11
12:44
ну-ка!

код по кадастру это
56 chief accountant
 
22.09.11
12:51
(55) Да это-то не беда

Ит.ВыбратьКорСубконто(1);              
Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл
Если ТипЗначенияСтр(Ит.КорСубконто(1)) = "Справочник" Тогда
Если Ит.КорСубконто(1)<>ВыбКотр Тогда
Продолжить;
КонецЕсли;
57 zak555
 
22.09.11
13:18
застопарилась ?
58 IrinaBrik
 
22.09.11
13:43
нет, сейчас у меня цейтнот, завтра с утра займусь отчетами
59 zak555
 
22.09.11
13:44
(58) и давай запрос напишем на 8ке
60 IrinaBrik
 
23.09.11
12:23
снова-здорово) я об этом отчете http://i.imgur.com/qKVUv.png

для группировки по группам материалов пишу, для фильтрации:
БИ.ИспользоватьКорСубконто(ВидыСубконто.Материалы,,,1);
не группирует!

и опять не работает функция БИ.ОБ("20", "10.1") например
симптомы все те же - пишет что много параметров.
61 chief accountant
 
23.09.11
12:33
(60) Тебе же уже было сказано БИ.ОБ() не будет работать в запросе
62 Franchiser
 
гуру
23.09.11
12:35
(60) КорДО(), КорКО() используй
63 Franchiser
 
гуру
23.09.11
12:39
(60) код в студию, какое отношение этот код имеет к фильтрации?
64 IrinaBrik
 
10.10.11
08:10
снова здравствуйте)

с этим отчетом такая накладка
вот код:
   БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
   БИ.ИспользоватьКорСубконто(ВидыСубконто.Номенклатура);

   БИ.ВключатьСубсчета(1,0);
   БИ.ВыполнитьЗапрос(НачДата,КонДата,"41.1, 60.1, 10, 90",,,2,,1);
   БИ.ВыбратьСубконто(1);
   Пока БИ.ПолучитьСубконто(1)=1 Цикл  
       БИ.ВыбратьКорСубконто(1);
       Пока БИ.ПолучитьКорСубконто(1)=1 Цикл
           Если БИ.КО()<>0 Тогда    
               Получено=БИ.ДО("41.1");
               Себест=БИ.КО("41.1");
           КонецЕсли;
           Таб.ВывестиСекцию("Строка");
       КонецЦикла;
   КонецЦикла;
--------

но в результате выполняется отбор только по первому субконто (контрагенты), хотя отбор должен быть также и по товарам(!). примерно так:
контрагент1    товар1    345.56
контрагент1    товар2    345.56
контрагент1    товар3    345.56
контрагент2    товар1    200.64
контрагент2    товар2    200.64
65 chief accountant
 
10.10.11
08:15
Мда, три недели практически прошло, а воз и ныне там
66 IrinaBrik
 
10.10.11
08:21
командировка)

делаю запрос через КорДО() и КорКО() — в этом  случае идет фильтрация по обоим условиям. но я не уверенна, будут ли получены в этом случае нужные мне результаты. мне надо получить эти два поля:
Д41.1 К60.1 + Д41.1 К10
и
Д90 К 41