Имя: Пароль:
1C
1С v8
Как реализовать LIFO в запросе ?
0 atis30
 
04.07.14
18:22
Здравствуйте. Можете подсказать как реализовать LIFO в запросе?

Есть :
Регистр1, остатки (Измерение1,Измерение2,Сумма)
Регистр2, обороты (Измерение1,Измерение2,ИзмерениеДата,Сумма)

Мне нужно получить следующую выборку :
Остаток по регистру1, в разрезе измерений 1 и 2, потом детализацию из Регистра2, где сумма расписана по "ИзмерениюДата" по Lifo.

Пример. Данные в регистре2 :
Измерение1, Измерение2, 01.01, Сумма = 400
Измерение1, Измерение2, 02.01, Сумма = 100
Измерение1, Измерение2, 03.01, Сумма = 200
Измерение1, Измерение2, 04.01, Сумма = 300

Остаток в Регистре1 по измерение1, измерение2 = 450

Нужно получить следующую детализацию :
Измерение1, Измерение2, 03.01, Сумма = 150
Измерение1, Измерение2, 04.01, Сумма = 300
1 Wobland
 
04.07.14
18:25
из регистр1 левое регистр2 упорядочить по регистр2. период убыв
2 atis30
 
04.07.14
18:26
(1) Оно вернет все четыре строки
3 atis30
 
04.07.14
18:27
(1) или ты имеешь в виду потом в обработке выборки анализировать что выводить а что нет?
4 Wobland
 
04.07.14
18:29
не понял. а сколько надо? и куда пропали данные за 1е и 2е числа? и что за суммы в итоге?
5 atis30
 
04.07.14
18:33
(4) Остаток в регистре 1 = 450.
Получаем эту сумму из регистра2, в разрезе дат по Lifo :
Последняя строка полностью влазит, остается 150
Из передпоследней строки берем 150.

Измерение1, Измерение2, 03.01, Сумма = 150
Измерение1, Измерение2, 04.01, Сумма = 300
6 Wobland
 
04.07.14
18:36
на экзамене вводится переменная ОсталосьСписать и крутится в цикле...
7 atis30
 
04.07.14
18:37
(6) тоесть одним запросом это выгребти не получится?
8 Wobland
 
04.07.14
18:38
(7) выгребсти. экзамен? забей и делай переменную ;)
9 atis30
 
04.07.14
18:39
что такое экзамен?
10 Wobland
 
04.07.14
18:40
(9) аттестация "1С:Специалист". не твой случай ;)
нарастающий итог запросом показать? а то мне думать совсем лениво
11 Fragster
 
гуру
04.07.14
18:40
проще и быстрее всего - добавить итоги в запрос, а потом в постобработке подобрать
12 atis30
 
04.07.14
18:42
Нет, это не экзамен. Отчет замученный.

Походу мне нужно будет получить один раз данные, обработать их в цыкле и засунуть в ТЗ, поместить эту ТЗ обратно в запрос и потом строить отчет. Это самый простой путь?
13 GROOVY
 
04.07.14
18:43
14 Fragster
 
гуру
04.07.14
18:44
(12) будет быстрее, чем все в запросе делать.
если отчет на СКД - то можно с вычисляемыми полями заморочнуться, но там с отборами по этим самым полям часто лажа получается почему-то :(
15 atis30
 
04.07.14
18:45
Спасибо.
16 Wobland
 
04.07.14
18:45
(13) спасибо, опять в закладки добавил
17 Fragster
 
гуру
04.07.14
18:46
что-то типа

ВычислитьВыражение ("Сумма(Количество)", "Партия", "ОбщийИтог", "Первая", "Текущая", "Партия Убыв")

хотя тут мог напутать чего-то
18 GROOVY
 
04.07.14
18:46
(14) В отчете (СКД) есть функция "ВычислитьВыражение" там можно нарастающий итог считать.
19 GROOVY
 
04.07.14
18:47
(17) Во!
20 Fragster
 
гуру
04.07.14
18:50
(19) ты объясни, почему с отборами лажа. то ничего не показывает, то "невозможно вычислить выражение". как диагностировать это.
21 Fragster
 
гуру
04.07.14
18:52
я все пытаюсь вкурить, как оно работает, но зависимости плохо отлавливаются. а справка надмозгами делана :(
22 GROOVY
 
04.07.14
18:53
(20) А у тебя видать поля при настройках недоступны становятся. А вообще с СКД столько зависимостей, что тяжело сказать почему что-то не работает.
Вчера в группе показывал допонения периодов в СКД, у меня отбор по месяцу работает, у слушателя показывает вообще все, хотя вроде как все идентично. Оказалось он в функции КОНЕЦПЕРИОДА, вместо запятой точку поставил между параметрами. И эта зараза не ругается, а тупо отбор не устанавливает.
23 Fragster
 
гуру
04.07.14
19:01
(22) в том то и дело. вывожу без отбора по вычисляемымм полям - все ОК. без изменения остальных настроек добавляю отбор по вычисляемому полю - выходит кривота.
Независимо от того, куда вы едете — это в гору и против ветра!