|
Как не делать запрос в цикле. | ☑ | ||
---|---|---|---|---|
0
Alxesp
11.02.16
✎
14:47
|
Задача простая: выбираем документы за период - только те по которым есть(или нет) сальдо(пусть по регистру бухии) по контрагенту документа на дату документа.
Вопрос: как сделать одним запросом, без запроса в цикле? |
|||
1
Fragster
гуру
11.02.16
✎
14:48
|
что такое "есть сальдо по документу"?
|
|||
2
butterbean
11.02.16
✎
14:49
|
как может быть сальдо по документу??
|
|||
3
Fragster
гуру
11.02.16
✎
14:49
|
у документа могут быть обороты, может быть начальное (на позицию перед документом) или конечное (сразу после документа) сальдо.
|
|||
4
asady
11.02.16
✎
14:54
|
(1) там речь о начальном сальдо на дату документа
(0) можно сделать не вопрос |
|||
5
DexterMorgan
11.02.16
✎
14:57
|
(0) Нужно как то себя заставить
|
|||
6
Garykom
гуру
11.02.16
✎
14:59
|
а дату с какой точностью будете брать?
|
|||
7
Alxesp
11.02.16
✎
15:03
|
(1) (2) Вы что и чем читали?
"сальдо(по регистру бухии) по контрагенту документа на дату документа" |
|||
8
Alxesp
11.02.16
✎
15:04
|
(4) (5) Не получается - подозреваю что просто и изящно - НИКАК!
|
|||
9
Kamelot
11.02.16
✎
15:06
|
(6) ну как то так, берем таблицу остатки и обороты - переодичность регистратор и режим ее по условию СуммаНачальныйОстаток > 0, там и контрагента вытащить можно и регисратор
|
|||
10
Alxesp
11.02.16
✎
15:06
|
(6) Без разницы - пусть с точностью до секунды.
|
|||
11
Alxesp
11.02.16
✎
15:08
|
(9) Документ не регистратор.
Период вытащить нельзя - точнее можно только период регистратора, а не произвольное время любого дока. |
|||
12
Kamelot
11.02.16
✎
15:10
|
(11)>>Документ не регистратор.
чего? >>а не произвольное время любого дока. чего чего? о_О |
|||
13
Alxesp
11.02.16
✎
15:11
|
(11) В смысле можно получить период движения регистра.
А нужно на каждый момент времени или хотя бы секунду. Напомню что нам нужен остаток а не движение. |
|||
14
Alxesp
11.02.16
✎
15:12
|
(12) Счет фактура например - читай (0)
|
|||
15
Web00001
11.02.16
✎
15:16
|
>>Нужно сальдо по документу
>>Документ не регистратор Причем здесь вообще документ? |
|||
16
Kamelot
11.02.16
✎
15:17
|
(13) переодичность - это параметр виртуальной таблицы, может быть День, месяц, Запись, Регистратор и т.д.
получая запросом виртуальную таблицу остатков и оборотов задав параметр Переодичность со значением регистратор результат будет начальный остаток |Приход | расход | конечный остаток на каждый "Регистратор" |
|||
17
Alxesp
11.02.16
✎
15:47
|
(15) ">>Нужно сальдо по документу"
Я ТАКОГО НЕ ПИСАЛ! 3-Й УЖЕ - ПРОЧИТАЙ ЖЕ ТЕМУ НАКОНЕЦ. Еще раз - для особо талантливых: выбраем счет фактуры за период. В результате запроса нужно получить счет фактуру + сальдо по бухии на ДатуВремя счета-фактуры по контрагенту из счета-фактуры. |
|||
18
Alxesp
11.02.16
✎
15:49
|
(16) Зачем нам остаток на момент регистратора?
Нам нужен остаток на ДатуВремя Счета-фактуры, который регистратором не является. |
|||
19
Alxesp
11.02.16
✎
15:50
|
Или проблема слишком сложная или программисты перестали заходить на мисту - одни троли.
|
|||
20
hhhh
11.02.16
✎
15:57
|
(18) ну тогда вообще детская задача, берете счета-фактуры и левое соединение с таблицей ОстаткиОбороты с периодичностью секунда.
|
|||
21
hhhh
11.02.16
✎
15:58
|
(18) поручите какому нибудь падавану ее, чего вы сами заморачиваетесь на такую фигню?
|
|||
22
zak555
11.02.16
✎
16:00
|
делаем запрос к РБостаки с субконто ДокументРассчёта
|
|||
23
Фрэнки
11.02.16
✎
16:01
|
(19) да задачка слишком простая :)
вот как выше начали предлагать К выборке Контрагентов из счетФактур Левое соединение из остатки обороты Или Вам хочется иметь остаток с актуальностью до ТА СчетФактуры? Тогда одним запросом не сможете, т.к. у вас таблицы ОстаткиОбороты агрегируемая по параметру Период. |
|||
24
itlikbez
11.02.16
✎
16:01
|
(0) Такие задачи более естественно решать, используя цикл, а не запрос.
|
|||
25
cons74
11.02.16
✎
16:01
|
(19) лично я три раза перечитал (0) и нифига не понял. Так что переформируйте вопрос - иначе ответа не будет.
|
|||
26
asady
11.02.16
✎
16:03
|
(0)
1. выбираешь СФ за период и группируем по датам и контрагентам (договорам?) результат во временную таблицу ВТ1 2. выбираем остатки на начало периода с отбором по контрагентам из ВТ1 результат в ВТ2 3. выбираем обороты за период по контрагентам с периодичностью регистратор в разрезе контрагентов и дат результат ВТ3 4. выбираем все документы движения из ВТ3 с внутренним соединением с ВТ1 по контрагенту и дата<датаВТ1 и группируем для получения суммарных оборотов на дату результат ВТ4 5. соединяем ВТ4 и ВТ2 по контрагенту суммируя для получения полного остатка на дату |
|||
27
zak555
11.02.16
✎
16:07
|
(26) сразу попрут с экзамена за запрос к документам
|
|||
28
Фрэнки
11.02.16
✎
16:08
|
(26) а я бы просто из основной таблицы регистра выгребал тогда уже все движения приход расход и получал остаток из Приход - Расход
зы Хорошая задачка. извращенная, да! |
|||
29
ks_83
11.02.16
✎
16:08
|
(24) Такие задачи обычно являются следствием нелепых хотелок постановщика, непонимания сути текущей проблемы и неверного ведения учета.
|
|||
30
Фрэнки
11.02.16
✎
16:09
|
(27) не к документам, а к ВТ по документам
|
|||
31
zak555
11.02.16
✎
16:10
|
(30) а вт из документов как формируется ?
|
|||
32
asady
11.02.16
✎
16:13
|
(27) получение списка контрагентов и дат СФ можно сделать и из регистра если чо - это не принципиально в данной задаче - можно вообще грузить из ТЗ.
весь смысл в следующих пунктах - п1. подготовительный |
|||
33
zak555
11.02.16
✎
16:16
|
(32) пока задача в 0 не ясна
|
|||
34
su_mai
11.02.16
✎
16:18
|
(17) А чо ты тут разорался то? Нормально сформулируй задачу.
|
|||
35
asady
11.02.16
✎
16:20
|
(33) это самая банальная задача по получению остатков (курсов валют) на дату документа
решали уже много раз разными способами - тот что я описал в (26) самый распространенный и уже разобран давно эту задачу любят давать на собеседованиях в качестве теста |
|||
36
su_mai
11.02.16
✎
16:22
|
(35) Корелированный подзапрос, называется
|
|||
37
Kamelot
11.02.16
✎
16:23
|
(17)делай циклом не ипи моск.
тебе потом еще читать этот запрос через пару недель. |
|||
38
GANR
11.02.16
✎
16:26
|
(0) Отговорить заказчика от хотелки, путь к решению которой лежит через запрос в цикле ))).
|
|||
39
GANR
11.02.16
✎
16:35
|
+(38) А если серьезно, то разве что через соединение таблиц документов с таблицей ОстаткиИОбороты с периодичностью Регистратор.
|
|||
40
Alxesp
11.02.16
✎
17:37
|
(20) (23) Период в ОстаткиИОбороты только в моменты движения.
На произвольную секунду нельзя. |
|||
41
Alxesp
11.02.16
✎
17:38
|
(26) Пожалуй верно. Но весьма сложно.
|
|||
42
Alxesp
11.02.16
✎
17:42
|
(35) Ну тут не курсы валют.
На 1-й взгляд проще, но в результате все гораздо сложнее. |
|||
43
hhhh
11.02.16
✎
17:46
|
(40) то есть надо взять регистратор следующий за счет фактурой по мементу движений.
|
|||
44
hhhh
11.02.16
✎
17:47
|
(40) второй вариант: просто поставить галку на счет-факиуре, что он - регистратор этого регистра.
|
|||
45
Фрэнки
11.02.16
✎
20:01
|
(40) Я же так и написал, что все таблицы, о который тут в ветке вспоминают, агрегатные - им не получится воспользоваться в такой задаче не задавая параметром ТА
Можно только передирать все движения регистра непосредственно и резать эту относительно большу таблу условием с вхождением в СФ и по времену раньше ТА из каждой СФ. Естественно, что будут попадать очень много уже обнулившихся. |
|||
46
APXi
11.02.16
✎
20:32
|
Вот так сделают запросом на 100500 строк и 30 ВТ, а потом через год сидят и вспоминают, что они этим запросом хотели сделать.
Иногда лучше медленно, но понятно. И тебе проще и тем кто сопровождать будет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |