Имя: Пароль:
1C
1C 7.7
v7: СКД() неправильно считает сальдо
,
0 Parodist
 
17.07.12
10:39
Добрый день!

Надо в запросе одновременно получить КорДО() между сч.10 и сч. 60 и СКД() по сч. 60. Делаю так:

   БИ = СоздатьОбъект("БухгалтерскиеИтоги");
   БИ.ИспользоватьСубконто(ВидыСубконто.Материалы);  
   БИ.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты);  
   БИ.ВыполнитьЗапрос(НачДата,КонДата,"10","60",,3);

   ТЗПоступлений = СоздатьОбъект("ТаблицаЗначений");
   ТЗПоступлений.НоваяКолонка("МПЗ", "Справочник.Материалы");
   ТЗПоступлений.НоваяКолонка("ОстКон", "Число", 15,2);
   ТЗПоступлений.НоваяКолонка("Приход", "Число", 15,2);
                 
   БИ.ВыбратьСчета();
   Пока БИ.ПолучитьСчет() = 1 Цикл  
       БИ.ВыбратьСубконто();
       Пока БИ.ПолучитьСубконто() = 1 Цикл  
           БИ.ВыбратьКорСчета();
           Пока БИ.ПолучитьКорСчет() = 1 Цикл  
               ТЗПоступлений.НоваяСтрока();
               ТЗПоступлений.МПЗ = БИ.Субконто();
               ТЗПоступлений.ОстКон = БИ.СКД();
               ТЗПоступлений.Приход = БИ.КорДО();
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;

Конечное сальдо выдает неправильное.
Как поправить?
1 Parodist
 
17.07.12
10:47
Это вообще возможно, чтоб КорДО() и СКД() в 1 запросе? Если делать 2 запросами, то оооооочень долго работает...
2 Parodist
 
17.07.12
10:52
Блин в ветки по v7 никто уже не заходит что ли...??? Помогитеее!!! Срочно нужно!
3 chief accountant
 
17.07.12
10:53
(2) поменять счета местами?
4 Parodist
 
17.07.12
10:54
(3) Не надо местами менять - я в (0) описался - СКД() надо не по сч.60, а по сч.10... Сорри)
5 chief accountant
 
17.07.12
10:56
(4) получай СКД() перед БИ.ВыбратьКорСчета();
6 Parodist
 
17.07.12
11:00
(4) Все равно не работает
Похоже дело в
БИ.ВыполнитьЗапрос(НачДата,КонДата,"10","60",,3);
Если использую
БИ.ВыполнитьЗапрос(НачДата,КонДата,"10","60",,1);

То все норм. Остаток правильный, но тогда оборот между сч.10 и сч.60 не смогу получить.
7 Parodist
 
17.07.12
11:01
А с троечкой никак СКД() правильным не получается... Чего уже только не пробовал(
8 chief accountant
 
17.07.12
11:03
(7) ща проверим
9 chief accountant
 
17.07.12
11:26
(7) ну не знаю. На деме всё ок
   БИ = СоздатьОбъект("БухгалтерскиеИтоги");
   БИ.ИспользоватьСубконто(ВидыСубконто.Материалы);  
   БИ.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты);  
   БИ.ВыполнитьЗапрос('01/01/2012','01/09/2012',"10","60",,3);

   БИ.ВыбратьСчета();
   Пока БИ.ПолучитьСчет() = 1 Цикл  
       БИ.ВыбратьСубконто();
       Пока БИ.ПолучитьСубконто() = 1 Цикл
           Сообщить(БИ.СКД());
           БИ.ВыбратьКорСчета();
           Пока БИ.ПолучитьКорСчет() = 1 Цикл  
               Сообщить(БИ.КорДО());
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
10 zak555
 
17.07.12
11:27
учти, что КорДО <> КО
ибо сумма без НДС
11 chief accountant
 
17.07.12
11:28
9+ В принципе это аналог отчета Анализ счета по субконто
12 zak555
 
17.07.12
11:39
60 -- АП => развернутое смотреть ск надо
13 ProgAL
 
17.07.12
11:40
Посмотри какие параметры в ВыполнитьЗапрос в отчете анализ по субконто, анализ счета по субконто.
14 zak555
 
17.07.12
11:42
поступление мпз
Дт 10 Кт 60
Дт 19 Кт 60


надо использовать не КорДО, а КорКО (!)
15 chief accountant
 
17.07.12
11:43
(14) Уверен?
16 zak555
 
17.07.12
11:45
(15) у 10 счета это ДО
у корресподирующего КорКО
17 chief accountant
 
17.07.12
11:46
(16) проверь на (9)
           БИ.ВыбратьКорСчета();
           Пока БИ.ПолучитьКорСчет() = 1 Цикл  
               Сообщить(БИ.КорДО());
               Сообщить(БИ.КорКО());
           КонецЦикла;
18 zak555
 
17.07.12
11:47
(17) выборка по корСчетам зачем ?
19 chief accountant
 
17.07.12
11:56
(18) Ну попробуй без выборки :)))
20 zak555
 
17.07.12
11:58
да, использовать надо КорДО - это с кредита корреспондирующего счета =)
21 zak555
 
17.07.12
11:59
забыл уже всё напрочь
22 Parodist
 
17.07.12
11:59
Так. Отлучился на полчаса, а тут уже без меня дискуссия). Мистика какая-то. Сравнил (9) со своим кодом построчно. У меня все  так же, но выдает не СКД(), а СКД()+Кредитовый оборот по сч.10. Может итоги пересчитать...

(14) не по теме. Во-первых не КорКО, а на самом деле КорДО, а во вторых проблема не в в КорДО, а в СКД()...
23 chief accountant
 
