Имя: Пароль:
1C
1C 7.7
v7: Помогите новичку.
0 tuno4er
 
28.09.12
12:33
Ит2=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит2.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит2.ИспользоватьСубконто(ВидыСубконто.БанковскиеСчета,,1,);
   Ит2.ВыполнитьЗапрос(НачДата, КонДата, "31" ,,,3,"День",("С"));
   Ит2.ВыбратьПериоды();
   Ит3=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит3.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит3.ИспользоватьСубконто(ВидыСубконто.Касса,,1);
   Ит3.ВыполнитьЗапрос(НачДата, КонДата, "30" ,,,3,"День",("С"));
   Ит3.ВыбратьПериоды();
   Если ((тз.Код = "1692")) тогда

Пока тз.ПолучитьСтроку() = 1 Цикл
ДатаД = НачДата;
   Пока ДатаД <= КонДата Цикл
Если ((тз.Код = "1692")) тогда
           Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                   СНД = ит2.СНД("С") + ит3.СНД("С");
                   тз.УстановитьЗначение(Строчка,"Сумма", СНД);            
                   Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                   БылВывод = 1;
           Иначе
                   БылВывод = 0;
           КонецЕсли;  
           КонецЕсли;    
           Если (тз.Код = "1890") Тогда
           Если ((Ит2.ПолучитьПериод(,ДатаД) = 1)  и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                   СКД = ит2.СКД("С") + ит3.СКД("С");
                   тз.УстановитьЗначение(Строчка,"Сумма", СКД);
                   Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");                
                   БылВывод = 1;
           Иначе
                   БылВывод = 0;
           КонецЕсли;
           КонецЕсли;
КонецЦикла;
КонецЦикла;
1 mikecool
 
28.09.12
12:33
отформатируй код
с тебя 300р
2 mikecool
 
28.09.12
12:34
и в8 убрал, еще 300р
3 tuno4er
 
28.09.12
12:34
Где я напортачил, у меня почему-то СНД и СДК вытягивает какой-то бред.
Я так понял, что он мне вытягивает, СНД и СНК, только в том случае если были обороты за день, а мне надо что бы он в любом случае вытягивал мне СНД и СНК.
Что в коде не так?
4 tuno4er
 
28.09.12
12:36
Ит2=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит2.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит2.ИспользоватьСубконто(ВидыСубконто.БанковскиеСчета,,1,);
   Ит2.ВыполнитьЗапрос(НачДата, КонДата, "31" ,,,3,"День",("С"));
   Ит2.ВыбратьПериоды();
   Ит3=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит3.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит3.ИспользоватьСубконто(ВидыСубконто.Касса,,1);
   Ит3.ВыполнитьЗапрос(НачДата, КонДата, "30" ,,,3,"День",("С"));
   Ит3.ВыбратьПериоды();
   Если ((тз.Код = "1692")) тогда

   Пока тз.ПолучитьСтроку() = 1 Цикл
       ДатаД = НачДата;
           Пока ДатаД <= КонДата Цикл
               Если ((тз.Код = "1692")) тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СНД = ит2.СНД("С") + ит3.СНД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СНД);            
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;  
               КонецЕсли;    
               Если (тз.Код = "1890") Тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1)  и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СКД = ит2.СКД("С") + ит3.СКД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СКД);
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");                
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;
   КонецЦикла;
5 tuno4er
 
28.09.12
12:36
Как-то так.
6 tuno4er
 
28.09.12
12:37
Ит2=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит2.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит2.ИспользоватьСубконто(ВидыСубконто.БанковскиеСчета,,1,);
   Ит2.ВыполнитьЗапрос(НачДата, КонДата, "31" ,,,3,"День",("С"));
   Ит2.ВыбратьПериоды();
   Ит3=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит3.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит3.ИспользоватьСубконто(ВидыСубконто.Касса,,1);
   Ит3.ВыполнитьЗапрос(НачДата, КонДата, "30" ,,,3,"День",("С"));
   Ит3.ВыбратьПериоды();
   
   Пока тз.ПолучитьСтроку() = 1 Цикл
       ДатаД = НачДата;
           Пока ДатаД <= КонДата Цикл
               Если ((тз.Код = "1692")) тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СНД = ит2.СНД("С") + ит3.СНД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СНД);            
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;  
               КонецЕсли;    
               Если (тз.Код = "1890") Тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1)  и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СКД = ит2.СКД("С") + ит3.СКД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СКД);
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");                
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;
   КонецЦикла;
