|
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) лениво
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |