|
v8: Запрос. обороты регистра накопления | ☑ | ||
---|---|---|---|---|
0
MistaEr
18.10.13
✎
11:27
|
Доброго времени!
Хочу отобрать обороты регистра накопления (снизу), пока сумма оборота (накопительная) не превысит заданную сумму. Как правильно реализовать эту задачу? |
|||
1
PR
18.10.13
✎
11:29
|
(0) Выбрать с сортировкой и перебирать, пока не всё.
|
|||
2
MistaEr
18.10.13
✎
11:34
|
а где указать в запросе ПОКА НЕ ВСЕ, и копить накопительную
|
|||
3
MistaEr
18.10.13
✎
11:38
|
Надо бы этот отчет на СКД сделать, не хотелось бы с циклами связываться
|
|||
4
zmaximka
18.10.13
✎
11:41
|
(2) это надо в пятничную ветку срочно
|
|||
5
viktor_vv
18.10.13
✎
11:41
|
Отбираешь во временную с сортировкой по возрастанию, потом соединяешь ее саму с собой вроде как левым с условием
Т1.Сумма > Т2.Сумма В Выбрать Сумма(Т2.Сумма) и в условии Имеющие Сумма(Т2.Сумма) < ТвойКритерий Это очень схематично, без претензии на истинность. |
|||
6
viktor_vv
18.10.13
✎
11:42
|
И группировать по полям Т1.
|
|||
7
Asmody
18.10.13
✎
11:43
|
пример:
дано: Таблица Т с полями ПолеДляПодсчета, ПолеДляСортировки требуется: набрать сумму ПолеДляПодсчета по записям в порядке ПолеДляСортировки решение: ВЫБРАТЬ Т.ПолеДляСортировки, СУММА(Т1.ПолеДляПодсчета) ИЗ Т как Т СОЕДИНЕНИЕ Т как Т1 ПО Т.ПолеДляСортировки >= Т1.ПолеДляСортировки СГРУППИРОВАТЬ ПО Т.ПолеДляСортировки ИМЕЮШИЕ СУММА(Т1.ПолеДляПодсчета)<= &НужнаяСумма УПОРЯДОЧИТЬ ПО Т.ПолеДляСортировки |
|||
8
Asmody
18.10.13
✎
11:43
|
с вас 100 баксов
|
|||
9
PR
18.10.13
✎
11:43
|
(2) Нигде
|
|||
10
mrDSide
18.10.13
✎
11:45
|
(0) А какие именно данные хотите выбирать? т.е. документы (регистратор) или как? только приход/расход?
|
|||
11
MistaEr
18.10.13
✎
11:49
|
ВЫБРАТЬ
РегОбороты.Контрагент, РегОбороты.Регистратор КАК Регистратор, РегОбороты.СуммаВзаиморасчетовПриход КАК СуммаРеализации ИЗ РегистрНакопления.РегОбороты.Обороты(, , Регистратор, ) КАК РегОбороты УПОРЯДОЧИТЬ ПО Регистратор УБЫВ АВТОУПОРЯДОЧИВАНИЕ что то такое вот |
|||
12
mrDSide
18.10.13
✎
11:51
|
(11) Ну да, если ИБ небольшая - самое оно))) всего-то все обороты по регистру выбрать, упорядочить, а потом еще какие-то манипуляции производить))
|
|||
13
MistaEr
18.10.13
✎
11:52
|
(4) zmaximka лезет во все темы и пишет всякую фигню
|
|||
14
MistaEr
18.10.13
✎
11:52
|
(12) Все обороты не совсем конечно хорошо
|
|||
15
Asmody
18.10.13
✎
11:55
|
(12) сохранить обороты за нужный период в ВТ не предлагать?
|
|||
16
mrDSide
18.10.13
✎
11:57
|
(14) Так может, все-таки, уточните, что я просил в (10)
|
|||
17
viktor_vv
18.10.13
✎
11:58
|
(11) В в твоем случае проблема будет с полем для сортировки. Тебе ж надо будет сортировать по убыванию суммы, на случай одинаковых сумм в это поле надо добавиь еще какой-то уникальный признак.
Учитывая проблематичность преобразования типов в запросе хрен его знает как это сделать. |
|||
18
MistaEr
18.10.13
✎
12:00
|
(16) Контрагент Регистратор СуммаПРиход
|
|||
19
mrDSide
18.10.13
✎
12:27
|
Подойдет (11). Только:
- выбирать не обороты, а записи регистра с условиями по контрагенту и виду движения; - добавить цикл вида Пока СуммаПроверки Цикл //Начало=...отнять произвольный период(месяц) Если Начало<ДатаДальшеНеКуда Тогда Прервать КонецЕсли; Запрос.УстановитьПараметр("Начало",Начало); Запрос.УстановитьПараметр("Конец",Конец); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл СуммаПроверки-=Выборка.Сумма; Если СуммаПроверки<0 Тогда Прервать КонецЕсли КонецЦикла; КонецЦикла |
|||
20
MistaEr
18.10.13
✎
14:02
|
Использовал(5) и (7). Всем спасибо!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |