Доброе утро, помогите нарисовать такой отчет на СКД,
Два периода и сопоставить их по дням недели... Как можно реализовать ?
Два периода и сопоставить их по дням недели... Как можно реализовать ?
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ) КАК Период,
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ)) КАК ДеньНедели
ПОМЕСТИТЬ ВР
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода1, &КонецПериода1, Авто, ) КАК ПродажиОбороты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ),
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ))
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода2, &КонецПериода2, Авто, ) КАК ПродажиОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВР.ПериодДень КАК ПериодДень,
ВР.ДеньНедели КАК ДеньНедели
ИЗ
ВР КАК ВР
СГРУППИРОВАТЬ ПО
ВР.ПериодДень,
ВР.ДеньНедели
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Внешний отчет на СКД "Ошибки и предупреждения журнала регистрации". Для любой типовой конфигурации 1С: Предприятие 8.3
- Внешний отчет на СКД "Ошибки технологического журнала". Для любой типовой конфигурации 1С: Предприятие 8.3
- Доработка типового отчета на СКД с помощью расширения
- По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета
- Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД
Найденные решения
Я вот недавно что-то похожее делал:
(только здесь регистр накопления по-другому называется, вставьте свое название)
ВЫБРАТЬ РАЗЛИЧНЫЕ
НЕДЕЛЯ(ПродажиОбороты.ПериодДень)-НЕДЕЛЯ(&НачалоПериода1) КАК НомерНедели,
НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ) КАК ПериодДень,
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ)) КАК ДеньНедели
ПОМЕСТИТЬ Вт1
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода1, &КонецПериода1, Авто, ) КАК ПродажиОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
НЕДЕЛЯ(ПродажиОбороты.ПериодДень)-НЕДЕЛЯ(&НачалоПериода2) КАК НомерНедели,
НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ) КАК ПериодДень,
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ)) КАК ДеньНедели
ПОМЕСТИТЬ Вт2
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода2, &КонецПериода2, Авто, ) КАК ПродажиОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
isnull(Вт1.НомерНедели,Вт2.НомерНедели) КАК НомерНедели,
isnull(Вт1.ДеньНедели,Вт2.ДеньНедели) КАК ДеньНедели,
МИНИМУМ(Вт1.ПериодДень) КАК ПериодДень1,
МИНИМУМ(Вт2.ПериодДень) КАК ПериодДень2
ИЗ
Вт1 КАК Вт1
ПОЛНОЕ СОЕДИНЕНИЕ Вт2 КАК Вт2
ПО (Вт1.ДеньНедели = Вт2.ДеньНедели)
и (Вт1.НомерНедели = Вт2.НомерНедели)
СГРУППИРОВАТЬ ПО
isnull(Вт1.НомерНедели,Вт2.НомерНедели),
isnull(Вт1.ДеньНедели,Вт2.ДеньНедели)
УПОРЯДОЧИТЬ ПО
НомерНедели,
ДеньНедели,
ПериодДень1,
ПериодДень2
Показать(только здесь регистр накопления по-другому называется, вставьте свое название)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
При таком запросе
Будет такая таблица
Для двух таких таблиц уже дело техники соединить по дням и номерам недели
ВЫБРАТЬ РАЗЛИЧНЫЕ
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
ДЕНЬНЕДЕЛИ(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря) КАК ДеньНедели,
РАЗНОСТЬДАТ(НачалоПериода(&ДатаНачалаПериод1, Неделя), НачалоПериода(РегламентированныйПроизводственныйКалендарь.ДатаКалендаря, Неделя), День)/7 +1 КАК НомерНедели
ИЗ
РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ДатаНачалаПериод1 И &ДатаОкончанияПериод1
Будет такая таблица
Для двух таких таблиц уже дело техники соединить по дням и номерам недели
Прикрепленные файлы:
Я вот недавно что-то похожее делал:
(только здесь регистр накопления по-другому называется, вставьте свое название)
ВЫБРАТЬ РАЗЛИЧНЫЕ
НЕДЕЛЯ(ПродажиОбороты.ПериодДень)-НЕДЕЛЯ(&НачалоПериода1) КАК НомерНедели,
НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ) КАК ПериодДень,
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ)) КАК ДеньНедели
ПОМЕСТИТЬ Вт1
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода1, &КонецПериода1, Авто, ) КАК ПродажиОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
НЕДЕЛЯ(ПродажиОбороты.ПериодДень)-НЕДЕЛЯ(&НачалоПериода2) КАК НомерНедели,
НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ) КАК ПериодДень,
ДЕНЬНЕДЕЛИ(НАЧАЛОПЕРИОДА(ПродажиОбороты.ПериодДень, ДЕНЬ)) КАК ДеньНедели
ПОМЕСТИТЬ Вт2
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериода2, &КонецПериода2, Авто, ) КАК ПродажиОбороты
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
isnull(Вт1.НомерНедели,Вт2.НомерНедели) КАК НомерНедели,
isnull(Вт1.ДеньНедели,Вт2.ДеньНедели) КАК ДеньНедели,
МИНИМУМ(Вт1.ПериодДень) КАК ПериодДень1,
МИНИМУМ(Вт2.ПериодДень) КАК ПериодДень2
ИЗ
Вт1 КАК Вт1
ПОЛНОЕ СОЕДИНЕНИЕ Вт2 КАК Вт2
ПО (Вт1.ДеньНедели = Вт2.ДеньНедели)
и (Вт1.НомерНедели = Вт2.НомерНедели)
СГРУППИРОВАТЬ ПО
isnull(Вт1.НомерНедели,Вт2.НомерНедели),
isnull(Вт1.ДеньНедели,Вт2.ДеньНедели)
УПОРЯДОЧИТЬ ПО
НомерНедели,
ДеньНедели,
ПериодДень1,
ПериодДень2
Показать(только здесь регистр накопления по-другому называется, вставьте свое название)
Какая-то странная таблица в примере. 31.07 - среда и 01.08 - среда.
Хотелось бы точнее узнать задание. Если следовать из красоты вывода, то нужно разбивать по неделям (в примере это не так, и первый столбец обрывается на среде).
Если делать красиво, и разбивать по неделям, то нужно:
1) Выделить день недели и номер недели. Отнести номера недели с 1 по N к первому столбцу, номера недели с N+1 по M - ко второму столбцу.
2) Получить таблицу (дата, номер недели, день недели) первого столбца и второго столбца.
3) Соединить таблицы первого и второго столбцов полным соединением по условию:
Т1.НомерНедели+N = Т2.НомерНедели
И Т1.ДеньНедели = Т2.ДеньНедели
Хотелось бы точнее узнать задание. Если следовать из красоты вывода, то нужно разбивать по неделям (в примере это не так, и первый столбец обрывается на среде).
Если делать красиво, и разбивать по неделям, то нужно:
1) Выделить день недели и номер недели. Отнести номера недели с 1 по N к первому столбцу, номера недели с N+1 по M - ко второму столбцу.
2) Получить таблицу (дата, номер недели, день недели) первого столбца и второго столбца.
3) Соединить таблицы первого и второго столбцов полным соединением по условию:
Т1.НомерНедели+N = Т2.НомерНедели
И Т1.ДеньНедели = Т2.ДеньНедели
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот