Создание макета отчета скд 1с 8.2. Макеты скд
Очень часто в запросах 1С приходится работать с датами. Особенно когда запрос строится к объектам метаданных в которых содержится периодическая информация. Как правило это регистры (сведений, накопления, расчета, бухгалтерии). Рассмотрим наиболее часто используемые функции языка запросов 1С для работы с датами. Примеры будем строить на основе регистра сведений РаботникиОрганизаций Конфигурации ЗУП редакция 2.5.
ДАТАВРЕМЯ
Позволяет получить в запросе дату (со временем или без) путем указания года, месяца, дня, часа, минуты, секунды.
Синтаксис:
ДАТАВРЕМЯ(Год, Месяц, День, Час, Минута, Секунда)
Обычно час, минута и секунда не указываются. Давайте приведем мини пример. Введите в консоли запросов следующий текст:ВЫБРАТЬ ДАТАВРЕМЯ(2016, 1, 1)
В результате выполнения запроса получаем дату - 01.01.2016
На самом деле трудно представить ситуацию в которой в запросе дата будет указываться таким образом. Ведь когда надо указать период используются параметры. Но есть случай когда эта функция представляет особую ценность. Это когда нам надо в полях или в условиях запроса указать пустую дату. Напомню, что для языка 1С пустая дата имеет вид - 0001.01.01. Таким образом, чтобы получить пустую дату в запросе достаточно указать ДАТАВРЕМЯ(1, 1, 1) . В качестве примера выберем из регистра сведений РаботникиОрганизаций записи у которых не заполнен ПериодЗавершения :ВЫБРАТЬ РаботникиОрганизаций.Период, РаботникиОрганизаций.Сотрудник, РаботникиОрганизаций.Должность, РаботникиОрганизаций.ПодразделениеОрганизации ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций ГДЕ РаботникиОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(1, 1, 1)
НАЧАЛОПЕРИОДА
Для указанной даты возвращает начало периода в который она входит.
Синтаксис:
НАЧАЛОПЕРИОДА(Дата, ТипПериода)
ТипПериода может принимать следующие значения: МИНУТА, ЧАС, ДЕНЬ, НЕДЕЛЯ, МЕСЯЦ, КВАРТАЛ, ГОД, ДЕКАДА, ПОЛУГОДИЕ
В консоли запросов введите:ВЫБРАТЬ НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2016, 1, 15), МЕСЯЦ)
Запрос вернет - 01.01.2016
А теперь пример. Как известно периодичность у регистра РаботникиОрганизаций один день. Составим запрос в котором вместо действительного периода записей будет отображаться дата начала месяца.ВЫБРАТЬ НАЧАЛОПЕРИОДА(РаботникиОрганизаций.Период, МЕСЯЦ) КАК НачалоМесяца, РаботникиОрганизаций.Сотрудник, РаботникиОрганизаций.Должность, РаботникиОрганизаций.ПодразделениеОрганизации ИЗ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
КОНЕЦПЕРИОДА
Синтаксис такой же как и у начала периода. И как ясно из названия возвращает конец периода по дате и типу периода. Подробно рассматривать не будем. Ограничимся мини примером.
Запрос:ВЫБРАТЬ КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2016, 1, 15), МЕСЯЦ)
Возвращает 31.01.2016 23:59:59
Как видим значение возвращается с точностью до секунды.ДОБАВИТЬКДАТЕ
Добавляет к дате указанное количество временных интервалов.
Синтаксис:
ДОБАВИТЬКДАТЕ(Дата, ТипПериода, Количество)
ТипПериода принимает те же значения, что и для функции НАЧАЛОПЕРИОДА
Для примера выберем февральскую дату:ВЫБРАТЬ ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2016, 2, 15), МЕСЯЦ, 2)
Получаем дату 15.04.2016 0:00:00 Несмотря на то, что февраль короткий месяц, день полученной даты тот же самый, что и у исходной. Очень удобно, что не приходится задумываться о количестве дней в месяцах.
Количество может быть и отрицательным. Тогда отсчет интервала производится в обратную сторону.РАЗНОСТЬДАТ
Расчитыват разность между двумя датами в указанных единицах измерения.
Синтаксис:
РАЗНОСТЬДАТ(ДатаНачала, ДатаОкончания, ТипПериода)
Тип периода может принимать значения: СЕКУНДА, МИНУТА, ЧАС, ДЕНЬ, МЕСЯЦ, КВАРТАЛ, ГОД
Например:ВЫБРАТЬ РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2016, 2, 15), ДАТАВРЕМЯ(2016, 3, 1), ДЕНЬ)
возвращает 15
Здесь были рассмотрены наиболее часто употребляемые функции языка запросов 1С. Остальные применяются достаточно редко. При необходимости примеры работы с ними можно посмотреть в справке, встроенной в платформу 1С.
Песочница
Леонид Якубович 23 августа 2011 в 10:22Макеты в 1С 8.2 - это не сложно (Часть 1 - Создание макета)
Допустим, Вам необходимо вывести подобный отчет:
Данный отчет можно легко построить с помощью системы компоновки данных (СКД), особенно, если все необходимые данные хранятся в одном справочнике. Однако давайте попробуем вывести тот же самый отчет с помощью макета.
Для формирования данного отчета необходим один справочник «Сотрудники» с реквизитами «ДатаРождения», «Должность». Пусть фамилия, имя и отчество сотрудника хранятся вместе в одном поле по умолчанию – «Наименование». Для указания должности сотрудника существует другой простой справочник «Должности» с полями по умолчанию. Структура необходимых справочников приведена на рисунке ниже.
Теперь создадим новый отчет и назовем его «СписокСотрудников». Перейдем на вкладку «Макеты» и создадим новый макет типа «ТабличныйДокумент».
Перед нами откроется пустой табличный документ, готовый к работе. Теперь нам нужно представить необходимый отчет в виде макета.
Для этого сначала скопируем исходный отчет в чистый табличный документ, т.е. в макет отчета. Получится что-то вроде этого:
Приведем макет в порядок – сделаем выравнивание заголовков по центру, для таблицы зададим отображение границ и удалим из таблицы все данные, кроме первой записи. Она у нас будет для образца.
Разобьем готовый отчет на области следующим образом:
Для каждой области необходимо присвоить соответствующее имя, для этого необходимо выделить нужную область (в данном случае все области представляют собой группы строк) и нажать на кнопку с пиктограммой, или комбинацию клавиш Ctrl+Shift+N. В появившемся окне нужно вписать имя данной области. Назовем области так, как они указаны на рисунке.
Теперь те ячейки таблицы, в которых должны выводиться данные из информационной базы, необходимо обозначить как содержащие шаблон. Для этого выделяется это поле, и в контекстном меню (правая клавиша мыши) выбирается «Свойства». В выпадающем списке свойства ячейки «Заполнение» необходимо выбрать «Шаблон» (пример на рисунке ниже).
После этого если в тексте ячейки встретится выражение в квадратных скобках, то оно будет восприниматься системой 1С как параметр. Например, если текст ячейки следующий:
Меня зовут [МоеИмя],
То для вывода текста «Меня зовут Иван» достаточно параметру «МоеИмя»
присвоить значение «Иван».
В нашем случае шаблоном будет дата вывода отчета, а также все столбцы из строки, содержащей данные сотрудника. В итоге после всех манипуляций макет отчета будет выглядеть следующим образом:
На этом создание макета завершено. Теперь нужно программно сформировать отчет из сформированных областей и отобразить его.
Теги: 1С 8, макет, отчеты, макеты