17.07.12
12:01
(22) Что кажет (11)?
24 zak555
 
17.07.12
12:04
> , а во вторых проблема ... в СКД()...

с чего ты взял ?
сделай анализ счета 10 и скрин сюда
25 Parodist
 
17.07.12
12:15
(23), (24) http://i024.radikal.ru/1207/de/7803c47481b9.gif
Вот анализ счета.
КорДО() выводит правильно 9600. СКД() Должен показывать 9233,24, а выводит 17116,66 (7883,42+9233,24)
26 chief accountant
 
17.07.12
12:20
(25) поди дата конца в отчетах разные
27 chief accountant
 
17.07.12
12:47
26+ не, не то
короче придется так:
   БИ = СоздатьОбъект("БухгалтерскиеИтоги");
   БИ.ИспользоватьСубконто(ВидыСубконто.Материалы);  
   БИ.ИспользоватьКорСубконто();  
   БИ.ВыполнитьЗапрос('01/01/2012','01/09/2012',"10",,,3);

   БИ.ВыбратьСчета();
   Пока БИ.ПолучитьСчет() = 1 Цикл  
       БИ.ВыбратьСубконто();
       Пока БИ.ПолучитьСубконто() = 1 Цикл
           Сообщить("СКД "+БИ.СКД());
           БИ.ВыбратьКорСчета();
           Пока БИ.ПолучитьКорСчет() = 1 Цикл
               Если Лев(БИ.КорСчет.Код,2)="60" Тогда
                   Сообщить("КорДО "+БИ.КорДО());
                   Сообщить("КорКО "+БИ.КорКО());
               КонецЕсли;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
28 zak555
 
17.07.12
12:54
> Если Лев(БИ.КорСчет.Код,2)="60" Тогда

аааааааааааааааааааа


где Опции ?
29 zak555
 
17.07.12
12:56
(25) период каков ?
30 zak555
 
17.07.12
12:59
(25) это он тебе корКо + СКД суммы вывел ?
31 chief accountant
 
17.07.12
12:59
(29) я проверил дело не в периоде
32 chief accountant
 
17.07.12
13:00
(30) выводит без учета расхода
33 zak555
 
17.07.12
13:01
(32) СКД должен выводит в целом по аналитике материал
34 chief accountant
 
17.07.12
13:03
И да к (27) нуна
   БИ.ВыбратьСчета();
   Пока БИ.ПолучитьСчет() = 1 Цикл  
       БИ.ВыбратьСубконто();
       Пока БИ.ПолучитьСубконто() = 1 Цикл
           Сообщить("СКД "+БИ.СКД());
           БИ.ПолучитьКорСчет(,СчетПоКоду("60"));
           Сообщить("КорДО "+БИ.КорДО());
       КонецЦикла;
   КонецЦикла;
35 chief accountant
 
17.07.12
13:04
(33) не понял
36 zak555
 
17.07.12
13:10
(35) код из (27) выведет СКД по материалу, а определённом счёте
37 chief accountant
 
17.07.12
13:13
(36) читай (32)
38 zak555
 
17.07.12
13:17
(37) а причём тут движения по расходу, если скд/снд определяют показатель сальдо в независимости от корреспондирующих счеттов ?
39 Parodist
 
17.07.12
13:19
(38) Не знаю, при чем тут движения по расходу, но выводит именно так... Я сам в шоке
40 Parodist
 
17.07.12
13:21
Стоп, а почему период БИ.ВыполнитьЗапрос('01/01/2012','01/09/2012',"10",,,3);
а не БИ.ВыполнитьЗапрос('01/01/2012','31/08/2012',"10",,,3);
?
Может в периоде дело?
41 zak555
 
17.07.12
13:22
(40) может =)
42 chief accountant
 
17.07.12
13:22
(38) Запрос в (9) учитывает Кт 10 только если КорСчет="60", почему - хз. Методом тыка решение в (34).
(40) забей уже на период
43 zak555
 
17.07.12
13:24
(42) и как (34) влияет на СКД() ?
44 chief accountant
 
17.07.12
13:24
Недавно тема была: Бухгалтерский запрос
ну там хоть понятно почему.
45 zak555
 
17.07.12
13:25
(44) ну там с параметрами надо было поиграться =)
46 Parodist
 
17.07.12
13:26
(43) Вот-вот. СКД() Выводится до
БИ.ПолучитьКорСчет(,СчетПоКоду("60"));
           Сообщить("КорДО "+БИ.КорДО());
И с точки зрения СКД() что (34) , что (27) - одно и то же
47 chief accountant
 
17.07.12
13:26
(45) ага, учитывая, что в дбф всё работает
48 zak555
 
17.07.12
13:27
(46) так конечно нужно выводить ДО (!)
49 chief accountant
 
17.07.12
13:27
(46) не совсем: убран корсчет в запросе, из-за него и херню показывает
50 zak555
 
17.07.12
13:27
хотя влияеть недолжно
51 chief accountant
 
17.07.12
13:28
49+ тху
разницы нет
52 Parodist
 
17.07.12
13:29
(49) Да, убран, но мне-то корсчет нужен, нельзя его убирать....
53 chief accountant
 
17.07.12
13:30
(52) Это почему?
54 Parodist
 
17.07.12
13:31
(53) Потому что мне кроме СКД() по 10 нужно в этом же запросе Д10  К60 получить.
55 chief accountant
 
17.07.12
13:34
(54) твоя моя не понимай. (34) работает и ладно
56 zak555
 
17.07.12
13:36
(55) без получиьтКорСчет не работает ?
57 chief accountant
 
17.07.12
13:37
(56) неа
58 zak555
 
17.07.12
15:25
(57) странно