7 tuno4er
 
28.09.12
12:37
Вроде поравнял =)
8 1Сергей
 
28.09.12
12:39
а нельзя было одним запросом обойтись?
9 tuno4er
 
28.09.12
12:40
(8) я пытался, эффект тот же.
10 1Сергей
 
28.09.12
12:41
Строчка откуда взялась?
11 tuno4er
 
28.09.12
12:41
(8) Почему-то мне выдаёт, СНД и СКД только в том случае, если были обороты по счету на этот день. Не могу понять почему =/
12 tuno4er
 
28.09.12
12:42
(8) Строчка = тз.НомерСтроки;
13 1Сергей
 
28.09.12
12:42
ты вообще в курсе, что ты в одни и то же место СКД и СНД запихиваешь?
14 tuno4er
 
28.09.12
12:42
(10) Перед циклом даты
15 1Сергей
 
28.09.12
12:43
(14) Не вижу ©
16 tuno4er
 
28.09.12
12:44
(13) не в одно и тоже, у меня циклом строки перебираются, и при каждом попадании в эту строку, на новую дату он мне запихивает новое значение и выводит в таблицу это значение, на эту дату.
17 tuno4er
 
28.09.12
12:45
(15) Ит2=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит2.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит2.ИспользоватьСубконто(ВидыСубконто.БанковскиеСчета,,1,);
   Ит2.ВыполнитьЗапрос(НачДата, КонДата, "31" ,,,3,"День",("С"));
   Ит2.ВыбратьПериоды();
   Ит3=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит3.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит3.ИспользоватьСубконто(ВидыСубконто.Касса,,1);
   Ит3.ВыполнитьЗапрос(НачДата, КонДата, "30" ,,,3,"День",("С"));
   Ит3.ВыбратьПериоды();
   
   Пока тз.ПолучитьСтроку() = 1 Цикл
       Строчка = тз.НомерСтроки;
       ДатаД = НачДата;
           Пока ДатаД <= КонДата Цикл
               Если ((тз.Код = "1692")) тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СНД = ит2.СНД("С") + ит3.СНД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СНД);            
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;  
               КонецЕсли;    
               Если (тз.Код = "1890") Тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1)  и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СКД = ит2.СКД("С") + ит3.СКД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СКД);
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");                
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;
   КонецЦикла;
18 tuno4er
 
28.09.12
12:45
Ит2=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит2.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит2.ИспользоватьСубконто(ВидыСубконто.БанковскиеСчета,,1,);
   Ит2.ВыполнитьЗапрос(НачДата, КонДата, "31" ,,,3,"День",("С"));
   Ит2.ВыбратьПериоды();
   Ит3=СоздатьОбъект("БухгалтерскиеИтоги");
   Ит3.ИспользоватьПланСчетов(Константа.ПланСчетов_Бухгалтерия);
   Ит3.ИспользоватьСубконто(ВидыСубконто.Касса,,1);
   Ит3.ВыполнитьЗапрос(НачДата, КонДата, "30" ,,,3,"День",("С"));
   Ит3.ВыбратьПериоды();
   
   Пока тз.ПолучитьСтроку() = 1 Цикл
       Строчка = тз.НомерСтроки;
       ДатаД = НачДата;
           Пока ДатаД <= КонДата Цикл
               Если ((тз.Код = "1692")) тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СНД = ит2.СНД("С") + ит3.СНД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СНД);            
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;  
               КонецЕсли;    
               Если (тз.Код = "1890") Тогда
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1)  и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СКД = ит2.СКД("С") + ит3.СКД("С");
                       тз.УстановитьЗначение(Строчка,"Сумма", СКД);
                       Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");                
                       БылВывод = 1;
                   Иначе
                           БылВывод = 0;
                   КонецЕсли;
               КонецЕсли;
           КонецЦикла;
   КонецЦикла;
19 tuno4er
 
28.09.12
12:46
(15) поправил.
20 1Сергей
 
28.09.12
12:49
(19) в Макете там всё нормально? в "Уровень_"+ тз.Уровень + "|Дата" в расшифровке СКД и СНД?
21 1Сергей
 
28.09.12
12:50
или тебя сейчас только ТЗ интересует?
22 chief accountant
 
28.09.12
12:51
(18) два запроса нах не нужны
23 tuno4er
 
