Как получить запросом остатки или обороты за каждый день?
Вставка
- Опубліковано 26 лис 2024
- Как можно меня отблагодарить: pay.cloudtips....
В данном видео мы рассмотрим получение запросом остатков на каждый день в периоде, а также получение оборотов на каждый день.
Запросы такого типа используются при расчете оборачиваемости какого-нибудь показателя (дебиторки, остатков на складе, резервов по заказам и др.), динамики показателей за период.
Похожая задача с выводом оборотов на каждый день при помощи СКД рассмотрена в видео:
• Как сделать на СКД отч...
Добавляйте в закладки мой сайт 1c.alexcode.ru... с полезными материалами по настройке и программированию 1С
Курс «Разработчик 1С с нуля»
1c.alexcode.ru/
Индивидуальное обучение 1С
1c.alexcode.ru...
Видео также размещено на моем Дзен-канале «1С с Леоновым»: dzen.ru/video/...
автору огромная благодарность за подробное объяснение.
но есть ремарка: тк подразумевается получение остатков на конец даты, то конец периода следует задавать с временем 23:59:59, иначе в выборку не попадают движения последнего дня.
также, позволю себе дополнить: в случае когда требуется получить информацию по списку номенклатуры (в тч информацию об отсутствии остатков/движений), а не только по той, что есть в регистре, нужно будет предварительно к таблице с периодами декартово соединить таблицу с номенклатурой. и уже эту таблицу (ДниНоменклатура) соединить с таблицей остатков и оборотов (Остатки) по ДниНоменклатура.Товар = Остатки.Номенклатура и ДниНоменклатура.Период >= Остатки.Период
Добрый день! Отличное дополнение к материалу, спасибо!
Спасибо)) целый день возился с расширением периода в скд, пытался менять его везде)) а потом нашел ваше видео, прям супер. Видел ещё реализацию, которая привязана к 1 году, а здесь на это нет ограничений. Мне нужно было в одном случае выводить остаток, в другом оборот и учитывать каждый месяц.
Благодарю за отзыв! Всегда приятно, когда трудился не напрасно, и видео оказалось полезным.
Спасибо, очень полезно.
Люблю причинять людям пользу :)
Еще пара маленьких придирок:
1) Все же лучше не просто декартово соединить две таблицы, а соединить с условием на период. К-во строк до группировки будет в 2 раза меньше.
2) Не надо городить каскадные CASE'ы. Так код короче:
ВЫБОР
КОГДА ... ТОГДА ...
КОГДА ... ТОГДА ...
ИНАЧЕ ...
КОНЕЦ
О! Годные замечания! Попробую на досуге оптимизировать.🤝
если соединить с условием на период, то из выборки выпадут дни, в которые по товару не было движений.
а если нужны свободные остатки? т.е. за минусом регистр РезервыТоваров
Подход точно такой же, только исходный запрос получится с левым соединением с таблицей резервов. Я бы сперва во временную таблицу получил свободные остатки с учетом резервов, и уже эту ВТ присоединял бы к таблице дат.
Мелкая придирка: В получении таблицы чисел не нужно делать "ОБЪЕДИНИТЬ", нужно делать "ОБЪЕДИНИТЬ ВСЕ" - это менее затратная операция, в выборке используются и так уникальные значения.
Справедливо! Объединить еще дополнительно выполняет операцию группировки, а объединить все - не выполняет. И т.к. у нас уникальные числа, то действительно целесообразнее использовать "Объединить все"