Скд работа с датами

Использование дат

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

После этого пользователь сможет вводить в параметры данных только значения дат, без времени.

Для того чтобы введенные значения интерпретировалось в отчете как начало и конец дня следует в запросе использовать функции НачалоПериода() и КонецПериода() .

ВЫБРАТЬ
ПродажиОбороты.Контрагент,
ПродажиОбороты.Номенклатура,
ПродажиОбороты.КоличествоОборот,
ПродажиОбороты.СуммаОборот
ИЗ
РегистрНакопления.Продажи.Обороты(
<(НАЧАЛОПЕРИОДА(&ПериодНачало, ДЕНЬ))>,
<(КОНЕЦПЕРИОДА(&ПериодКонец, ДЕНЬ))>, , ) КАК ПродажиОбороты

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

Использование стандартных периодов

Система компоновки данных позволяет использовать стандартные периоды для указания периода отчета.

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

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

Пользователь будет редактировать параметр в следующем виде:

Для показанного примера в качестве значения параметра ПериодНачала будет использоваться дата 01.01.2019 , а в качестве значения параметра ПериодКонец будет использоваться дата 31.01.2019 .

Реальные значения дат для стандартного периода определяются при исполнении отчета. Таким образом, если выполнять отчет с установленным периодом Этот месяц в январе 2020-го года, то отчет будет исполняться с 01.01.2020 по 31.01.2020 , а если выполнять в феврале 2020-го года, то с 01.02.2020 по 29.02.2020

Читайте также  Регистрационный номер swat 4

Заметим, что даты начала и конца стандартного периода также содержат и время. Причем, начальная дата имеет время 00:00:00 , а конечная дата 23:59:59 , таким образом, в запросе не обязательно использовать функции НАЧАЛОПЕРИОДА и КОНЕЦПЕРИОДА .

Есть несколько вариантов вывода информации перед основным отчетом,какой лучше?! – зависит от задачи:

Допустим нам нужно вывести дату и время формирования отчета и свою шапку отчета, например так:

Варианты решения:

1. Использование группировки и макета заголовка:

1. Создаем в схеме новую группировку (без поля) и установим имя группировке Шапка отчета.

2. Удалим у данной группировки из выбранных полей автополе

В других настройках выберем макет оформления "Без оформления" (иначе на наш макет будет накладываться стандартный макет и вокруг всех ячеек будет рамка)

На вкладке макеты добавляем макет заголовка группировки (при добавлении указываем наше имя группировки (Шапка отчета) и указываем область с нашими данными), справа в табличном документе пишем необходимый текст и параметр

Сохраняем, формируем и видим результат как выше

2. Программное изменение текста заголовка

Код нужно установить в процедуре модуля отчета ПриКомпоновкеРезультата()

3. Вывод табличного макета с параметром перед формированием отчета

Создаем макет ВыводСформирован, в нем создаем параметр Сформирован и назначаем имя области Заголовок

Вопрос-ответ Отзывов (2) В закладки

Искал встроенную возможность добавить в отчет функции МАКС или МИН, однако ни чего не нашел и пришлось использовать конструкцию вида ВЫБОР КОГДА а>б ТОГДА а ИНАЧЕ б КОНЕЦ. Может кто подскажет как это сделать лучше чем я.

Исходно задача такая, в запросе есть два поля Вход и Выход. Нужно добавить третье поле (вероятно, вычисляемое поле), которое представляет собой МАКС(Вход, Выход).

Читайте также  Проверка php на вирусы

Кому интересно, пока искал составил такой вот список функций языка выражений:

1) Вычислить(«Сумма(Продажи.СуммаОборот)», «ОбщийИтог»)
2) Уровень()
3) НомерПоПорядку()
4) НомерПоПорядкуВГруппировке()
5) Формат(РасходныеНакладные.СуммаДок, «ЧДЦ=2″)
6) НачалоПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), «Месяц»)
7) КонецПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), «Неделя»)
8) ДобавитьКДате(ДатаВремя(2002, 10, 12, 10, 15, 34), «Месяц», 1)
9) РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), »ДЕНЬ»)
10) ПОДСТРОКА(Контрагенты.Адрес, 1, 4)
11) Строка(Контрагенты.Адрес)
12) ГОД(РасхНакл.Дата)
13) КВАРТАЛ(РасхНакл.Дата)
14) МЕСЯЦ(РасхНакл.Дата)
15) ДЕНЬГОДА(РасхНакл.Дата)
16) ДЕНЬ(РасхНакл.Дата)
17) НЕДЕЛЯ(РасхНакл.Дата)
18) ДЕНЬНЕДЕЛИ(РасхНакл.Дата)
19) ЧАС(РасхНакл.Дата)
20) МИНУТА(РасхНакл.Дата)
21) СЕКУНДА(РасхНакл.Дата)
22) Выразить(Данные.Реквизит1, «Число(10,3)»)
23) ЕстьNULL(Сумма(Продажи.СуммаОборот), 0)
24) Представление(Контрагент)
25) ЗначениеЗаполнено(ДатаДоставки)

Ссылка на основную публикацию
Adblock detector