28.09.12
12:51
(20) да, там всё нормлаьно, всё формируется. Проблема только в том, что СНД и СКД выбирается только в том случае если были обороты за день, по запросу. А если не было, то выбирается какая-то чушь петровна. =/
24 tuno4er
 
28.09.12
12:53
(22) А как это можно реализовать? =/ я уже одним запросом пытался эффект тот же, точнее хуже. Он берёт СНД и СКД только по одному счету.
25 chief accountant
 
28.09.12
12:53
(24) плохо пытался
26 ЧеловекДуши
 
28.09.12
12:53
"Гоуно код детектит" (с)
27 1Сергей
 
28.09.12
12:54
(26) да, ладно. любой код гвно для другого программиста
28 tuno4er
 
28.09.12
12:55
(25) можешь хотя бы пример кода скинуть, я посмотрю, в каком именно моменте у меня руки из ж... =/
29 chief accountant
 
28.09.12
12:55
(27) Этот реально оно
30 chief accountant
 
28.09.12
12:56
(28) смотри типовые там все есть
31 tuno4er
 
28.09.12
12:56
(30) это где? =/
32 tuno4er
 
28.09.12
12:57
(26) Ты еще не видел мою первую версию этого кода. =)
33 chief accountant
 
28.09.12
13:00
(32) по ходу косяк в этом
ДатаД = НачДата;
34 1Сергей
 
28.09.12
13:00
Ит2.ВыполнитьЗапрос(НачДата, КонДата, "30,31" ,,,3,"День",("С"));
   Ит2.ВыбратьПериоды();
   ...
   Ит2.ПолучитьПериод(,ДатаД);
   ...
   Ит2.ВыбратьСчета(...
   ...
35 tuno4er
 
28.09.12
13:01
(33) Я не об этом. с этим я разобрался =)
36 chief accountant
 
28.09.12
13:03
(35) Продолжай эксперимент
37 1Сергей
 
28.09.12
13:03
(33) это правильно
38 1Сергей
 
28.09.12
13:05
(37)+ там где-то есть ДатаД++, только он не всё показывает, партизан :)
39 1Сергей
 
28.09.12
13:11
кажется, я понял в чем косяк
//                    Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) и (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
//                        СНД = ит2.СНД("С") + ит3.СНД("С");
                   СНД = 0;
                   Если ((Ит2.ПолучитьПериод(,ДатаД) = 1) Тогда
                       СНД = СНД + ит2.СНД("С");
                   КонецЕсли;
                   Если (Ит3.ПолучитьПериод(,ДатаД) = 1)) Тогда  
                       СНД = СНД + ит3.СНД("С");
                   КонецЕсли;
40 tuno4er
 
28.09.12
13:20
(39) Вообще ничего не выбирает =/
41 tuno4er
 
28.09.12
13:21
Если ((тз.Код = "1692")) тогда
               СНД = 0;
                   Если (Ит2.ПолучитьПериод(,ДатаД) = 1) Тогда
                       СНД = СНД + ит2.СНД("С");
                   КонецЕсли;
                   Если (Ит3.ПолучитьПериод(,ДатаД) = 1) Тогда  
                       СНД = СНД + ит3.СНД("С");
                   КонецЕсли;
                   тз.УстановитьЗначение(Строчка,"Сумма", СНД);
               
                   Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                   БылВывод = 1;
           КонецЕсли;

   Если (тз.Код = "1890") Тогда
               СКД = 0;
                   Если (Ит2.ПолучитьПериод(,ДатаД) = 1) Тогда
                       СКД = СКД + ит2.СКД("С");
                   КонецЕсли;
                   Если (Ит3.ПолучитьПериод(,ДатаД) = 1) Тогда  
                       СКД = СКД + ит3.СКД("С");
                   КонецЕсли;
                   тз.УстановитьЗначение(Строчка,"Сумма", СКД);
               
                   Таб.ПрисоединитьСекцию("Уровень_"+ тз.Уровень + "|Дата");
                   БылВывод = 1;
           КонецЕсли;
42 1Сергей
 
28.09.12
13:24
(40) что-то не верится. см (18)+(39)
43 chief accountant
 
28.09.12
14:43
(37) по коду это фуйня какая-то, в (38) не верю
44 1Сергей
 
28.09.12
14:55
(43) предыдущие его ветки почитай
45 chief accountant
 
28.09.12
15:46
(44) лениво
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший