|
v7: БухИтоги по корсубконто | ☑ | ||
---|---|---|---|---|
0
Nik_nik_nik
14.09.12
✎
10:48
|
Хочу получить бух.итоги между счетами с детализацией по корсубконто. Делаю так:
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты); Ит.ИспользоватьКорСубконто(ВидыСубконто.Договоры); Ит.ВключатьСубсчета(1); Ит.ВыполнитьЗапрос(НачДата, КонДата, "41,43",,,2,, "СК"); Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1) = 1 Цикл Себестоимость = ?((Ит.ДО(3) - Ит.КО(3))<>0,(Ит.ДО(1) - Ит.КО(1))/(Ит.ДО(3) - Ит.КО(3)),0); Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2) = 1 Цикл Ит.ВыбратьКорСубконто(1); Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл Если СписокВГО.Принадлежит(Ит.КорСубконто(1)) = 1 Тогда ИдВКСМ = "Н" + Ит.Субконто(1).Код + Ит.Счет + Ит.Субконто(2); НомСтр = ПолучитьПустоеЗначение("Число"); Если ТабЗапасов.НайтиЗначение(ИдВКСМ, НомСтр, "ИдВКСМ") = 0 Тогда Продолжить; Иначе ТабЗапасов.УстановитьЗначение(НомСтр, "ПрКолВГО", Ит.ДО(3) - Ит.КО(3)); ТабЗапасов.УстановитьЗначение(НомСтр, "ПрСуммаВГО", Себестоимость*(Ит.ДО(3) - Ит.КО(3))); КонецЕсли; Ит.ВыбратьКорСубконто(2); Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл ТабКД.НоваяСтрока(); ТабКД.ИдВКСМ = ИдВКСМ; ТабКД.Контрагент = Ит.КорСубконто(1); ТабКД.Договор = Ит.КорСубконто(2); ТабКД.Сумма = Себестоимость*(Ит.ДО(3) - Ит.КО(3)); ///ПОЛУЧАЮ ТУТ ТабКД.Количество = Ит.ДО(3) - Ит.КО(3); /// И ТУТ НЕ ТЕ ИТОГИ ТабКД.Счет = Ит.Счет; КонецЦикла; КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Там где комменты, мне по Ит.ДО(3) и Ит.КО(3) - получаю итоги по субконто(2). Итоги по корсубконто(1) и корсубконто(2) не вычисляются. Почему нет и как сделать так "чтобы да!"? |
|||
1
chief accountant
14.09.12
✎
11:08
|
Корсчета какие у тебя?
|
|||
2
Nik_nik_nik
14.09.12
✎
11:20
|
60
|
|||
3
chief accountant
14.09.12
✎
11:32
|
(2) Сделай так:
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты); Ит.ИспользоватьКорСубконто(ВидыСубконто.Договоры); //Ит.ВключатьСубсчета(1); Ит.ВыполнитьЗапрос('01/01/2012','14/09/2012', "41,43","60",,2); Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1) = 1 Цикл Себестоимость = ?((Ит.ДО(3) - Ит.КО(3))<>0,(Ит.ДО(1) - Ит.КО(1))/(Ит.ДО(3) - Ит.КО(3)),0); Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2) = 1 Цикл Ит.ВыбратьКорСубконто(1); Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл //Если СписокВГО.Принадлежит(Ит.КорСубконто(1)) = 1 Тогда // ИдВКСМ = "Н" + Ит.Субконто(1).Код + Ит.Счет + Ит.Субконто(2); // НомСтр = ПолучитьПустоеЗначение("Число"); // Если ТабЗапасов.НайтиЗначение(ИдВКСМ, НомСтр, "ИдВКСМ") = 0 Тогда // Продолжить; // Иначе // ТабЗапасов.УстановитьЗначение(НомСтр, "ПрКолВГО", Ит.ДО(3) - Ит.КО(3)); // ТабЗапасов.УстановитьЗначение(НомСтр, "ПрСуммаВГО", Себестоимость*(Ит.ДО(3) - Ит.КО(3))); // КонецЕсли; // Ит.ВыбратьКорСубконто(2); Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл // ТабКД.НоваяСтрока(); // ТабКД.ИдВКСМ = ИдВКСМ; // ТабКД.Контрагент = Ит.КорСубконто(1); // ТабКД.Договор = Ит.КорСубконто(2); // ТабКД.Сумма = Себестоимость*(Ит.ДО(3) - Ит.КО(3)); ///ПОЛУЧАЮ ТУТ // // ТабКД.Количество = Ит.ДО(3) - Ит.КО(3); /// И ТУТ НЕ ТЕ ИТОГИ // // ТабКД.Счет = Ит.Счет; Сообщить("ДО "+Ит.ДО(3)); КонецЦикла; //КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
4
chief accountant
14.09.12
✎
11:33
|
работает?
|
|||
5
fedoss
14.09.12
✎
11:56
|
(0) так на 41 субсчета, без ВыбратьСчета() и не должно взлететь
|
|||
6
chief accountant
14.09.12
✎
11:58
|
(5) откуда такие познания?
|
|||
7
fedoss
14.09.12
✎
12:01
|
(6) я предположил, что это ПС типовой бухи. На 41-м счете там второе субконто не у всех субсчетов МестаХранения. Так что без ВыбратьСчета такой бух запрос даст неведомую фигню
|
|||
8
chief accountant
14.09.12
✎
12:20
|
(7) Это к сабжу не относится
|
|||
9
Nik_nik_nik
14.09.12
✎
12:31
|
(5) - проверяю
|
|||
10
Nik_nik_nik
14.09.12
✎
12:33
|
Нет, не помогло. Все равно выдало общие итоги по субконто1 и субконто2
|
|||
11
chief accountant
14.09.12
✎
12:39
|
(10) Ты про (3)?
|
|||
12
Nik_nik_nik
14.09.12
✎
12:43
|
(11) да
|
|||
13
chief accountant
14.09.12
✎
12:47
|
(12) Что-то не верится. Делаем так:
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты); Ит.ИспользоватьКорСубконто(ВидыСубконто.Договоры); Ит.ВыполнитьЗапрос('01/01/2012','14/09/2012', "41,43",,,2); Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1) = 1 Цикл Сообщить("ДО1 "+Ит.ДО(3)); Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2) = 1 Цикл Ит.ВыбратьКорСубконто(1); Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл Ит.ВыбратьКорСубконто(2); Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл Сообщить("ДО2 "+Ит.ДО(3)); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; Получаем: ДО1 5 ДО2 5 ДО1 20 ДО2 20 Делаем так: Ит.ВыполнитьЗапрос('01/01/2012','14/09/2012', "41,43","60",,2); Получаем: ДО1 20 ДО2 20 |
|||
14
Nik_nik_nik
14.09.12
✎
12:50
|
Нужно получить:
ДО1 20 ДО2 5 ДО2 7 ДО2 8 |
|||
15
chief accountant
14.09.12
✎
12:57
|
(14) Ну тык
Сообщить("КорДО2 "+Ит.КорДО(3)); ДО1 9 КорДО2 7 КорДО2 2 делов-то |
|||
16
Nik_nik_nik
14.09.12
✎
13:04
|
(15) да это понятно, беда как раз в том что возвращает:
ДО1 9 КорДО2 9 КорДО2 9 Вместо: ДО1 9 КорДО2 7 КорДО2 2 |
|||
17
chief accountant
14.09.12
✎
13:11
|
(16) Ещё раз:
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты); Ит.ИспользоватьКорСубконто(ВидыСубконто.Договоры); Ит.ВыполнитьЗапрос('01/01/2012','14/09/2012', "41,43","60",,2); Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1) = 1 Цикл Сообщить("ДО1 "+Ит.ДО(3)); Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2) = 1 Цикл Ит.ВыбратьКорСубконто(1); Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл Ит.ВыбратьКорСубконто(2); Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл Сообщить("КорДО2 "+Ит.КорДО(3)); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; Возращает: ДО1 9 Дом мод 17 от 17.02.03 КорДО2 7 Магазин Основной договор КорДО2 2 |
|||
18
chief accountant
14.09.12
✎
13:12
|
(17) Забыл это:
Сообщить(Ит.КорСубконто(1)); Сообщить(Ит.КорСубконто(2)); Сообщить("КорДО2 "+Ит.КорДО(3)); |
|||
19
chief accountant
14.09.12
✎
13:15
|
(18)+ Скрин ручной операции:
http://img826.imageshack.us/img826/1121/79147219.png |
|||
20
Nik_nik_nik
14.09.12
✎
13:28
|
Пробую.
Почему нельзя делать "//Ит.ВключатьСубсчета(1);"? |
|||
21
chief accountant
14.09.12
✎
13:31
|
(20) наперкуа это тебе?
|
|||
22
Nik_nik_nik
14.09.12
✎
13:40
|
(20) рядом есть такая же ерунда по 10-ым счетам, при заполнении таблицы мне нужно указывать на каком это счете происходит.
Пример отработал как надо. Теперь бы еще с субсчетами решить. |
|||
23
chief accountant
14.09.12
✎
13:42
|
(22) Чего надо с субсчетами-то решить. Спрашивай внятно и доходчиво, а то прыгаешь от одной темы к другой
|
|||
24
Nik_nik_nik
14.09.12
✎
13:49
|
Мне нужно получить обороты в разрезе субконто 1,2 и корсубконто 1,2 по субсчетам
Т.е. 41.1 Товар1 Склад1 60(не важно какой) Контрагент1 Договор1 ДО=1 41.1 товар2 Склад1 60 Контрагент2 Договор1 ДО=5 41.2 Товар1 Склад1 60 Контрагент1 Договор2 ДО=3 |
|||
25
chief accountant
14.09.12
✎
14:01
|
(24) Ладно так и быть:
Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Номенклатура); Ит.ИспользоватьСубконто(ВидыСубконто.МестаХранения); Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты); Ит.ИспользоватьКорСубконто(ВидыСубконто.Договоры); Ит.ВыполнитьЗапрос('01/01/2012','14/09/2012', "41,43","60",,2); Ит.ВыбратьСчета(); Пока Ит.ПолучитьСчет()=1 Цикл Ит.ВыбратьСубконто(1); Пока Ит.ПолучитьСубконто(1) = 1 Цикл Сообщить(Ит.Субконто(1)); Сообщить(Ит.Субконто(2)); Сообщить("Счет "+Ит.Счет); Сообщить("ДО1 "+Ит.ДО(3)); Ит.ВыбратьСубконто(2); Пока Ит.ПолучитьСубконто(2) = 1 Цикл Ит.ВыбратьКорСубконто(1); Пока Ит.ПолучитьКорСубконто(1) = 1 Цикл Ит.ВыбратьКорСубконто(2); Пока Ит.ПолучитьКорСубконто(2) = 1 Цикл Сообщить(Ит.КорСубконто(1)); Сообщить(Ит.КорСубконто(2)); Сообщить("КорДО2 "+Ит.КорДО(3)); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
26
Nik_nik_nik
14.09.12
✎
14:04
|
Ясно. Вы мне очень помогли. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |