![]() |
Выборка результатов бух.запроса в обратном порядке Доброго времени суток! Подскажите, пожалуйста, как организовать обратный порядок выборки бухгалтерского запроса? мне нужно получать последние документы поступления, а не первые. |
Мой бух.запрос [em]Ит41_1ДП=СоздатьОбъект("БухгалтерскиеИтоги"); Ит41_1ДП.ИспользоватьСубконто(ВидыСубконто.Номенклатура,ПеремНоменклатура,2); Ит41_1ДП.ВыполнитьЗапрос(ДобавитьМесяц(ПеремТекДок.ДатаДок,-24),ПеремТекДок,"41.1",,,1,"Операция",); Ит41_1ДП.ВыбратьПериоды(,1); Пока Ит41_1ДП.ПолучитьПериод()=1 Цикл Сообщить("Ит41_1ДП.Операция "+Ит41_1ДП.Операция+" Кол: "+Ит41_1ДП.ДО("К")); КонецЦикла;[/em] |
никак |
Ит41_1ДП.ПолучитьПериод() вот сюда можно подсовывать даты с конца но внутри даты выборка все равно будет по возрастанию |
а если нужен изврат, то: Процедура Получаем(Ит41_1ДП) Пока Ит41_1ДП.ПолучитьПериод()=1 Цикл Операция = СоздатьОбъект("Операция"); Операция.НайтиОперацию(Ит41_1ДП.Операция.Документ); Количество = Ит41_1ДП.ДО("К"); Получаем(Ит41_1ДП); Сообщить("Ит41_1ДП.Операция " + Операция +" Кол: "+Количество) КонецЦикла КонецПроцедуры //******************************************* Процедура Сформировать() Ит41_1ДП=СоздатьОбъект("БухгалтерскиеИтоги"); Ит41_1ДП.ИспользоватьСубконто(ВидыСубконто.Номенклатура,ПеремНоменклатура,2); Ит41_1ДП.ВыполнитьЗапрос(ДобавитьМесяц(ПеремТекДок.ДатаДок,-24),ПеремТекДок.ДатаДок,"41.1",,,1,"Операция",); Ит41_1ДП.ВыбратьПериоды(,1); Получаем(Ит41_1ДП) КонецПроцедуры |
(4)рекурсия? спасибо за ответ, раз обратного порядка нет, то тогда скорее всего ограничусь прямой выборкой в ТЗ и ее обратным перебором. просто при изначально обратной выборке можно было останавливать цикл по мере накопления нужного количества, но думаю не столь критично, т.к. это разовая операция заполнения начальных остатков. |
да |
*для эстетов цикл в рекурсии можно заменить на условный оператор |
Вопрос достаточно диковат... Если вспомнить, как организовано хранение данных: [em]остатки[/em] и [em]обороты[/em]. Причем [em]остатки[/em] всегда на [b]начало[/b] периода. Остатки на конец периода есть сумма начальных остатков + обороты. Что совершенно естественно: при добавлении/изменении оборотов в текущем периоде остатки вообще не корректируются, а внутри прошлого периода порождают изменение остатков "вперед" с приемлемо простым (и как следствие, приемлемо быстрым алгоритмом). Попробуйте наоборот, когда хранятся остатки на конец периода... "потому и не кусает"... |
(8)от души благодарю за развернутый информативный ответ! |
Текущее время: 03:58. Часовой пояс GMT +3. |