1с скд остатки на каждый день периода
1с скд остатки на каждый день
also Что-то вроде FAQ Отзывов (29) В закладки
С задачей получения среза последних на каждую дату рано или поздно сталкиваются все. Безусловно, это задача достаточно просто решается запросом с соединением по максимальной дате из меньших или равных дат. Но эту же задачу можно решить и с помощью компоновки данных. Не будем рассуждать о том, какой из способов более производителен, все может зависеть от конкретной задачи.
Первый набор данных:
В качестве примера, создадим отчет по продажам, в котором отдельной колонкой будем выводить цену из прайса на дату продажи.
Создадим набор данных-запрос “ПродажиОбороты”:
Рис. 1 Вкладка ресурсы набора данных ПродажиОбороты
Рис. 2 Настройки отчета
Сейчас наш отчет будет иметь следующий вид:
Рис. 3 Формирование отчета с одним набором данных
Теперь необходимо добавить в отчет колонку “Цена по прайсу”, которая будет подтягиваться из регистра сведений “Цены номенклатуры” на дату продажи.
Второй набор данных:
Добавим второй набор данных-запрос “Цены”, цены будем брать для фиксированного типа цен:
В данном наборе данных три параметра: Дата, Номенклатура и тип цен. Из низ самые интересные Дата и Номенклатура. Они будут использованы при соединении наборов данных, причем параметр данных присутствует как в параметрах виртуальной таблицы, так и в выбранных полях.
Соединения наборов:
Приступим к основной “фишке” данного метода – соединениям наборов:
Рис. 4 Соединение наборов данных
Здесь самое основное правильно настроить параметры. Если указан параметр,то СКД передает в приемник связи параметры, указанные в соединении. Значениями этих параметров будут значения соответствующих полей источника связи.
Далее добавим поле цена в ресурсы и в выбранные поля.
Рис. 5 Вкладка ресурсы
Рис. 6 Выбранные поля
Результат:
Теперь можно формировать отчет. Проверим правильность работы отчета на примере “Дивана для отдыха”.
Рис. 7 Итоговый отчет
В запросе:
По просьбе andreo рассмотрим решение этой же задачи в запросе. Данная задача может быть решена как с использованием вложенных запросов, так и с помощью. временных таблиц. Попробуем решить задачу, используя временные таблицы. Сначала приведем весь текст запроса, а потом кратко разберем по частям принцип его работы.
Данный пакетный запрос содержит три подзапроса. Рассмотрим их подробнее.
Первый запрос пакета группирует данные по периоду, контрагенту и номенклатуре и помещает их во временную таблицу втБезЦены. Далее мы будем соединять эту таблицу с таблицей цен номенклатуры и получим небольшой выигрыш в том, что соединять будем уже сгруппированные данные.
Во втором подзапросе мы соединяем временную таблицу с регистром сведений “ЦеныНоменклатуры” при этом из регистра сведений мы выбираем МАКСИМАЛЬНУЮ дату из меньших или равных дат. Результат этого подзапроса также помещаем во временную таблицу (втМаксПериод). Посмотрим, какие данные попадают в эту таблицу:
Рис. 8 Временная таблица втМаксПериод
В последнем запросе пакета, мы еще раз соединяем временную таблицу с таблицей цен номенклатуры. На этот мы соединяем таблице по номенклатуре и периоду.
Итоговый результат запроса:
Рис. 9 Итоговый результат запроса
Как мы видим результаты вывода цен в обоих случаях (через СКД и через запрос) оказались одинаковы.
Примеры по программированию в 1с 7.7, 8.1, 8.2
понедельник, 9 февраля 2015 г.
1с Запрос 8.2 Остатки на каждый день периода, без движений
Пример запроса 1с 8.2, когда не было движения за период, а необходимо вывести остатки.
Где «ВремТз» — это таблица значений, заполненная датами за месяц:
ВремТз = Новый ТаблицаЗначений;
ВремТз.Колонки.Добавить(«Период»,Новый ОписаниеТипов(«Дата»));
Для сч =0 по Разница Цикл
День_=НачПериода+сч*86400;
ВремТз.Добавить().период = День_;
КонецЦикла;
Вот только запросом:
ВЫБРАТЬ РАЗЛИЧНЫЕ
0 КАК Период
ПОМЕСТИТЬ Дни
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&Началопериода, ДЕНЬ, ДНИ.Период) КАК Период,
Движения.Склад,
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоКонечныйОстаток
ИНАЧЕ ВЫБОР
КОГДА Движения.Период
Как получить остатки на каждый день по регистру накопления?
Как Вы обычно решаете эту проблему?
(1) barm, Подобный запрос, для получения остатков на каждый день, для бухгалтерии, смысл, я думаю, уловите:
ВЫБРАТЬ
ХозрасчетныйОстаткиИОбороты.Период,
ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаНачальныйОстатокКт,
ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.ВалютнаяСуммаКонечныйОстатокКт,
ХозрасчетныйОстаткиИОбороты.Валюта,
ХозрасчетныйОстаткиИОбороты.Субконто1,
ХозрасчетныйОстаткиИОбороты.Субконто2,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт,
ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт
ПОМЕСТИТЬ ВТ_Остатки
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
&ДатаНачала,
&ДатаОкончания,
День,
ДвиженияИГраницыПериода,
Счет В ИЕРАРХИИ (&Счет),
,
Субконто1 = &Контрагент
И Субконто2 = &Договор
И Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
;
X
ВЫБРАТЬ
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
ВложенныйЗапрос.Субконто1,
ВложенныйЗапрос.Субконто2,
ВложенныйЗапрос.Валюта
ПОМЕСТИТЬ ВТ_Календарь
ИЗ
РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь,
(ВЫБРАТЬ
ВТ_Остатки.Субконто1 КАК Субконто1,
ВТ_Остатки.Субконто2 КАК Субконто2,
ВТ_Остатки.Валюта КАК Валюта
ИЗ
ВТ_Остатки КАК ВТ_Остатки
СГРУППИРОВАТЬ ПО
ВТ_Остатки.Субконто1,
ВТ_Остатки.Субконто2,
ВТ_Остатки.Валюта) КАК ВложенныйЗапрос
ГДЕ
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачала И &ДатаОкончания
;
X
ВЫБРАТЬ
ВложенныйЗапрос.Субконто1 КАК Контрагент,
ВложенныйЗапрос.Субконто2 КАК Договор,
ВложенныйЗапрос.Дата КАК Дата,
ЕСТЬNULL(ВТ_Остатки.ВалютнаяСуммаНачальныйОстатокДт, 0) КАК ВалютныйОстатокНачалоДт,
ЕСТЬNULL(ВТ_Остатки.ВалютнаяСуммаНачальныйОстатокКт, 0) КАК ВалютныйОстатокНачалоКт,
ЕСТЬNULL(ВТ_Остатки1.ВалютнаяСуммаКонечныйОстатокДт, 0) КАК ВалютныйОстатокКонецДт,
ЕСТЬNULL(ВТ_Остатки1.ВалютнаяСуммаКонечныйОстатокКт, 0) КАК ВалютныйОстатокКонецКт,
ЕСТЬNULL(ВТ_Остатки.СуммаНачальныйОстатокДт, 0) КАК РублевыйОстатокНачалоДт,
ЕСТЬNULL(ВТ_Остатки.СуммаНачальныйОстатокКт, 0) КАК РублевыйОстатокНачалоКт,
ЕСТЬNULL(ВТ_Остатки1.СуммаКонечныйОстатокДт, 0) КАК РублевыйОстатокКонецДт,
ЕСТЬNULL(ВТ_Остатки1.СуммаКонечныйОстатокКт, 0) КАК РублевыйОстатокКонецКт
ИЗ
(ВЫБРАТЬ
МИНИМУМ(ВТ_Остатки.Период) КАК ПериодНач,
МАКСИМУМ(ВТ_Остатки1.Период) КАК ПериодКон,
ВТ_Календарь.ДатаКалендаря КАК Дата,
ВТ_Календарь.Субконто1 КАК Субконто1,
ПРЕДСТАВЛЕНИЕ(ВТ_Календарь.Субконто1) КАК Субконто1Представление,
ВТ_Календарь.Субконто2 КАК Субконто2,
ПРЕДСТАВЛЕНИЕ(ВТ_Календарь.Субконто2) КАК Субконто2Представление,
ВТ_Календарь.Валюта КАК Валюта,
ПРЕДСТАВЛЕНИЕ(ВТ_Календарь.Валюта) КАК ВалютаПредставление
ИЗ
ВТ_Календарь КАК ВТ_Календарь
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ВТ_Календарь.ДатаКалендаря = ВТ_Остатки1.Период
И ВТ_Календарь.Субконто2 >= ВТ_Остатки1.Субконто2
СГРУППИРОВАТЬ ПО
ВТ_Календарь.ДатаКалендаря,
ВТ_Календарь.Субконто1,
ВТ_Календарь.Субконто2,
ВТ_Календарь.Валюта) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ВложенныйЗапрос.ПериодНач = ВТ_Остатки.Период
И ВложенныйЗапрос.Субконто2 = ВТ_Остатки.Субконто2
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки1
ПО ВложенныйЗапрос.ПериодКон = ВТ_Остатки1.Период
И ВложенныйЗапрос.Субконто2 = ВТ_Остатки1.Субконто2
УПОРЯДОЧИТЬ ПО
Контрагент,
Договор,
Дата
Запрос для получения остатков по дням даже если не было движений
Период | Номенклатура | Количество |
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 |
. и мы получаем полезную таблицу, в которой есть номенклатура, период конкретного дня отчета, и дата максимального периода из таблицы регистра, по которому можно вытащить актуальную для этого дня цифирку.
Запрос по остаткам регистра накопления на каждый день
Отсюда можно взять очень полезный запрос с календариком » Работаем с датами в запросе «.
(7) ildarovich, Вы поторопились группировать по номенклатуре, ведь движение на дату может быть null, запрос топикастера более верный. Но он не учитывает варианта, когда товар вообще появился на складе после начала периода, во-вторых, остатки обачно нужны на конец дня, а не начало, в этом случае поможет отнимание оборотов от конечного остатка(&КонецПериода оканчивается на 23:59:59):
ВЫБРАТЬ
ТоварыНаСкладах2Обороты.Период,
-ТоварыНаСкладах2Обороты.КоличествоОборот КАК КоличествоОборот,
ТоварыНаСкладах2Обороты.Номенклатура
ПОМЕСТИТЬ Движения
ИЗ
РегистрНакопления.ПартииНоменклатуры.Обороты(
&НачалоПериода,
&КонецПериода,
День,
Номенклатура = &ном
И склад = &склад) КАК ТоварыНаСкладах2Обороты
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Дни.Период КАК Период,
Движения.Номенклатура КАК Номенклатура,
СУММА(Движения.КоличествоОборот) КАК КоличествоОстаток
ИЗ
тДаты КАК Дни
ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК Движения
ПО (Движения.Период > Дни.Период)
СГРУППИРОВАТЬ ПО
Дни.Период,
Движения.Номенклатура
. здесь также есть недостатки. Окончательный вариант приведен в комментарии (14)
(14) Да, классно, конечно!
Но мне понадобилось выбрать и начальный, и обороты (и приход, и расход) и конечный. Выкрутился так, в подчиненном запросе все кроме начальных остатков, по приниципу как в 14-м комменте у ildarovich, а уже из подчиненного по конечному и обороту вычисляю начальный в «верхнем» запросе, т.е. так:
Но может можно красивее или еще какую критику кто-то выскажет?
(14)
Если в РН по отборам будет пусто. Итоговая таблица тоже будет пустая.
Чуть модифицировал (16) для случая, когда периоды нам нужны исключительно до указанной даты. Так же в запросе добавил выборку регистраторов, которые двигали указанную номенклатуру в пределах дня:
(32) Не много по другому сделал
ВЫБРАТЬ
0 КАК Р
ПОМЕСТИТЬ Разряды
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТаблицаДат.Период КАК ТДПериод,
МАКСИМУМ(ВТ_Остатки.Период) КАК ПериодРО,
ВТ_Остатки.Номенклатура
ПОМЕСТИТЬ ВТ_БлижайшиеДатыОстатков
ИЗ
ТаблицаДат КАК ТаблицаДат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ПО ТаблицаДат.Период >= ВТ_Остатки.Период
СГРУППИРОВАТЬ ПО
ТаблицаДат.Период,
ВТ_Остатки.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ_БлижайшиеДатыОстатков.ТДПериод КАК ТДПериод,
ВТ_Остатки.Номенклатура,
ВЫБОР
КОГДА ТДПериод = ВТ_Остатки.Период
ТОГДА ВТ_Остатки.КоличествоНачальныйОстаток
ИНАЧЕ КоличествоКонечныйОстаток
КОНЕЦ КАК КоличествоНачальныйОстаток,
ВЫБОР
КОГДА ТДПериод = ВТ_Остатки.Период
ТОГДА ВТ_Остатки.КоличествоПриход
ИНАЧЕ 0
КОНЕЦ КАК КоличествоПриход,
ВЫБОР
КОГДА ТДПериод = ВТ_Остатки.Период
ТОГДА ВТ_Остатки.КоличествоРасход
ИНАЧЕ 0
КОНЕЦ КАК КоличествоРасход, ВТ_Остатки.КоличествоКонечныйОстаток,
ТоварыНаСкладахОбороты.Регистратор
ИЗ
ВТ_БлижайшиеДатыОстатков КАК ВТ_БлижайшиеДатыОстатков
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОбороты
ПО ВТ_Остатки.Период = НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ)
ПО ВТ_БлижайшиеДатыОстатков.ПериодРО = ВТ_Остатки.Период
И ВТ_БлижайшиеДатыОстатков.Номенклатура = ВТ_Остатки.Номенклатура
Дополнение периодов в системе компоновки данных
Для некоторых отчетов необходимо получать данные на все периоды в заданном интервале. Например, получать остатки по дням, вне зависимости от того, были ли движения за эти дни. Система компоновки данных позволяет указывать для группировок дополнение периодов с заданной периодичностью в указанном интервале.
Для примера, рассмотрим отчет, который выводит остатки и обороты за указанный период.
Данные будем получать при помощи следующего запроса:
Для отчета будем использовать следующие настройки:
Т.е. в отчет будем выдавать группировку по периоду и диаграмму группировкой по периоду в сериях.
Если мы будем получать отчет с группировкой по периоду без дополнения, то результат отчета будет выглядеть следующим образом:
Параметры данных: | НачалоПериода = 01.02.2002 0:00:00 | |
КонецПериода = 28.02.2002 23:59:59 |
Период день | Количество начальный остаток | Количество оборот | Количество конечный остаток |
01.02 | 189 | -53 | 136 |
02.02 | 136 | 5 | 141 |
05.02 | 141 | -3 | 138 |
13.02 | 138 | 101 | 239 |
14.02 | 239 | -4 | 235 |
15.02 | 235 | -25 | 210 |
18.02 | 210 | -19 | 191 |
22.02 | 191 | 30 | 221 |
24.02 | 221 | -12 | 209 |
26.02 | 209 | -12 | 197 |
28.02 | 197 | 197 | |
Итого | 189 | 8 | 197 |
Как видно, дни, за которые отсутствовали движения, в отчет не выводятся, что не позволяет визуально отслеживать динамику изменения остатков.
Попробуем воспользоваться дополнением периодов, для этого включим у поля группировки тип дополнения День.
Результат отчета с этой настройкой будет выглядеть следующим образом:
Параметры данных: | НачалоПериода = 01.02.2002 0:00:00 | |
КонецПериода = 28.02.2002 23:59:59 |
Период день | Количество начальный остаток | Количество оборот | Количество конечный остаток |
01.02 | 189 | -53 | 136 |
02.02 | 136 | 5 | 141 |
03.02 | 141 | 141 | |
04.02 | 141 | 141 | |
05.02 | 141 | -3 | 138 |
06.02 | 138 | 138 | |
07.02 | 138 | 138 | |
08.02 | 138 | 138 | |
09.02 | 138 | 138 | |
10.02 | 138 | 138 | |
11.02 | 138 | 138 | |
12.02 | 138 | 138 | |
13.02 | 138 | 101 | 239 |
14.02 | 239 | -4 | 235 |
15.02 | 235 | -25 | 210 |
16.02 | 210 | 210 | |
17.02 | 210 | 210 | |
18.02 | 210 | -19 | 191 |
19.02 | 191 | 191 | |
20.02 | 191 | 191 | |
21.02 | 191 | 191 | |
22.02 | 191 | 30 | 221 |
23.02 | 221 | 221 | |
24.02 | 221 | -12 | 209 |
25.02 | 209 | 209 | |
26.02 | 209 | -12 | 197 |
27.02 | 197 | 197 | |
28.02 | 197 | 197 | |
Итого | 189 | 8 | 197 |
В данном результате видно, что остатки выдаются на все дни, даже если в эти дни не было движений.
При необходимости, для поля группировки можно указать интервал, в котором нужно дополнять периоды. Для этого следует ввести даты в колонки «Начальная дата периода» и «Конечная дата периода» поля группировки. При этом дополнение будет происходить не только в интервале дат, полученных из набора данных, но с начальной даты до конечной даты.
Для демонстрации этой возможности воспользуемся отчетом о продажах, в котором будем использовать следующий запрос:
Для примеров будем рассматривать вывод в отчет одной группировки по полю Период.
Результат отчета без дополнения будет выглядеть так:
Параметры данных: | НачалоПериода = 01.03.2002 0:00:00 | |
КонецПериода = 31.03.2002 23:59:59 |
Период | Количество оборот |
17.03.2002 0:00:00 | 52 |
20.03.2002 0:00:00 | 20 |
Итого | 72 |
Результат с дополнением по дням без указания интервала будет выглядеть так:
Параметры данных: | НачалоПериода = 01.03.2002 0:00:00 | |
КонецПериода = 31.03.2002 23:59:59 |
Период | Количество оборот |
17.03.2002 0:00:00 | 52 |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | 20 |
Итого | 72 |
Т.е. дополнение произошло в интервале, дат, которые были получены из набора данных.
Если у поля группировки установить начальную и конечную дату периода следующим образом:
То дополнение по дням произойдет в указанном интервале и результат отчета будет выглядеть так:
Параметры данных: | НачалоПериода = 01.03.2002 0:00:00 | |
КонецПериода = 31.03.2002 23:59:59 |
Период | Количество оборот |
01.03.2002 0:00:00 | |
02.03.2002 0:00:00 | |
03.03.2002 0:00:00 | |
04.03.2002 0:00:00 | |
05.03.2002 0:00:00 | |
06.03.2002 0:00:00 | |
07.03.2002 0:00:00 | |
08.03.2002 0:00:00 | |
09.03.2002 0:00:00 | |
10.03.2002 0:00:00 | |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | 52 |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | 20 |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
25.03.2002 0:00:00 | |
26.03.2002 0:00:00 | |
27.03.2002 0:00:00 | |
28.03.2002 0:00:00 | |
29.03.2002 0:00:00 | |
30.03.2002 0:00:00 | |
31.03.2002 0:00:00 | |
Итого | 72 |
Отметим, что в качестве начальных и конечных дат периода можно использовать не только даты, но и перечисление ТипДополненияПериодаКомпоновкиДанных, а также поле компоновки данных. Для выбора типа следует очистить содержимое поля и воспользоваться кнопкой выбора типа.
Параметры данных: | НачалоПериода = 01.03.2002 0:00:00 | |
КонецПериода = 31.03.2002 23:59:59 |
Период | Количество оборот |
01.03.2002 0:00:00 | |
02.03.2002 0:00:00 | |
03.03.2002 0:00:00 | |
04.03.2002 0:00:00 | |
05.03.2002 0:00:00 | |
06.03.2002 0:00:00 | |
07.03.2002 0:00:00 | |
08.03.2002 0:00:00 | |
09.03.2002 0:00:00 | |
10.03.2002 0:00:00 | |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | 52 |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | 20 |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
25.03.2002 0:00:00 | |
26.03.2002 0:00:00 | |
27.03.2002 0:00:00 | |
28.03.2002 0:00:00 | |
29.03.2002 0:00:00 | |
30.03.2002 0:00:00 | |
31.03.2002 0:00:00 | |
Итого | 72 |
Как видно в данном примере, дополнение произошло в интервале, указанном в параметрах данных.
Если в качестве границы интервала используется тип ТипДополненияПериодаКомпоновкиДанных, то дополнение будет осуществляться до ближайшей границы выбранного типа периода. Так, если в качестве начальной и конечной дат периода выбрать Месяц, то дополнение будет осуществляться с начала месяца первой даты, присутствующей в группировке и до конца месяца последней даты, присутствующей в группировке. Если выбрать в качестве границ выбрать значение Неделя, то периоды будут дополняться с начала недели и до конца недели. Другие типы дополнения отрабатываются аналогично.
Параметры данных: | НачалоПериода = 01.03.2002 0:00:00 | |
КонецПериода = 31.03.2002 23:59:59 |
Период | Количество оборот |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | 52 |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | 20 |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
Итого | 72 |
Данная возможность особенно полезна для создания отчетов, в которых группировка по периоду вложена в группировку по объемлющему периоду.
Рассмотрим следующую настройку:
В отчет будут выдаваться периоды, сгруппированные по месяцам.
Если для группировки по периоду установить в качестве начальной и конечной даты конкретные даты, то дополнение произойдет в рамках указанного периода, т.е. в отчет выведутся периоды, которые вовсе не находятся в текущей группировке по месяцам.
Параметры данных: | Начало периода = 01.01.2002 0:00:00 | |
Конец периода = 31.03.2002 23:59:59 |
Период месяц | Количество оборот |
Период | |
01.01.2002 0:00:00 | 67 |
01.01.2002 0:00:00 | |
02.01.2002 0:00:00 | |
03.01.2002 0:00:00 | |
04.01.2002 0:00:00 | |
05.01.2002 0:00:00 | |
06.01.2002 0:00:00 | |
07.01.2002 0:00:00 | |
08.01.2002 0:00:00 | |
09.01.2002 0:00:00 | |
10.01.2002 0:00:00 | 4 |
11.01.2002 0:00:00 | 29 |
12.01.2002 0:00:00 | |
13.01.2002 0:00:00 | |
14.01.2002 0:00:00 | |
15.01.2002 0:00:00 | |
16.01.2002 0:00:00 | 21 |
17.01.2002 0:00:00 | |
18.01.2002 0:00:00 | 3 |
19.01.2002 0:00:00 | |
20.01.2002 0:00:00 | |
21.01.2002 0:00:00 | 1 |
22.01.2002 0:00:00 | |
23.01.2002 0:00:00 | |
24.01.2002 0:00:00 | |
25.01.2002 0:00:00 | |
26.01.2002 0:00:00 | |
27.01.2002 0:00:00 | |
28.01.2002 0:00:00 | |
29.01.2002 0:00:00 | 9 |
30.01.2002 0:00:00 | |
31.01.2002 0:00:00 | |
01.02.2002 0:00:00 | |
02.02.2002 0:00:00 | |
03.02.2002 0:00:00 | |
04.02.2002 0:00:00 | |
05.02.2002 0:00:00 | |
06.02.2002 0:00:00 | |
07.02.2002 0:00:00 | |
08.02.2002 0:00:00 | |
09.02.2002 0:00:00 | |
10.02.2002 0:00:00 | |
11.02.2002 0:00:00 | |
12.02.2002 0:00:00 | |
13.02.2002 0:00:00 | |
14.02.2002 0:00:00 | |
15.02.2002 0:00:00 | |
16.02.2002 0:00:00 | |
17.02.2002 0:00:00 | |
18.02.2002 0:00:00 | |
19.02.2002 0:00:00 | |
20.02.2002 0:00:00 | |
21.02.2002 0:00:00 | |
22.02.2002 0:00:00 | |
23.02.2002 0:00:00 | |
24.02.2002 0:00:00 | |
25.02.2002 0:00:00 | |
26.02.2002 0:00:00 | |
27.02.2002 0:00:00 | |
28.02.2002 0:00:00 | |
01.03.2002 0:00:00 | |
02.03.2002 0:00:00 | |
03.03.2002 0:00:00 | |
04.03.2002 0:00:00 | |
05.03.2002 0:00:00 | |
06.03.2002 0:00:00 | |
07.03.2002 0:00:00 | |
08.03.2002 0:00:00 | |
09.03.2002 0:00:00 | |
10.03.2002 0:00:00 | |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
25.03.2002 0:00:00 | |
26.03.2002 0:00:00 | |
27.03.2002 0:00:00 | |
28.03.2002 0:00:00 | |
29.03.2002 0:00:00 | |
30.03.2002 0:00:00 | |
31.03.2002 0:00:00 | |
01.02.2002 0:00:00 | 128 |
01.01.2002 0:00:00 | |
02.01.2002 0:00:00 | |
03.01.2002 0:00:00 | |
04.01.2002 0:00:00 | |
05.01.2002 0:00:00 | |
06.01.2002 0:00:00 | |
07.01.2002 0:00:00 | |
08.01.2002 0:00:00 | |
09.01.2002 0:00:00 | |
10.01.2002 0:00:00 | |
11.01.2002 0:00:00 | |
12.01.2002 0:00:00 | |
13.01.2002 0:00:00 | |
14.01.2002 0:00:00 | |
15.01.2002 0:00:00 | |
16.01.2002 0:00:00 | |
17.01.2002 0:00:00 | |
18.01.2002 0:00:00 | |
19.01.2002 0:00:00 | |
20.01.2002 0:00:00 | |
21.01.2002 0:00:00 | |
22.01.2002 0:00:00 | |
23.01.2002 0:00:00 | |
24.01.2002 0:00:00 | |
25.01.2002 0:00:00 | |
26.01.2002 0:00:00 | |
27.01.2002 0:00:00 | |
28.01.2002 0:00:00 | |
29.01.2002 0:00:00 | |
30.01.2002 0:00:00 | |
31.01.2002 0:00:00 | |
01.02.2002 0:00:00 | 53 |
02.02.2002 0:00:00 | |
03.02.2002 0:00:00 | |
04.02.2002 0:00:00 | |
05.02.2002 0:00:00 | 3 |
06.02.2002 0:00:00 | |
07.02.2002 0:00:00 | |
08.02.2002 0:00:00 | |
09.02.2002 0:00:00 | |
10.02.2002 0:00:00 | |
11.02.2002 0:00:00 | |
12.02.2002 0:00:00 | |
13.02.2002 0:00:00 | |
14.02.2002 0:00:00 | 4 |
15.02.2002 0:00:00 | 25 |
16.02.2002 0:00:00 | |
17.02.2002 0:00:00 | |
18.02.2002 0:00:00 | 19 |
19.02.2002 0:00:00 | |
20.02.2002 0:00:00 | |
21.02.2002 0:00:00 | |
22.02.2002 0:00:00 | |
23.02.2002 0:00:00 | |
24.02.2002 0:00:00 | 12 |
25.02.2002 0:00:00 | |
26.02.2002 0:00:00 | 12 |
27.02.2002 0:00:00 | |
28.02.2002 0:00:00 | |
01.03.2002 0:00:00 | |
02.03.2002 0:00:00 | |
03.03.2002 0:00:00 | |
04.03.2002 0:00:00 | |
05.03.2002 0:00:00 | |
06.03.2002 0:00:00 | |
07.03.2002 0:00:00 | |
08.03.2002 0:00:00 | |
09.03.2002 0:00:00 | |
10.03.2002 0:00:00 | |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
25.03.2002 0:00:00 | |
26.03.2002 0:00:00 | |
27.03.2002 0:00:00 | |
28.03.2002 0:00:00 | |
29.03.2002 0:00:00 | |
30.03.2002 0:00:00 | |
31.03.2002 0:00:00 | |
01.03.2002 0:00:00 | 72 |
01.01.2002 0:00:00 | |
02.01.2002 0:00:00 | |
03.01.2002 0:00:00 | |
04.01.2002 0:00:00 | |
05.01.2002 0:00:00 | |
06.01.2002 0:00:00 | |
07.01.2002 0:00:00 | |
08.01.2002 0:00:00 | |
09.01.2002 0:00:00 | |
10.01.2002 0:00:00 | |
11.01.2002 0:00:00 | |
12.01.2002 0:00:00 | |
13.01.2002 0:00:00 | |
14.01.2002 0:00:00 | |
15.01.2002 0:00:00 | |
16.01.2002 0:00:00 | |
17.01.2002 0:00:00 | |
18.01.2002 0:00:00 | |
19.01.2002 0:00:00 | |
20.01.2002 0:00:00 | |
21.01.2002 0:00:00 | |
22.01.2002 0:00:00 | |
23.01.2002 0:00:00 | |
24.01.2002 0:00:00 | |
25.01.2002 0:00:00 | |
26.01.2002 0:00:00 | |
27.01.2002 0:00:00 | |
28.01.2002 0:00:00 | |
29.01.2002 0:00:00 | |
30.01.2002 0:00:00 | |
31.01.2002 0:00:00 | |
01.02.2002 0:00:00 | |
02.02.2002 0:00:00 | |
03.02.2002 0:00:00 | |
04.02.2002 0:00:00 | |
05.02.2002 0:00:00 | |
06.02.2002 0:00:00 | |
07.02.2002 0:00:00 | |
08.02.2002 0:00:00 | |
09.02.2002 0:00:00 | |
10.02.2002 0:00:00 | |
11.02.2002 0:00:00 | |
12.02.2002 0:00:00 | |
13.02.2002 0:00:00 | |
14.02.2002 0:00:00 | |
15.02.2002 0:00:00 | |
16.02.2002 0:00:00 | |
17.02.2002 0:00:00 | |
18.02.2002 0:00:00 | |
19.02.2002 0:00:00 | |
20.02.2002 0:00:00 | |
21.02.2002 0:00:00 | |
22.02.2002 0:00:00 | |
23.02.2002 0:00:00 | |
24.02.2002 0:00:00 | |
25.02.2002 0:00:00 | |
26.02.2002 0:00:00 | |
27.02.2002 0:00:00 | |
28.02.2002 0:00:00 | |
01.03.2002 0:00:00 | |
02.03.2002 0:00:00 | |
03.03.2002 0:00:00 | |
04.03.2002 0:00:00 | |
05.03.2002 0:00:00 | |
06.03.2002 0:00:00 | |
07.03.2002 0:00:00 | |
08.03.2002 0:00:00 | |
09.03.2002 0:00:00 | |
10.03.2002 0:00:00 | |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | 52 |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | 20 |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
25.03.2002 0:00:00 | |
26.03.2002 0:00:00 | |
27.03.2002 0:00:00 | |
28.03.2002 0:00:00 | |
29.03.2002 0:00:00 | |
30.03.2002 0:00:00 | |
31.03.2002 0:00:00 | |
Итого | 267 |
Как видно, группировка по периоду была дополнена в указанном интервале, и в результат попали строки, которые вовсе не относятся к месяцу группировки.
Результат будет выглядеть так:
Параметры данных: | Начало периода = 01.01.2002 0:00:00 | |
Конец периода = 31.03.2002 0:00:00 |
Период месяц | Количество оборот |
Период | |
01.01.2002 0:00:00 | 67 |
01.01.2002 0:00:00 | |
02.01.2002 0:00:00 | |
03.01.2002 0:00:00 | |
04.01.2002 0:00:00 | |
05.01.2002 0:00:00 | |
06.01.2002 0:00:00 | |
07.01.2002 0:00:00 | |
08.01.2002 0:00:00 | |
09.01.2002 0:00:00 | |
10.01.2002 0:00:00 | 4 |
11.01.2002 0:00:00 | 29 |
12.01.2002 0:00:00 | |
13.01.2002 0:00:00 | |
14.01.2002 0:00:00 | |
15.01.2002 0:00:00 | |
16.01.2002 0:00:00 | 21 |
17.01.2002 0:00:00 | |
18.01.2002 0:00:00 | 3 |
19.01.2002 0:00:00 | |
20.01.2002 0:00:00 | |
21.01.2002 0:00:00 | 1 |
22.01.2002 0:00:00 | |
23.01.2002 0:00:00 | |
24.01.2002 0:00:00 | |
25.01.2002 0:00:00 | |
26.01.2002 0:00:00 | |
27.01.2002 0:00:00 | |
28.01.2002 0:00:00 | |
29.01.2002 0:00:00 | 9 |
30.01.2002 0:00:00 | |
31.01.2002 0:00:00 | |
01.02.2002 0:00:00 | 128 |
01.02.2002 0:00:00 | 53 |
02.02.2002 0:00:00 | |
03.02.2002 0:00:00 | |
04.02.2002 0:00:00 | |
05.02.2002 0:00:00 | 3 |
06.02.2002 0:00:00 | |
07.02.2002 0:00:00 | |
08.02.2002 0:00:00 | |
09.02.2002 0:00:00 | |
10.02.2002 0:00:00 | |
11.02.2002 0:00:00 | |
12.02.2002 0:00:00 | |
13.02.2002 0:00:00 | |
14.02.2002 0:00:00 | 4 |
15.02.2002 0:00:00 | 25 |
16.02.2002 0:00:00 | |
17.02.2002 0:00:00 | |
18.02.2002 0:00:00 | 19 |
19.02.2002 0:00:00 | |
20.02.2002 0:00:00 | |
21.02.2002 0:00:00 | |
22.02.2002 0:00:00 | |
23.02.2002 0:00:00 | |
24.02.2002 0:00:00 | 12 |
25.02.2002 0:00:00 | |
26.02.2002 0:00:00 | 12 |
27.02.2002 0:00:00 | |
28.02.2002 0:00:00 | |
01.03.2002 0:00:00 | 72 |
01.03.2002 0:00:00 | |
02.03.2002 0:00:00 | |
03.03.2002 0:00:00 | |
04.03.2002 0:00:00 | |
05.03.2002 0:00:00 | |
06.03.2002 0:00:00 | |
07.03.2002 0:00:00 | |
08.03.2002 0:00:00 | |
09.03.2002 0:00:00 | |
10.03.2002 0:00:00 | |
11.03.2002 0:00:00 | |
12.03.2002 0:00:00 | |
13.03.2002 0:00:00 | |
14.03.2002 0:00:00 | |
15.03.2002 0:00:00 | |
16.03.2002 0:00:00 | |
17.03.2002 0:00:00 | 52 |
18.03.2002 0:00:00 | |
19.03.2002 0:00:00 | |
20.03.2002 0:00:00 | 20 |
21.03.2002 0:00:00 | |
22.03.2002 0:00:00 | |
23.03.2002 0:00:00 | |
24.03.2002 0:00:00 | |
25.03.2002 0:00:00 | |
26.03.2002 0:00:00 | |
27.03.2002 0:00:00 | |
28.03.2002 0:00:00 | |
29.03.2002 0:00:00 | |
30.03.2002 0:00:00 | |
31.03.2002 0:00:00 | |
Итого | 267 |
Как видно, дополнение внутри группировки по месяцу произошло только в рамках месяца, что и требовалось.