Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Выборка результатов бух.запроса в обратном порядке (http://forums.kuban.ru/f1040/vyborka_rezul-tatov_buh_zaprosa_v_obratnom_poryadke-3111322.html)

Looking 27.09.2012 11:27

Выборка результатов бух.запроса в обратном порядке
 
Доброго времени суток!
Подскажите, пожалуйста, как организовать обратный порядок выборки бухгалтерского запроса? мне нужно получать последние документы поступления, а не первые.

Looking 27.09.2012 11:27

Мой бух.запрос

[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]

qweqwe123123 27.09.2012 12:10

никак

qweqwe123123 27.09.2012 12:15

Ит41_1ДП.ПолучитьПериод()

вот сюда можно подсовывать даты с конца
но внутри даты выборка все равно будет по возрастанию

qweqwe123123 27.09.2012 12:25

а если нужен изврат, то:

Процедура Получаем(Ит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ДП)
КонецПроцедуры

Looking 27.09.2012 12:32

(4)рекурсия?

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

qweqwe123123 27.09.2012 12:37

да

qweqwe123123 27.09.2012 12:40

*для эстетов цикл в рекурсии можно заменить на условный оператор

VZ 27.09.2012 13:04

Вопрос достаточно диковат... Если вспомнить, как организовано хранение данных: [em]остатки[/em] и [em]обороты[/em]. Причем [em]остатки[/em] всегда на [b]начало[/b] периода. Остатки на конец периода есть сумма начальных остатков + обороты.
Что совершенно естественно: при добавлении/изменении оборотов в текущем периоде остатки вообще не корректируются, а внутри прошлого периода порождают изменение остатков "вперед" с приемлемо простым (и как следствие, приемлемо быстрым алгоритмом). Попробуйте наоборот, когда хранятся остатки на конец периода...

"потому и не кусает"...

Looking 28.09.2012 07:57

(8)от души благодарю за развернутый информативный ответ!


Текущее время: 03:58. Часовой пояс GMT +3.