Получение данных по неделям с помощью запроса
По теме из базы знаний
- Имитация таблицы остатков и оборотов при помощи запроса или как нарисовать несуществующее
- Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники
- Создание отчетов с помощью СКД - основные понятия и элементы
- Как читать чужой код? Часть 3. Разбор и доработка запросов
- WEB-курс «Интеграция и обмен данными» с 12 мая по 16 июня 2025 г.
Найденные решения
(3) Ну это же не сложно.
Вам надо в запросе получить опорную таблицу, в которой будет выборка в виде календарных дат в периоде между &датой начала и &датой окончания, а также номер недели этих дат и день недели этих дат. (для удобства группировок).
А потом к этой таблице приматывайте выборку значений (некий регистр накопления, с записями по периоду в виде "Дата и время"?).
Условия связи таблиц типа "ПредставленияПериоды.Дата = НачалоПериода(ВашРегистрНакопления.Период, день)"
Дарю запрос опорной таблицы периодов. (Упорядочить потом уберите, оно сейчас просто для "красоты в консоли")
ВЫБРАТЬ 0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ) КАК Период
ПОМЕСТИТЬ ПредставленияПериоды
ИЗ
ВТЦифры КАК Цифры
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99999)
ГДЕ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ)
МЕЖДУ &НачалоПериода И &ОкончаниеПериода
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТЦифры
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПредставленияПериоды.Период КАК Дата,
НЕДЕЛЯ(ПредставленияПериоды.Период) КАК НомерНедели,
ДЕНЬНЕДЕЛИ(ПредставленияПериоды.Период) КАК ДеньНедели
ИЗ
ПредставленияПериоды КАК ПредставленияПериоды
Упорядочить по Дата Автоупорядочивание
Вам надо в запросе получить опорную таблицу, в которой будет выборка в виде календарных дат в периоде между &датой начала и &датой окончания, а также номер недели этих дат и день недели этих дат. (для удобства группировок).
А потом к этой таблице приматывайте выборку значений (некий регистр накопления, с записями по периоду в виде "Дата и время"?).
Условия связи таблиц типа "ПредставленияПериоды.Дата = НачалоПериода(ВашРегистрНакопления.Период, день)"
Дарю запрос опорной таблицы периодов. (Упорядочить потом уберите, оно сейчас просто для "красоты в консоли")
ВЫБРАТЬ 0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ) КАК Период
ПОМЕСТИТЬ ПредставленияПериоды
ИЗ
ВТЦифры КАК Цифры
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99999)
ГДЕ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ)
МЕЖДУ &НачалоПериода И &ОкончаниеПериода
;
////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТЦифры
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПредставленияПериоды.Период КАК Дата,
НЕДЕЛЯ(ПредставленияПериоды.Период) КАК НомерНедели,
ДЕНЬНЕДЕЛИ(ПредставленияПериоды.Период) КАК ДеньНедели
ИЗ
ПредставленияПериоды КАК ПредставленияПериоды
Упорядочить по Дата Автоупорядочивание
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Ну это же не сложно.
Вам надо в запросе получить опорную таблицу, в которой будет выборка в виде календарных дат в периоде между &датой начала и &датой окончания, а также номер недели этих дат и день недели этих дат. (для удобства группировок).
А потом к этой таблице приматывайте выборку значений (некий регистр накопления, с записями по периоду в виде "Дата и время"?).
Условия связи таблиц типа "ПредставленияПериоды.Дата = НачалоПериода(ВашРегистрНакопления.Период, день)"
Дарю запрос опорной таблицы периодов. (Упорядочить потом уберите, оно сейчас просто для "красоты в консоли")
ВЫБРАТЬ 0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ) КАК Период
ПОМЕСТИТЬ ПредставленияПериоды
ИЗ
ВТЦифры КАК Цифры
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99999)
ГДЕ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ)
МЕЖДУ &НачалоПериода И &ОкончаниеПериода
;
////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТЦифры
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПредставленияПериоды.Период КАК Дата,
НЕДЕЛЯ(ПредставленияПериоды.Период) КАК НомерНедели,
ДЕНЬНЕДЕЛИ(ПредставленияПериоды.Период) КАК ДеньНедели
ИЗ
ПредставленияПериоды КАК ПредставленияПериоды
Упорядочить по Дата Автоупорядочивание
Вам надо в запросе получить опорную таблицу, в которой будет выборка в виде календарных дат в периоде между &датой начала и &датой окончания, а также номер недели этих дат и день недели этих дат. (для удобства группировок).
А потом к этой таблице приматывайте выборку значений (некий регистр накопления, с записями по периоду в виде "Дата и время"?).
Условия связи таблиц типа "ПредставленияПериоды.Дата = НачалоПериода(ВашРегистрНакопления.Период, день)"
Дарю запрос опорной таблицы периодов. (Упорядочить потом уберите, оно сейчас просто для "красоты в консоли")
ВЫБРАТЬ 0 КАК Цифра
ПОМЕСТИТЬ ВТЦифры
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ) КАК Период
ПОМЕСТИТЬ ПредставленияПериоды
ИЗ
ВТЦифры КАК Цифры
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры1000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры10000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 9999)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦифры КАК Цифры100000
ПО (РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), НАЧАЛОПЕРИОДА(&ОкончаниеПериода, ДЕНЬ), ДЕНЬ) > 99999)
ГДЕ
НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, Цифры.Цифра + ЕСТЬNULL(Цифры10.Цифра, 0) * 10 + ЕСТЬNULL(Цифры100.Цифра, 0) * 100 + ЕСТЬNULL(Цифры1000.Цифра, 0) * 1000 + ЕСТЬNULL(Цифры10000.Цифра, 0) * 10000 + ЕСТЬNULL(Цифры100000.Цифра, 0) * 100000), ДЕНЬ)
МЕЖДУ &НачалоПериода И &ОкончаниеПериода
;
////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ВТЦифры
;
////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПредставленияПериоды.Период КАК Дата,
НЕДЕЛЯ(ПредставленияПериоды.Период) КАК НомерНедели,
ДЕНЬНЕДЕЛИ(ПредставленияПериоды.Период) КАК ДеньНедели
ИЗ
ПредставленияПериоды КАК ПредставленияПериоды
Упорядочить по Дата Автоупорядочивание
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот