Вывод остатков (и продаж) за каждый день в 1С

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

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

В настройках отчета для вывода ресурса настроить — после всех полей. Тогда ресурсы (продажи) выводятся на пересечении полей номенклатуры и даты!

Сделал такой отчет:

настройка "располагать ресурсы по вертикали" — делает строку остаток+приход; и строку "продажа".

итоги по вертикали — нет (оно суммирует и остатки тоже за все периоды, а это уже чушь);

итоги по горизонтали — нет (продажа понятно, но оно суммирует и остатки за все периоды — а это уже чушь)



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

 

Чтобы выводить  остатки за каждый день, недостаточно включить автодополнение в поле "период". Необходимо получить список дат за период, а после на эти даты вычислять остатки и продажи.

 Даты  за все дни периода берут:

- из производственного календаря в УПП;

- из справочника с валютными курсами, который изменяется ежедневно (в торговле);

- формируют хитрым запросом;

- формируют на языке 1С, помещают в таблицу значений и  передают в запрос в качестве параметра.

 

В Далионе я лично взял даты из доков ОКС, так как доки ОКС в рознице формируются КАЖДЫЙ ДЕНЬ.

Вот выборка дат из ОКС за указанный период:

ВЫБРАТЬ РАЗЛИЧНЫЕ

НачалоПериода(ОтчетКассовойСмены.Дата, День)КАК Дата

ИЗ

Документ.ОтчетКассовойСмены КАК ОтчетКассовойСмены

ГДЕ ОтчетКассовойСмены.Дата МЕЖДУ НачалоПериода(&НачалоОтчет, День) И КонецПериода(&КонецОтчета, День)


Помещаю результаты по временную таблицу, и далее делаю выборку приходов и остатков за каждую дату указанного периода!

 

 Вот теория

https://forum.infostart.ru/forum9/topic110654/

 

3. ildarovich 7579 21.05.14 09:24

Это очень распространенная и многократно решенная задача. Посмотрите, например,
Запрос по остаткам регистра накопления на каждый день или Запрос выдающий данные на каждую дату периода. Прочитайте сопутствующие обсуждения. Там есть полезные дополнения и другие варианты. Например, об использовании постобработки результатов запроса в СКД для ускорения решения. Если же хотите считать среднее, то остатки на каждый день вообще не нужны!

 

Вот на сайте Гилева четко все описано и дан пример запроса

http://www.gilev.ru/%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BA%D0%B8-%D0%BD%D0%B0-%D0%BA%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9-%D0%B4%D0%B5%D0%BD%D1%8C/

 

Вот у Гилева получение остатков на каждый день — понял, и по этой основе сделал отчет с ежедневными остатками и продажами 20.11.22

 

Стандартная выборка из виртуального регистра остатков и оборотов не показывает остатки на периодах, в которых нет оборотов. В СКД, то есть вне запроса проблема легко решается, а для использования внутри запроса приходится «городить огород». У многих это выливается в несколько запросов, тогда как можно обойтись и одним. Остатки здесь получаются суммированием оборотов. По тому же принципу платформа рассчитывает остатки внутри периода хранения итогов.

 


На инфостарте публикация "Остатки на каждый день" - не понял

Опубликовано 28.02.2016 автором admin

http://infostart.ru/public/102435/

 

 

Вот работающий запрос — вывод остатки по дням, продажи по дням на конец периода 20.11.22

ВЫБРАТЬ РАЗЛИЧНЫЕ

НАЧАЛОПЕРИОДА(ОтчетКассовойСмены.Дата, ДЕНЬ) КАК ДатаСтроки

ПОМЕСТИТЬ ВТ_Даты

ИЗ

Документ.ОтчетКассовойСмены КАК ОтчетКассовойСмены

ГДЕ

ОтчетКассовойСмены.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ

Движения.Номенклатура КАК Номенклатура,

ВТ_Даты.ДатаСтроки КАК Период1,

ЕСТЬNULL(ОстаткиНоменклатурыВРозницеОстаткиИОбороты.КоличествоПриход, 0) КАК ОстатокПлюсПриход,   // РСА Это только приход, без остатка. Название поля не верное?

СУММА(ВЫБОР

КОГДА Движения.Период = &НачалоПериода

ТОГДА ЕСТЬNULL(Движения.КоличествоКонечныйОстаток,0)

ИНАЧЕ ВЫБОР

КОГДА Движения.Период<=ВТ_Даты.ДатаСтроки

ТОГДА ЕСТЬNULL(Движения.КоличествоОборот,0)

ИНАЧЕ 0

КОНЕЦ

КОНЕЦ) КАК КолвоКонечныйОстаток,

СУММА(ВЫБОР

КОГДА Движения.Период = ВТ_Даты.ДатаСтроки

ТОГДА ЕСТЬNULL(Движения.КоличествоРасход, 0)

ИНАЧЕ 0

КОНЕЦ) КАК КоличествоРасход

ИЗ

ВТ_Даты КАК ВТ_Даты,

РегистрНакопления.ОстаткиНоменклатурыВРознице.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, ДвиженияИГраницыПериода, Склад = &ВыбСклад) КАК Движения

СГРУППИРОВАТЬ ПО

Движения.Номенклатура,

ВТ_Даты.ДатаСтроки

 

 

// В исходном образце у Гилева выводились только остатки.

// Для добавления продаж никаких левых соединений делать не пришлось.

// Просто добавил еще поле для выборки и все. Добавил как СУММУ строк.

СУММА(ВЫБОР

КОГДА Движения.Период = ВТ_Даты.ДатаСтроки

ТОГДА ЕСТЬNULL(Движения.КоличествоРасход, 0)

ИНАЧЕ 0

КОНЕЦ) КАК КоличествоРасход

 

// Если просто добавить "расход", то там их на дату много, так что получается фигня — вообще расход не показывался!

// Движения.КоличествоРасход КАК КоличествоРасход - так не работает

 

  20.11.22

 

??? А как вывести таблицу по периодам в неделю? Как получить список недель?

А зачем вообще получить список дней? В СКД ведь можно сделать дополнение периодов - дней, недель? Или в этом случае не получится получать остаток на конец каждого дня? Остатки будут только на периоды, где были движения?

Что то за забыл - какие поля доступны в вирт таблице РегистрНакопления.ОстаткиНоменклатурыВРознице.ОстаткиИОбороты?

Запрос все-таки не рабочий? Смотри рабочий запрос!!!

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

 

 

10.12.22