Запрос выдающий данные на каждую дату периода

Пример простого запроса для извлечения данных на каждую дату в периоде. Применимо в специфичных случаях использования СКД и при формировании отчетов.

Пример простого запроса для извлечения данных на каждую дату в периоде.

Применимо в специфичных случаях использования СКД и при формировании отчетов.  Принцип работы достаточно прост —  все даты берутся из регистра «РегламентированныйПроизводственныйКалендарь», что в общем логично — а затем посредством объединения присоединяются к данным. Всё ужасно просто — но часто бывает что достаточно тривиальные и лежащие на поверхности вещи в голову приходят не сразу Smile. Может кому-то и пригодиться….

Текстовой файл содержит текст запроса. В качестве примера используется извлечение остатка товара по партиям на конец каждого дня. В запросе используется три таблицы : РегламентированныйПроизводственныйКалендарь — для получения списка дат и соединение двух одинаковых таблиц ОстаткиИОбороты с периодичностью День  — для получения таблицы периодов в рамках которых не происходило изменений количества…. ну а далее простое соединение полученного — результат представлен на скриншоте.

 

10 Comments

  1. Famza

    Уже только за одну «Единую Гвинею» можно плюсовать. Жжешь! 😀

    Reply
  2. ildarovich

    Можно обойтись и без производственного календаря (а вдруг его нет в конфигурации или он неправильно заполнен). Для этого можно сформировать искусственную таблицу дат в заданном диапазоне с помощью запроса наподобие Порождающий запрос. В комментариях к указанной статье приведены другие решения той же задачи:Комментарий со ссылками.

    Reply
  3. Mudrii_Gankster

    Спасибо за запросик, потестю

    Reply
  4. Smaylukk

    Вот как раз забросить во временную таблицу запроса таблицу значений с датами в СКД нельзя сделать. Разве что через набор данных «Объект» (по крайней мере в 8.1 так). А это в свою очередь убивает всю простоту. Да и как уже отметили — не во всех конфигурациях есть требуемые регистры.

    Reply
  5. Boroda

    А для ЗУП (или УПП) очень даже, думаю, подойдёт! Тем более задач по работе с календарём — море, т.к. почти все расчёты основаны на рабочем времени. И зачастую требуется привести фактическое рабочее время к плановому, к норме. Так что, и за идею, и за саму обработку ПЛЮС.

    Reply
  6. Angeros

    Вроди как баян.

    Reply
  7. WellMaster

    Суть задачи понял, когда-то пытался решить на запросах — не решил. Пришлось кодом 1с на каждый день периода запускать запрос (грубо, долго, но работает).

    Предлагаемое решение не понял (никак не соображу, за счет чего в результирующей таблице появляются строки с датами, по которым не было движений регистра накоплений). Курю запрос дальше.

    Reply
  8. JER_MARK

    Ага, вот эта генерация чисел — мудро конечно, но все-таки легче набросать производственный календарь ))) Мне это попалось при подготовке к экзамену по 1с:спец

    Reply
  9. Laertid

    Вообще-то СКД умеет из виртуального регистра ОстаткиИОбороты напрямую доставать остатки. А чтобы добавить недостающие дни, надо в группировке Дата во вкладочке группировка в Дополнение выбрать День, а в данных с остатками в описнании данных (там, где выбирается Период/измерение/Остаток) выбрать как раз остаток. Тогда СКД добавит дни без оборотов.

    И более того, она будет правильно считать итоги по начальным-конечным остаткам >_< Не знаю, как оно реализовано у Вас (нет валюты скачать файлик глянуть), но судя по описанию — тем же способом, к которому пришел и я в конце концов. *пересечение одинаковых таблиц по неравенству в дате в условиях, правильно?*

    *к сожалению, посмотреть файлик не могу, так что если я не прав — извиняюсь, но тогда ваша идея усложнена, мне кажется. Одна таблица ОстаткиИОбороты в СКД работает наилучшим способом, если вы хотите получить ежедневные остатки.

    Reply
  10. kostik_love
    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *