Имя: Пароль:
1C
1C 7.7
v7: Бухгалтерский запрос
,
0 BarakuzA
 
28.06.12
15:42
Есть вот такой запрос к бух итогам:
БИ.ВыполнитьЗапрос(ВыбНачПериода,ВыбКонПериода,"41.1,43.2",,,1,"День",5);
БИ.ВыбратьПериоды(1);
Пока БИ.ПолучитьПериод()=1 Цикл
   БИ.ВыбратьСубконто(1);
   Пока БИ.ПолучитьСубконто(1)=1 Цикл
       ТЗ.НоваяСтрока();
       ТЗ.День             = БИ.НачДата;
       ТЗ.Номенклатура     = БИ.Субконто(1).Родитель;
       ТЗ.КоличествоКонОст = БИ.СКД("К");
       ТЗ.СуммаРубКонОст   = БИ.СКД("С");
   КонецЦикла;
КонецЦикла;
В результате которого если за день не было оборотов по счету, то Количество и Сумма выводит по нулям, как исправить чтобы выводил при нулевых оборотах???
1 chief accountant
 
28.06.12
15:53
Чтобы выводилось строка с нулевыми оборотами?
2 BarakuzA
 
28.06.12
15:55
(1) - нет, например на 1 число есть оборот по счету и показывает остаток в ТЗ, на 2 число - нет оборота по счету, а остаток есть, но в ТЗ этой даты и остатка нет
3 BarakuzA
 
28.06.12
15:55
да,выводилось строка с нулевыми оборотами
4 Гость2
 
28.06.12
15:59
Проверяй МойДень и БИ.НачДата
А мой день был ранее равен БИ.НачДата + 1
5 chief accountant
 
28.06.12
16:00
(2)(3) Что-то я въехать не могу чего надо-то. Короче кури отчет Журнал-ордер там всё реализовано
6 Гость2
 
28.06.12
16:01
Иесле не равны то добавляй "нулевую" строку и увеличивай МойДень  на 1
7 BarakuzA
 
28.06.12
16:16
(5)ПериодыСНулевымиОборотами - ??? не могу понять откуда это берется
8 chief accountant
 
28.06.12
16:17
(7) чекбокс на форме
9 BarakuzA
 
28.06.12
16:20
(8) - эт я понял, смысл в тексте отчета
Ит.ВыполнитьЗапрос(Дата1, Дата2, Счет,,, 3, ВидПериода)


Ит.ВыбратьПериоды(ПериодыСНулевымиОборотами);
10 пипец
 
28.06.12
16:24
жесть , синтаксис помошник читать не ?
11 1Сергей
 
28.06.12
16:26
(10) его ещё купить надо ;)
12 BarakuzA
 
28.06.12
16:26
(10) - не в этом смысле. Я ПериодыСНулевымиОборотами - где используется еще,кроме этих двух строк
13 1Сергей
 
28.06.12
16:27
(12) ПериодыСНулевымиОборотами  - это флаг, устанавливается на морде
14 BarakuzA
 
28.06.12
16:35
(13) - установил я флаг, в самом отчете где он и на что влияет???
15 1Сергей
 
28.06.12
16:36
ВыбратьПериоды(<?>,,,)
SelectPeriods(<?>,,,)
Синтаксис:
ВыбратьПериоды(<ФлагВсе>,<ФлагДК>,<Номер>,<РазвСальдо>)
Назначение:
Открывает выборку периодов.
Возвращает  1 - если действие выполнено и в выборке есть хотя бы один период; 0 - если действие не выполнено или в выборке нет ни одного периода.
Параметры:

!!!!!!!
<ФлагВсе> - число: 0 - отбирать те счета, которые имели итоги на этом уровне обхода итогов запроса; 1 - включить в выборку все счета, которые имели итоги в данном запросе; -1, -2 : включить в выборку счета, которые имели итоги в группировке n-го вышестоящего уровня. По умолчанию - 0.
!!!!!!!
16 chief accountant
 
28.06.12
16:36
(14) Короче завязывай тупить если надо пустые строки, то
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто(ВидыСубконто.Материалы);
БИ.ВыполнитьЗапрос('01/01/2012','01/06/2012',"10",,,1,"День");
БИ.ВыбратьПериоды(1);
Пока БИ.ПолучитьПериод()=1 Цикл
   БИ.ВыбратьСубконто(1,1);
   Пока БИ.ПолучитьСубконто(1)=1 Цикл
       Сообщить(БИ.НачДата);
       Сообщить(БИ.СКД("К"));
       Сообщить(БИ.СКД("С"));
   КонецЦикла;
КонецЦикла;
17 BarakuzA
 
28.06.12
16:40
Все ОТлично!!!!!!!!!! СпасибоБОльшое!!!!!!!!!!!!!
18 1Сергей
 
28.06.12
16:44
о, чудо...
19 chief accountant
 
28.06.12
16:45
акуеть
20 BarakuzA
 
28.06.12
16:47
Всегото навсего надо было добавить 1!
21 chief accountant
 
28.06.12
16:49
(20) Вего-навсего надо было написать в сабже два слова: не работает. Ответ получил бы в (1)
22 BarakuzA
 
29.06.12
12:49
Выводится с нулевым оборотом строка, только остаток показывает 0, хотя на самом деле есть остаток???
23 chief accountant
 
29.06.12
13:16
(22) в (16) всё выводится проверено на деме
24 BarakuzA
 
29.06.12
13:29
если на складе остаток есть, отчет выводит 0?
25 BarakuzA
 
29.06.12
13:29
выложи что информационная строка выводит
26 chief accountant
 
29.06.12
13:36
...
27.05.2012
282
7050
27.05.2012
25
3750
28.05.2012
46
4600
28.05.2012
282
7050
28.05.2012
25
3750
29.05.2012
46
4600
29.05.2012
282
7050
29.05.2012
25
3750
30.05.2012
46
4600
30.05.2012
282
7050
30.05.2012
25
3750
31.05.2012
46
4600
31.05.2012
282
7050
31.05.2012
25
3750
01.06.2012
46
4600
01.06.2012
282
7050
01.06.2012
25
3750
27 BarakuzA
 
29.06.12
13:42
у тебя каждый день меняется оборот, возьми ситуацию когда за день нет оборота.
28 chief accountant
 
29.06.12
13:51
(27) Раскрой глаза, ничего не меняется, за июнь оборотов небыло. Там три позиции материалов
29 BarakuzA
 
29.06.12
13:55
(28)-извини,повнимательнее посмотрел. тогда я ничего не понимаю. почему у меня не работает...
30 BarakuzA
 
29.06.12
13:56
БИ=СоздатьОбъект("БухгалтерскиеИтоги");      
   Если ВыбТовар.Выбран()=1 Тогда
       БИ.ИспользоватьСубконто(ВидыСубконто.ГотовПрод,выбТовар,1);
   Иначе    
       БИ.ИспользоватьСубконто(ВидыСубконто.ГотовПрод);
   КонецЕсли;                                  
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Номенклатура");
   ТЗ.НоваяКолонка("День","Дата");
   ТЗ.НоваяКолонка("КоличествоКонОст","Число");
   ТЗ.НоваяКолонка("СуммаРубКонОст","Число");
   
   БИ.ВыполнитьЗапрос(ВыбНачПериода,ВыбКонПериода,"41.1,43.2",,,1,"День");
   
   //БИ.ВыбратьСубконто();
   //Пока БИ.ПолучитьСубконто()=1 Цикл
   //    БИ.ВыбратьПериоды(ПериодыСНулевымиОборотами);
   //    Пока БИ.ПолучитьПериод()=1 Цикл
   //        ТЗ.НоваяСтрока();
   //        ТЗ.День             = БИ.НачДата;
   //        Если ПоГруппам=1 Тогда
   //            ТЗ.Номенклатура     = БИ.Субконто().Родитель;
   //        Иначе
   //            ТЗ.Номенклатура     = БИ.Субконто();
   //        КонецЕсли;    
   //        ТЗ.КоличествоКонОст = БИ.СКД("К");
   //        ТЗ.СуммаРубКонОст   = БИ.СКД("С");
   //    КонецЦикла;
   //КонецЦикла;
           
   
   БИ.ВыбратьПериоды(1);
   Пока БИ.ПолучитьПериод()=1 Цикл
       БИ.ВыбратьСубконто(1,1);
       Пока БИ.ПолучитьСубконто(1)=1 Цикл
           ТЗ.НоваяСтрока();
           ТЗ.День             = БИ.НачДата;
           Если ПоГруппам=1 Тогда
               ТЗ.Номенклатура     = БИ.Субконто(1).Родитель;
           Иначе
               ТЗ.Номенклатура     = БИ.Субконто(1);
           КонецЕсли;    
           ТЗ.КоличествоКонОст = БИ.СКД("К");
           ТЗ.СуммаРубКонОст   = БИ.СКД("С");
       КонецЦикла;
   КонецЦикла;
31 chief accountant
 
29.06.12
14:18
БИ=СоздатьОбъект("БухгалтерскиеИтоги");      
   //Если ВыбТовар.Выбран()=1 Тогда
   //    БИ.ИспользоватьСубконто(ВидыСубконто.ГотовПрод,выбТовар,1);
   //Иначе    
       БИ.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
   //КонецЕсли;                                  
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Номенклатура");
   ТЗ.НоваяКолонка("День","Дата");
   ТЗ.НоваяКолонка("КоличествоКонОст","Число");
   ТЗ.НоваяКолонка("СуммаРубКонОст","Число");
   
   БИ.ВыполнитьЗапрос('01/01/2012','01/06/2012',"41.1,43",,,1,"День");
   
   БИ.ВыбратьПериоды(1);
   Пока БИ.ПолучитьПериод()=1 Цикл
       БИ.ВыбратьСубконто(1,1);
       Пока БИ.ПолучитьСубконто(1)=1 Цикл
           ТЗ.НоваяСтрока();
           ТЗ.День             = БИ.НачДата;
           //Если ПоГруппам=1 Тогда
           //    ТЗ.Номенклатура     = БИ.Субконто(1).Родитель;
           //Иначе
               ТЗ.Номенклатура     = БИ.Субконто(1);
           //КонецЕсли;    
           ТЗ.КоличествоКонОст = БИ.СКД("К");
           ТЗ.СуммаРубКонОст   = БИ.СКД("С");
           Сообщить(БИ.НачДата);
           Сообщить(БИ.Субконто(1));
           Сообщить(БИ.СКД("К"));
           Сообщить(БИ.СКД("С"));
       КонецЦикла;
   КонецЦикла;




29.05.2012
Пальто женское
3
6000
29.05.2012
Пальто женское  GRE
6
54340.72
29.05.2012
Пальто имп. мужское
23
76825.88
29.05.2012
Пальто мужское
5
15000
29.05.2012
Пальто мужское (собств.)
18
55177.94
29.05.2012
Пальто мужское черное GRE
10
76578.28
29.05.2012
Плащ
3
3000
30.05.2012
Пальто женское
3
6000
30.05.2012
Пальто женское  GRE
6
54340.72
30.05.2012
Пальто имп. мужское
23
76825.88
30.05.2012
Пальто мужское
5
15000
30.05.2012
Пальто мужское (собств.)
18
55177.94
30.05.2012
Пальто мужское черное GRE
10
76578.28
30.05.2012
Плащ
3
3000
31.05.2012
Пальто женское
3
6000
31.05.2012
Пальто женское  GRE
6
54340.72
31.05.2012
Пальто имп. мужское
23
76825.88
31.05.2012
Пальто мужское
5
15000
31.05.2012
Пальто мужское (собств.)
18
55177.94
31.05.2012
Пальто мужское черное GRE
10
76578.28
31.05.2012
Плащ
3
3000
01.06.2012
Пальто женское
3
6000
01.06.2012
Пальто женское  GRE
6
54340.72
01.06.2012
Пальто имп. мужское
23
76825.88
01.06.2012
Пальто мужское
5
15000
01.06.2012
Пальто мужское (собств.)
18
55177.94
01.06.2012
Пальто мужское черное GRE
10
76578.28
01.06.2012
Плащ
3
3000


Всё работает, проверено на деме
32 BarakuzA
 
29.06.12
14:37
а выбор номенклатуры почему убрал?
33 chief accountant
 
29.06.12
15:24
(32) лень реквизит на форме делать
34 BarakuzA
 
29.06.12
15:41
(33)-попробуй период задать несколько месяцев.
35 BarakuzA
 
29.06.12
15:42
Если период задаю один месяц,то все ок! а если два или три - то идет лажа.
36 BarakuzA
 
29.06.12
15:44
и несколько одновременно позиций в группе
37 chief accountant
 
29.06.12
16:04
(34)(35) Раскрой глаза: БИ.ВыполнитьЗапрос('01/01/2012','01/06/2012'
38 BarakuzA
 
02.07.12
13:21
(37) - Нашел Причину, на sql не формирует как надо, а на dbf версии все ок.
39 chief accountant
 
02.07.12
13:31
(38) версия движка?
40 BarakuzA
 
02.07.12
13:43
27, sql 2000
41 chief accountant
 
02.07.12
13:53
(40) Угумс, проверил на рабочей базе, не фурычит.
42 chief accountant
 
02.07.12
14:15
41+ а вот так фурычит :)
   БИ.ВыбратьПериоды(1);
   Пока БИ.ПолучитьПериод()=1 Цикл
       БИ.ВыбратьСубконто(1,1);
       Пока БИ.ПолучитьСубконто(1)=1 Цикл
   БИ.ВыбратьСчета(1);
   Пока БИ.ПолучитьСчет()=1 Цикл
           ТЗ.НоваяСтрока();
           ТЗ.День             = БИ.НачДата;
           //Если ПоГруппам=1 Тогда
           //    ТЗ.Номенклатура     = БИ.Субконто(1).Родитель;
           //Иначе
               ТЗ.Номенклатура     = БИ.Субконто(1);
           //КонецЕсли;    
           ТЗ.КоличествоКонОст = БИ.СКД("К");
           ТЗ.СуммаРубКонОст   = БИ.СКД("С");
           Сообщить(БИ.НачДата);
           Сообщить(БИ.Субконто(1));
           Сообщить(БИ.СКД("К"));
           Сообщить(БИ.СКД("С"));
       КонецЦикла;
   КонецЦикла;
   КонецЦикла;
43 BarakuzA
 
02.07.12
15:46
(42) - и у меня все отлично!!!