|
Остатки на каждый день в запросе. | ☑ | ||
---|---|---|---|---|
0
Zombi
17.01.20
✎
00:34
|
Шел третий час ночи. Соображаю слабо, а к утру обработку починить надо. Запрос остатков на каждый день.
ВЫБРАТЬ РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.Дата КАК Дата ПОМЕСТИТЬ Дни ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.Дата МЕЖДУ &НачалоПериода И &КонецПериода ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Движения.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура, ДНИ.Дата КАК ДатаКалендаря, СУММА(ВЫБОР КОГДА Движения.Период = &НачалоПериода ТОГДА Движения.КоличествоНачальныйОстаток ИНАЧЕ ВЫБОР КОГДА Движения.Период <= ДНИ.Дата ТОГДА Движения.КоличествоОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ) КАК КоличествоКонечныйОстаток, ЕСТЬNULL(Движения.Партия.Ссылка, &ПустоеПриобретение) КАК ПартияСсылка, Движения.АналитикаУчетаНоменклатуры.МестоХранения КАК АналитикаУчетаНоменклатурыМестоХранения ИЗ Дни КАК ДНИ ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьТоваров.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Движения ПО (Движения.Период <= ДНИ.Дата) ГДЕ Движения.АналитикаУчетаНоменклатуры.Номенклатура В ИЕРАРХИИ(&СписокГрупп) И Движения.АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО Движения.АналитикаУчетаНоменклатуры.Номенклатура, ДНИ.Дата, Движения.АналитикаУчетаНоменклатуры.МестоХранения, ЕСТЬNULL(Движения.Партия.Ссылка, &ПустоеПриобретение) Остатки нужны не на конец, а на начало каждого дня. Где сдвиг даты сделать? |
|||
1
xXeNoNx
17.01.20
✎
05:43
|
Делай на конец предыдущего дня, а в дате смещение пиши
|
|||
2
catena
17.01.20
✎
06:04
|
(0)Ночью надо спать) Начальный остаток - на начало, конечный - на конец.
|
|||
3
Zombi
17.01.20
✎
09:30
|
Че то воткнулся с этим запросом, до сих пор не могу победить. Сейчас этот запрос выдает правильный начальный остаток за первый день в периоде. Второй и последующий остаток возвращает на конец дня, да еще почему то как будто не видит оборот первого дня. Например начальный остаток у меня 316, первого числа расход 68, второго числа 36. Сейчас запрос возвращает за первое число 316, за второе 280. То есть оборот за первое число не видит из за условия КОГДА Движения.Период = &НачалоПериода. Не пойму, как получить остатки на начало каждого дня.
|
|||
4
palsergeich
17.01.20
✎
09:33
|
Начало дня это конец + 1 секунда.
Тебе надо просто понять куда эту секунду поставить, если прям не получается изменить текст. |
|||
5
Timon1405
17.01.20
✎
09:33
|
сделайте в СКД соединением наборов Дни и Движения по дате
|
|||
6
palsergeich
17.01.20
✎
09:37
|
А все понял.
СУММА(ВЫБОР КОГДА Движения.Период = &НачалоПериода ТОГДА Движения.КоличествоНачальныйОстаток ИНАЧЕ ВЫБОР КОГДА Движения.Период <= ДНИ.Дата ТОГДА Движения.КоличествоОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ) КАК КоличествоКонечныйОстаток Тут надо аккуратно изменить условие когда |
|||
7
palsergeich
17.01.20
✎
09:37
|
Ну или (5) так
|
|||
8
Zombi
17.01.20
✎
09:39
|
(4) Со вчерашнего дня не могу придумать, куда прибавлять :)
|
|||
9
Zombi
17.01.20
✎
09:41
|
(5) СКД тут не подойдет. Это обработка выгрузки данных поставщику, она потом в ХМЛ выгружает данные.
|
|||
10
Zombi
17.01.20
✎
09:42
|
(6) Второе "Когда"? Что поменять?
|
|||
11
yzimin
17.01.20
✎
09:43
|
(9) не CisLink случайно?)) У них там одна из таблиц именно такая)
|
|||
12
palsergeich
17.01.20
✎
09:43
|
Ну попробуй <= заменить на <
|
|||
13
catena
17.01.20
✎
09:44
|
да вы бредите. При периодичности день в ОстаткиИОбороты начальный остаток - на начало дня, конечный на конец. Уберите все условия, выведите все три ресурса и убедитесь.
|
|||
14
Zombi
17.01.20
✎
09:46
|
(11) Не.
(12) Пробовал, получается на 1 число остаток 316, на второе число 316, на третье число 280 |
|||
15
palsergeich
17.01.20
✎
09:46
|
(13) цыц, мы тут ищем ошибку в аггрегировании, а не хотим, что бы платформа сделала за нас
|
|||
16
catena
17.01.20
✎
09:46
|
(15)А... пятница.
|
|||
17
palsergeich
17.01.20
✎
09:47
|
(14) 4,5,6 и ТД уже пойдут как надотеперь ты понял, что у тебя сдвиг на сутки. Надо всего лишь это поправить.
|
|||
18
Zombi
17.01.20
✎
09:49
|
(13) Мы ж на каждый день остатки получаем. Поэтому на начало периода берем начальный остаток, а дальше соединяем по периоду с регламентированным календарем и берем поле оборот, а не начальный, конечный остаток
|
|||
19
palsergeich
17.01.20
✎
09:51
|
(16) и кстати да, если движений не будет, то и в запросе строки с этой записью не будет, а она должна быть
|
|||
20
yzimin
17.01.20
✎
09:54
|
а почему просто не прописать типа такого?
ДОБАВИТЬКДАТЕ(ДНИ.Дата, День, 1) КАК ДатаКалендаря |
|||
21
Zombi
17.01.20
✎
09:55
|
(17) Вот так:
СУММА(ВЫБОР КОГДА Движения.Период = &НачалоПериода ТОГДА Движения.КоличествоНачальныйОстаток ИНАЧЕ ВЫБОР КОГДА ДОБАВИТЬКДАТЕ(Движения.Период, ДЕНЬ, -1) < ДНИ.Дата ТОГДА Движения.КоличествоОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ) КАК КоличествоНачальныйОстаток, Получился результат как в (0) первое число 316, второе 280... |
|||
22
Zombi
17.01.20
✎
09:57
|
(20) Тогда с 2 числа выводит данные и второго числа остаток 316, третьего 280...
|
|||
23
catena
17.01.20
✎
09:59
|
(18)А, точно. прошу прощения. Отвыкла уже от решения подобного запросами)
|
|||
24
yzimin
17.01.20
✎
09:59
|
(22) РегламентированныйПроизводственныйКалендарь.Дата МЕЖДУ ДОБАВИТЬКДАТЕ(&НачалоПериода, День, -1) И &КонецПериода
? |
|||
25
catena
17.01.20
✎
10:00
|
(21)Мне кажется, он имел в виду добавить к дате,
ДОБАВИТЬКДАТЕ(ДНИ.Дата, ДЕНЬ, -1) КАК ДатаКалендаря, СУММА(ВЫБОР КОГДА Движения.Период = &НачалоПериода ТОГДА Движения.КоличествоНачальныйОстаток ИНАЧЕ ВЫБОР КОГДА Движения.Период <= ДНИ.Дата ТОГДА Движения.КоличествоОборот ИНАЧЕ 0 КОНЕЦ КОНЕЦ) КАК КоличествоКонечныйОстаток, |
|||
26
catena
17.01.20
✎
10:00
|
+(25)Только тогда надо на конечныйостаток исправить
|
|||
27
Zombi
17.01.20
✎
10:09
|
(24) Тогда за 1 число null
|
|||
28
Zombi
17.01.20
✎
10:10
|
(25) Щас так и пробуем.
|
|||
29
Ёпрст
17.01.20
✎
10:22
|
(0) для обычного запроса таблица с датами не нужна, нужео доаолнение к группировке запроса при обходе выборки. Усё
|
|||
30
NUser
17.01.20
✎
10:25
|
А какой смысл в этой временной таблице?
ВЫБРАТЬ РАЗЛИЧНЫЕ РегламентированныйПроизводственныйКалендарь.Дата КАК Дата ПОМЕСТИТЬ Дни ИЗ РегистрСведений.ДанныеПроизводственногоКалендаря КАК РегламентированныйПроизводственныйКалендарь ГДЕ РегламентированныйПроизводственныйКалендарь.Дата МЕЖДУ &НачалоПериода И &КонецПериода ; Если выбираются все дни периода производственного календаря. Снести её да сделать просто через ИТОГИ по периоду. |
|||
31
NUser
17.01.20
✎
10:29
|
+ (29) ага, чтобы в выборку попадал день без остатков скажем
|
|||
32
catena
17.01.20
✎
10:30
|
(30)Потому что даты без оборотов из регистра просто так не вытащить.
|
|||
33
NUser
17.01.20
✎
10:31
|
(32) читай 29 и 31
|
|||
34
Ёпрст
17.01.20
✎
10:31
|
(32) а от тут ты наконец, ошиблась)
|
|||
35
NUser
17.01.20
✎
10:32
|
(34) респект, есть ещё умные парни на сайте)
|
|||
36
Ёпрст
17.01.20
✎
10:32
|
Ну наконец то настал тот день, когда catena что-то не знает)
|
|||
37
yzimin
17.01.20
✎
10:34
|
(27) твоя задача сводится к тому, что просто в текущем запросе надо выводить+1 день, а период нач и кон в отчете задать -1 день
|
|||
38
catena
17.01.20
✎
10:35
|
(36)Я многа шта не знаю, я просто вовремя молчу обычно)))
|
|||
39
Zombi
17.01.20
✎
10:38
|
(30) Накидай, если не трудно в консоли примерный, запрос, который выведет остатки на начало каждого дня без использования вт с датами.
|
|||
40
NUser
17.01.20
✎
11:03
|
(39)
ВЫБРАТЬ РасчетыСКлиентамиОстаткиИОбороты.Период КАК ПолеПериод, РасчетыСКлиентамиОстаткиИОбороты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам, РасчетыСКлиентамиОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаНачальныйОстаток ИЗ РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , ) КАК РасчетыСКлиентамиОстаткиИОбороты ИТОГИ ПО АналитикаУчетаПоПартнерам, Период ПЕРИОДАМИ(ДЕНЬ, &НачалоПериода, &КонецПериода) Потом выборку из результата запроса обходить с параметрами: РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПолеПериод", "ВСЕ"); Получаем остатки на каждый день таким образом без лишнего головняка. |
|||
41
NUser
17.01.20
✎
11:06
|
+(40)в ИТОГИ ПО надо было указать агрегатную функцию СУММА(СуммаНачальныйОстаток)
|
|||
42
palsergeich
17.01.20
✎
11:11
|
(40) если движений в этот день нет, то и строчки не будет. А это ошибка
|
|||
43
Ёпрст
17.01.20
✎
11:41
|
(39) ща..
|
|||
44
Ёпрст
17.01.20
✎
11:41
|
хотя. в (40) уже всё есть
|
|||
45
Ёпрст
17.01.20
✎
11:42
|
(42) всё там будет.. там главное - обход группировки с "все"
|
|||
46
yalex
17.01.20
✎
12:03
|
(9) Так результат СКД можно легко выгрузить в коллекцию значений(таблицу значений), а оттуда в xml
|
|||
47
X Leshiy
17.01.20
✎
12:18
|
(40) Запрос в цикле лучше!!!
|
|||
48
Zombi
18.01.20
✎
09:55
|
Спасибо всем!
|
|||
49
NUser
21.01.20
✎
04:45
|
(42) Если движений нет то на этот день будет остаток 0. Ты не понял просто.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |