|
v7: Как исключить внутренние обороты? | ☑ | ||
---|---|---|---|---|
0
Lsr
22.10.12
✎
13:12
|
Сформировал список значений с интересующим меня материалом. Скормил бух. запросу
В бух запрос (см ниже)попадают внутренние обороты по счету 10 ИТ.КО(), а меня интересует только списанный материал. Оставил лишний код, что бы видели, куда "копал". Может кто поправит мой код. //теперь выберем списанные материалы Д20К10 //сообщить("***************113_формируем таблицу списания материала**********************"); //Внимание!!!! 1)Поступление одного и того же материала может быть от разных контрагентов // 2)Могут быть исправительные (красное сторно) проводки Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,СЗпоступл, 2);//1 - разворачивать по данному субконто, 2 - отбирать по данному субконто, 3- //Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "10","20,10",,2,,); Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "10","20",,2,,);// 1 - остатки и обороты по счету в целом; 2 - обороты между счетами; 3 - первое и второе вместе. По умолчанию: 1. // (1-попадают внутренние обороты) 2,3-сальдо =оборотам 3-попадает внутр перемещ Если Ит.ВыбратьКорСчета(1,,)=1 Тогда Пока Ит.ПолучитьКорСчет(,)>0 Цикл //Сообщить("122_Ит.КорСчет="+Ит.КорСчет); Если Ит.КорСчет=СчетПоКоду("10") Тогда //Сообщить("124_Продолжить"); Продолжить КонецЕсли; Если Ит.ВыбратьСубконто()=1 Тогда Пока ИТ.ПолучитьСубконто()>0 Цикл Матер= Ит.Субконто(); //КолРасх=Ит.ОК("К"); //СумРасх=Ит.ОК("С"); КолРасх=-Ит.СКД("К");//????????? СумРасх=-Ит.СКД("С");//????????? бред,но работает //СальдоКД=Ит.СКД("С"); //Сообщить("133_Матер="+Матер+", СумРасх="+СумРасх+", Ит.КорСчет="+Ит.КорСчет); //2)сформировать список материалов с ненулевыми оборотами по сумме или колич Если (СумРасх<>0) или (КолРасх<>0)Тогда // (Кол<>0) или НомСтроки=0; Если ТЗматер.НайтиЗначение(Матер,НомСтроки,"Материал") = 1 Тогда // Возвращает число: 0 - значение не найдено; 1 - значение найдено ТЗматер.ПолучитьСтрокуПоНомеру(НомСтроки); //Сообщить("118_НомСтроки = "+НомСтроки+", Матер="+Матер); ТЗматер.КолРасх=КолРасх; ТЗматер.СуммаРасх=СумРасх; //ТЗматер.СуммаКД=СальдоКД; //Сообщить("145_Матер="+Матер+", СумРасх="+СумРасх+", СальдоКД="+Ит.СКД("С")); Если (КолРасх<>0) Тогда ТЗматер.ЦенаРасх=СумРасх/КолРасх КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
1
Lsr
22.10.12
✎
22:34
|
Сам себе и отвечу.
При расчете бух итогов встречается ситуация, когда нас не интересует весь оборот по счету, например, внутрее перемещение со склада на склад, а только приход или уход, т.е корреспонденция с другими счетами. Например Д10К60, Д20К10, Д41К60. Для этого можно воспользоваться двумя методами. Метод1. В запросе использовать КорСубконто Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьКорСубконто(ВидыСубконто.Контрагенты,ВыбСубконто1,1,); Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,, 1); Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "10","60;62;76",,3,, "С"); Однако использовать КорСубконто не всегда возможно. Метод2. Использовать ВыбратьСубконто(,,2) с флагами//1 - включать в выборку счета только с дебетовыми оборотами; 2 - включать в выборку счета только с кредитовыми оборотами. Ит = СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Материалы,СЗпоступл, 2);// 2 - отбирать по данному субконто Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "10","20",,2,,);// 1 - остатки и обороты по счету в целом; 2 - обороты между счетами; 3 - первое и второе вместе. Если Ит.ВыбратьСубконто(,,2)=1 Тогда//1 - включать в выборку счета только с дебетовыми оборотами; 2 - включать в выборку счета только с кредито-выми оборотами. |
|||
2
zak555
22.10.12
✎
22:38
|
> Однако использовать КорСубконто не всегда возможно.
почему ? |
|||
3
Lsr
23.10.12
✎
01:28
|
Однако использовать КорСубконто не всегда возможно.
почему ? Не вписывается в логику. Из второго примера видно. Нас не всегда интересует "кому ушло" или "от кого пришло". Достаточно факта, что "ушло" |
|||
4
zak555
23.10.12
✎
01:33
|
(3) делам просто
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, "10",,,2,,1) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |