Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 23:43

не получется запрос по бухитогам

Автор PaulRom, 12 дек 2012, 13:49

0 Пользователей и 1 гость просматривают эту тему.

PaulRom


            КоличНУ = Количество;
            БухИтНУ = СоздатьОбъект("БухгалтерскиеИтоги");
            БухИтНУ.Опции(1,1);
            БухИтНУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Товар,1,0);
            БухИтНУ.ИспользоватьСубконто(ВидыСубконто.УсловияПоступленияИВыбытия,,1,0);
             БухИтНУ.ИспользоватьСубконто(ВидыСубконто.Основание,,1,0);
            БухИтНУ.ВыполнитьЗапрос(, ТекущийДокумент(), "Н02.02.1",,,,,);
             
            БухИтНУ.ВыбратьСубконто(1);
            Пока (БухИтНУ.ПолучитьСубконто(1) = 1) и (КоличНУ > 0) Цикл
                БухИтНУ.ВыбратьСубконто(2);
                Пока (БухИтНУ.ПолучитьСубконто(2) = 1) и (КоличНУ > 0) Цикл
                    БухИтНУ.ВыбратьСубконто(3);
                    Пока (БухИтНУ.ПолучитьСубконто(3) = 1) и (КоличНУ > 0) Цикл
                        ОстКолНУ = БухИтНУ.СКД("К");
                        ОстСумНУ = БухИтНУ.СКД("С");
                        Если НЕ (ОстКолНУ > 0) Тогда
                            Продолжить     
                        КонецЕсли;
                         
                        КоличСпис = Мин(КоличНУ,ОстКолНУ);

                        ...
                         
                        КоличНУ = КоличНУ - КоличСпис;
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;


не пойму что не так. в отладчике БухИтНУ.ПолучитьСубконто(2) = 0 , хотя ОСВ по счету показывает что обороты по нужной номенклатуре за этот период есть в разрезе первого второго и третьего субконто
код располагается в модуле документа

Herby

Цитата: PaulRom от 12 дек 2012, 13:49БухИтНУ.ИспользоватьСубконто(ВидыСубконто.УсловияПоступленияИВыбытия,,1,0);              БухИтНУ.ИспользоватьСубконто(ВидыСубконто.Основание,,1,0);

уже давно не работал с бухгалтерскими итогами, но по-моему, эти две строки лишние.
вы же не указываете здесь значение субконто, в этом случае запрос отбирает данные, в которых Основание = <пустое значение> и УсловияПоступленияИВыбытия = <пустое значение>

PaulRom

закомментил эти две строки - стала выскакивать ошибка:
БхИтНУ.ВыбратьСубконто(2);
{Документ.ПеремещениеТоваров.Модуль Документа(567)}: Число фильтров субконто превысило допустимое значение!

Herby

Цитата: PaulRom от 12 дек 2012, 15:05
закомментил эти две строки - стала выскакивать ошибка:
БхИтНУ.ВыбратьСубконто(2);
{Документ.ПеремещениеТоваров.Модуль Документа(567)}: Число фильтров субконто превысило допустимое значение!



скорее всего ни из-за этого. попробуйте с разными значениями параметра "ТипФильтра" в "использоватьСубконто"

И Номер счета точно правильно написан? Может у вас английская H, вместо русской "Н".
Так на взгляд вроде все верно :-/

PaulRom

спсибо за поддержку.
после танцев с бубном заработало вот так: убрал из скобок циферки и указал дату начала с 80 года

КоличНУ = Количество;
БхИтНУ = СоздатьОбъект("БухгалтерскиеИтоги");
БхИтНУ.Опции(1,1);
БхИтНУ.ИспользоватьСубконто(ВидыСубконто.Номенклатура,Товар,1,0);
БхИтНУ.ИспользоватьСубконто();
БхИтНУ.ИспользоватьСубконто();
БхИтНУ.ВыполнитьЗапрос('01.01.1980', ТекущийДокумент(), "Н02.02.1",,,,,);

БхИтНУ.ВыбратьСубконто();
Пока (БхИтНУ.ПолучитьСубконто() = 1) и (КоличНУ > 0) Цикл
БхИтНУ.ВыбратьСубконто();
Пока (БхИтНУ.ПолучитьСубконто() = 1) и (КоличНУ > 0) Цикл
БхИтНУ.ВыбратьСубконто();
    Пока (БхИтНУ.ПолучитьСубконто() = 1) и (КоличНУ > 0) Цикл
ОстКолНУ = БхИтНУ.СКД("К");
ОстСумНУ = БхИтНУ.СКД("С");
Если НЕ (ОстКолНУ > 0) Тогда
Продолжить
КонецЕсли;

КоличСпис = Мин(КоличНУ,ОстКолНУ);

                                        ...

КоличНУ = КоличНУ - КоличСпис;
КонецЦикла;
КонецЦикла;
КонецЦикла;

Herby

по-моему ерунда получается. в таком случае вам одной выборки достаточно.
просто в таком виде как сейчас вы по одному (первому) субконто и бороздите.

а насчет периода, сомнительно. в справке написано, что если параметр не указан, то будут рассчитаны сальды на начало конечной даты. т.е. в принципе и с прошлым периодом все должно работать. но в любом случае зачем вам такой огромный период.

PaulRom

может и правда достаточно было одной.
задача - списать некоторое количество товара со счета "Н02.02.1" по себестоимости
так что бы не оставалось хвостов в виде пустой аналитики.
т.е. на какой аналитике лежал на счете товар с такой и списать его. может есть красивее решение?

Herby

Цитата: PaulRom от 12 дек 2012, 16:37
т.е. на какой аналитике лежал на счете товар с такой и списать его. может есть красивее решение?

намного красивее сделать и не получится.
в принципе у Вас все как надо, так и делалось, другое дело почему не работало :-/ возможно все таки из-за типа фильтра. Попробуйте в первоначальном коде в субконто, где товар указать в типе фильтра двойку, а в остальных единица пусть остается.


PaulRom

ааа я все наврал!!
там в плане счетов у субконто1 нет галки "Только обороты"
а у двух других субконто эти галки стоят. вот видимо где собака порылась
а я смотрю в ОСВ и вижу фигу.. там же тоже остатков нет - только обороты по двум последним аналитикам, а остатки только по номенклатуре.
буду сальдо считать дебет минус кредит.. должно получиться Herby спасибо за подсказки :ooifh:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск