Меню

1с запрос по дням за каждый день

Запрос для получения остатков по дням даже если не было движений

Период Номенклатура Количество
01.05.2016 Товар 01 4
11.05.2016 Товар 01 3
16.05.2016 Товар 01 2
31.05.2016 Товар 01 2

Нам же в рамках нашей задачи нужна таблица, показывающая остаток на каждый день месяца:

Период Номенклатура Количество
01.05.2016 Товар 01 4
02.05.2016 Товар 01 4
03.05.2016 Товар 01 4
04.05.2016 Товар 01 4
05.05.2016 Товар 01 4
06.05.2016 Товар 01 4
07.05.2016 Товар 01 4
08.05.2016 Товар 01 4
09.05.2016 Товар 01 4
10.05.2016 Товар 01 4
11.05.2016 Товар 01 3
12.05.2016 Товар 01 3
13.05.2016 Товар 01 3
14.05.2016 Товар 01 3
15.05.2016 Товар 01 3
16.05.2016 Товар 01 2
17.05.2016 Товар 01 2
18.05.2016 Товар 01 2
19.05.2016 Товар 01 2
20.05.2016 Товар 01 2
21.05.2016 Товар 01 2
22.05.2016 Товар 01 2
23.05.2016 Товар 01 2
24.05.2016 Товар 01 2
25.05.2016 Товар 01 2
26.05.2016 Товар 01 2
27.05.2016 Товар 01 2
28.05.2016 Товар 01 2
29.05.2016 Товар 01 2
30.05.2016 Товар 01 2
31.05.2016 Товар 01 2

Посмотрим как мы можем это получить. Вот текст самого запроса:

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

Номенклатура Период (таблица периодов) Период (таблица регистра)
Товар 01 15.05.2016 01.05.2016
Товар 01 15.05.2016 11.05.2016
Номенклатура Период (таблица периодов) Период (таблица регистра)
Товар 01 15.05.2016 11.05.2016

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

Источник

Остатки на каждый день в запросе

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

(9) Прогнал запрос у себя. Да есть такое дело. Решение Вы уже описали. Если нужны остатки взаиморасчетов по дням например с 2.01.2017 по 1.27.2017 тогда параметр НачалоПериода устанавливаем на конец предыдущего дня, то есть 1.01.2017 23:59:59. В таком случае в результирующей таблице мы будем видеть корректные остатки начиная с 2.01.2017.

Это конечно не глюк, скорее специфика работы системы. Я когда-то разбирался, пытался понять из-за чего так происходит. Если память мне не изменяет, то такое поведение образуется из-за

Остаток на каждый месяц по счету 02 для бух корп

ни запрос из статьи ни запрос из (18) не работают в случае отсутствия товара на остатках на НачалоПериода, но его появления на остатках потом. Такой возможностью не стоит пренебрегать

вот вроде рабочий запрос

таким же образом (казалось бы!) можно получить и Начальный остаток. и Приход/ Расход
но тут есть свои подводные камни.

1-ый далеко НЕ во всех конфигурациях есть РегистрСведений.РегламентированныйПроизводственныйКалендарь
«легко» заменяем на Таблицу Значений. не забывая определить тип поля и правильно посчитав число нужных дней!

2-ой Совсем не такие условия нужны для Начального остатка. помучаться придётся. чтоб ещё 2-ое условие добавить

3-ий остатки и движения по Товарам на складах (о ужас!) не всегда совпадают с движениями по Партиям товаров на складах, а нам, например, надо сравнивать эти движения с Продажами и Поступлениями!
(при ордерной схеме, как «обычно» и бывает у многих, Закупка и Продажи НЕ совпадают с движением по складу!)

Источник

АйТиБложик

Маленький IT блог с характером 1С.

Получение остатков и оборотов по каждому товару на каждый день запросом

Как-то на собеседовании мне прилетело тестовое задание, в котором одним из пунктов было получение остатков и оборотов по каждому товару на каждый день одним запросом. Делюсь своим вариантом решения в надежде что кто-то в комментариях поделится своим вариантом решения.

Вся соль задачи состоит в том, что обращения к виртуальной таблице остатков и оборотов в запросе не достаточно, так как эта виртуальная таблица содержит периоды, по которым были движения, если так можно выразиться (см. рисунок 1). Иными словами, если Товар №1 поступил в магазин в начале недели (в понедельник) в количестве 5ти штук и за неделю не было ни одной продажи, то виртуальная таблица по этому товару за эту неделю выдаст лишь одну запись за понедельник, которая будет отражать остатки на начало и конец дня, приход (+5), расход (0) и оборот (0).

Данную задачу я решил разделить на несколько подзадач, ведь слона легче есть кусками, чем сразу целиком. Получились такие подзадачи:

Первая подзадача решается довольно просто. Создаем таблицу значений с колонкой Дата. Зная границы периода, в цикле заполняем таблицу датами на каждый день.

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

В результате выполнения запроса получим даты на каждый день, что нам и нужно было. Так же на просторах интернета можно найти получение дат на каждый день только одним запросом, не прибегая к написанию дополнительного программного кода, но это уже больше отдельная тема для обсуждения. Если же в конфигурации имеется регистр сведений, который хранит какие-то данные на каждый день, то смело можно использовать его и задача упрощается до обычной выборки дат из этого регистра.

Вторая подзадача не сложнее первой, необходимо создать запрос, в котором обращаемся к таблице товаров и к виртуальной таблице остатков и оборотов, главное правильно указать параметры виртуальной таблицы и выбрать нужный тип соединения таблиц.

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA3
Рисунок 1. Остатки и обороты по товару «Стол дуб.» за 2015 год

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

%25D0%25A1%25D0%25BD%25D0%25B8%25D0%25BC%25D0%25BE%25D0%25BA2
Рисунок 2. Промежуточная таблица с ключом соединения по товару и периоду

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

Конечный текст пакета запросов:

Скорость выполнения запроса на реальных данных не замерял, по оптимальности ничего не скажу. Если убрать из запроса обороты, то можно получить только остатки на каждый день, причем на начало и на конец дня.

Источник

  • Из какого материала выбрать кровать для спальни
  • Что такое резюме и как его составить правильно - что именно надо указать о себе
  • Школьная форма для мальчиков и девочек в России и в мире
  • Что такое база отдыха и какими они бывают? Выбор базы отдыха для компании на выходные
  • Саудовская Аравия - информацию о стране и о визах для туристов

  • Добавить комментарий