В свете ближайшего выхода 8.2.14, попытаюсь описать некоторые новые функции системы компоновки данных.
Открываем схему компоновки данных, желательно во внешнем отчете, чтобы было проще редактировать.
Добавляем набор данных типа запрос и пишем, либо вручную, либо с помощью конструктора запросов простейший запрос:
1. Настраиваем запрос в СКД.
2. Настраиваем вычисляемые поля в СКД
3. Выполняем настройку компоновки данных на закладке настройки
4. Запускаем 1С Предприятие 8.2.14. Открываем отчет. Формируем, получаем.
Описание самих новых функций:
1. ТекущаяДата()
Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТекущаяДата() заменяется значением текущей даты.
2. ВЫЧИСЛИТЬВЫРАЖЕНИЕ()
Синтаксис:
ВычислитьВыражение(,)
Описание:
Функция предназначена для вычисления выражения в контексте некоторой группировки.
Функция учитывает отбор группировок, но не учитывает иерархические отборы.
Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение(«Сумма(СуммаОборот)", «ОбщийИтог») > 1000 . Но такое выражение можно использовать в иерархическом отборе.
Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
При расчете интервальных выражений для общего итога (параметр Группировка имеет значение ОбщийИтог ) считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
Компоновщик макета при генерации выражения функции ВычислитьВыражение , в случае если выражение упорядочивания содержит поля, которые не могут быть использованы в группировке, заменяет функцию ВычислитьВыражение на NULL .
Параметры
Тип: Строка . Выражение, которое надо вычислить.
Тип: Строка . Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог , вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
Например:
Сумма(Продажи.СуммаОборот)/Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")
В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке;
Тип: Строка . Параметр может принимать следующие значения:
· ОбщийИтог — выражение будет вычисляться для всех записей группировки.
· Иерархия — выражение будет вычисляться для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.
· Группировка — выражение будет вычисляться для текущей групповой записи группировки.
· ГруппировкаНеРесурса — при вычисление функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение() со значением ГруппировкаНеРесурса для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась в том случае, если значение параметра было равно значению Группировка .
Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля-ресурса, по которому выполняется группировка, помещает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение() , с указанием параметра ГруппировкаНеРесурса . Для остальных ресурсов в группировке по ресурсу помещаются обычные выражения ресурсов.
Тип: Строка . Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Значение может быть одним из следующих:
· Первая (First )
· Последняя (Last )
· Предыдущая (Previous )
· Следующая (Next )
· Текущая (Current )
· ОграничивающееЗначение (BoundaryValue ) ОграничивающееЗначение
Тип: Строка . Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатные функции выражения. Значение может быть одним из следующих:
· Первая (First ) . Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Первая(3) - получение третьей записи от начала группировки.
Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4) , то считается, что записей нет.
· Последняя (Last ) . Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Последняя(3) - получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4) , то считается, что записей нет.
· Предыдущая (Previous ) . Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) - получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3) , то получается первая запись группировки.
При получении предыдущей записи для итога по группировке считается, что получается первая запись.
· Следующая (Next ) . Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) - получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3 и для третьей записи получают Следующая() , то считается, что записей нет.
При получении следующей записи для итога по группировке считается, что записи нет.
· Текущая (Current ) . Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
· ОграничивающееЗначение (BoundaryValue ) . Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период , и оно имеет значения 01.01.2010 , 01.02.2010 , 01.03.2010 , и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)) , то будет получена запись с датой 01.02.2010 .
Тип: Строка . Перечисляются выражения, разделенные запятыми, которые описываютправила упорядочивания. Если не указана, то упорядочивание выполняется также как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр (для упорядочивания по возрастанию), Убыв (для упорядочивания по убывания) и Автоупорядочивание (для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка). Слово Автоупорядочивание может использоваться как со словом Возр , так и со словом Убыв .
Тип: Строка . Аналогично параметру Сортировка . Применяется для упорядочивания иерархических записей. Если не указано, компоновщик макета генерирует упорядочивание в соответствии с упорядочиванием, указанным в параметре Сортировка .
Тип: Строка . Указывает правило определения предыдущей или следующий записи в случае если есть несколько записей с одинаковым значением упорядочивания:
· Отдельно (Separately ) обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей. Значение по умолчанию.
· Вместе (Together ) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.
Например, если полученная последовательность упорядочена по дате:
№ | Дата | ФИО | Значение |
1 | 01 января 2001 года |
Иванов М. |
10 |
2 | 02 января 2001 года | Петров С. | 20 |
3 | 03 января 2001 года | Сидоров Р. | 30 |
4 | 04 января 2001 года | Петров С. | 40 |
Отдельно , то:
§ предыдущей записью к записи 3 будет запись 2.
Текущая, Текущая (соответственно, параметры Начало и Конец ), то для записи 2 этот фрагмент будет состоять из одной записи 2. Выражение будет равно 20.
Если значение параметра равно Вместе , то:
§ предыдущей записью к записи 3 будет запись 1.
§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец ), то для записи 2 этот фрагмент будет состоять из записей 2 и 3. Выражение ВычислитьВыражение(«Сумма(Значение)", Текущая, Текущая) будет равно 50.
При указании значение параметра равного Вместе , в параметрах Начало и Конец нельзя указывать смещение для позиций Первая , Последняя , Предыдущая , Следующая .
ВычислитьВыражение("Сумма(СуммаОборот)", "Первая", "Текущая")
Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:
ВычислитьВыражение("Курс", "Предыдущая")
Список новых функций:ВычислитьВыражениеСГруппировкойМассив (,) -
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
ВычислитьВыражениеСГруппировкойТаблицаЗначений (,) -
Функция возвращает таблицу значений, каждая строка которой содержит результат вычисления выражений для группировки по указанному полю
ЗначениеЗаполнено () - Возвращает Истина , если значение отлично от значения данного типа по умолчанию, отлично от значения NULL , отлично от пустой ссылки, отлично от значения Неопределено . Для логических значений осуществляется проверка на значение NULL . Для строк осуществляется проверка на отсутствие не пробельных символов
Формат (, ) - Получить отформатированную строку переданного значения. Форматная строка задается в соответствии с форматной строкой системы «1С:Предприятие».
Подстрока (, , ) - Данная функция предназначена для выделения подстроки из строки.
ДлинаСтроки () - Функция предназначена для определения длины строки. Параметр — выражение строкового типа
Строка () - Если в качестве параметра передан массив, то функция возвращает строку, содержащую строковые представления всех элементов массива, разделенных символами "; ". Если в качестве параметра передана таблица значений, то функция возвращает строку, содержащую строковые представления всех строк таблицы значений, причем представления ячеек каждой строки разделяются символами "; ", а строки — смиволом перевода строки. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка.
В свете ближайшего выхода 8.2.14, попытаюсь описать некоторые новые функции системы компоновки данных.
Открываем схему компоновки данных, желательно во внешнем отчете, чтобы было проще редактировать.
Добавляем набор данных типа запрос и пишем, либо вручную, либо с помощью конструктора запросов простейший запрос:
1. Настраиваем запрос в СКД.
2. Настраиваем вычисляемые поля в СКД
3. Выполняем настройку компоновки данных на закладке настройки
4. Запускаем 1С Предприятие 8.2.14. Открываем отчет. Формируем, получаем.
Описание самих новых функций:
1. ТекущаяДата()
Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТекущаяДата() заменяется значением текущей даты.
2. ВЫЧИСЛИТЬВЫРАЖЕНИЕ()
Синтаксис:
ВычислитьВыражение(,)
Описание:
Функция предназначена для вычисления выражения в контексте некоторой группировки.
Функция учитывает отбор группировок, но не учитывает иерархические отборы.
Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение(«Сумма(СуммаОборот)", «ОбщийИтог») > 1000 . Но такое выражение можно использовать в иерархическом отборе.
Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
При расчете интервальных выражений для общего итога (параметр Группировка имеет значение ОбщийИтог ) считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
Компоновщик макета при генерации выражения функции ВычислитьВыражение , в случае если выражение упорядочивания содержит поля, которые не могут быть использованы в группировке, заменяет функцию ВычислитьВыражение на NULL .
Параметры
Тип: Строка . Выражение, которое надо вычислить.
Тип: Строка . Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог , вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
Например:
Сумма(Продажи.СуммаОборот)/Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")
В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке;
Тип: Строка . Параметр может принимать следующие значения:
· ОбщийИтог — выражение будет вычисляться для всех записей группировки.
· Иерархия — выражение будет вычисляться для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.
· Группировка — выражение будет вычисляться для текущей групповой записи группировки.
· ГруппировкаНеРесурса — при вычисление функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение() со значением ГруппировкаНеРесурса для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась в том случае, если значение параметра было равно значению Группировка .
Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля-ресурса, по которому выполняется группировка, помещает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение() , с указанием параметра ГруппировкаНеРесурса . Для остальных ресурсов в группировке по ресурсу помещаются обычные выражения ресурсов.
Тип: Строка . Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Значение может быть одним из следующих:
· Первая (First )
· Последняя (Last )
· Предыдущая (Previous )
· Следующая (Next )
· Текущая (Current )
· ОграничивающееЗначение (BoundaryValue ) ОграничивающееЗначение
Тип: Строка . Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатные функции выражения. Значение может быть одним из следующих:
· Первая (First ) . Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Первая(3) - получение третьей записи от начала группировки.
Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4) , то считается, что записей нет.
· Последняя (Last ) . Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Последняя(3) - получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4) , то считается, что записей нет.
· Предыдущая (Previous ) . Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) - получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3) , то получается первая запись группировки.
При получении предыдущей записи для итога по группировке считается, что получается первая запись.
· Следующая (Next ) . Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) - получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3 и для третьей записи получают Следующая() , то считается, что записей нет.
При получении следующей записи для итога по группировке считается, что записи нет.
· Текущая (Current ) . Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
· ОграничивающееЗначение (BoundaryValue ) . Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период , и оно имеет значения 01.01.2010 , 01.02.2010 , 01.03.2010 , и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)) , то будет получена запись с датой 01.02.2010 .
Тип: Строка . Перечисляются выражения, разделенные запятыми, которые описываютправила упорядочивания. Если не указана, то упорядочивание выполняется также как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр (для упорядочивания по возрастанию), Убыв (для упорядочивания по убывания) и Автоупорядочивание (для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка). Слово Автоупорядочивание может использоваться как со словом Возр , так и со словом Убыв .
Тип: Строка . Аналогично параметру Сортировка . Применяется для упорядочивания иерархических записей. Если не указано, компоновщик макета генерирует упорядочивание в соответствии с упорядочиванием, указанным в параметре Сортировка .
Тип: Строка . Указывает правило определения предыдущей или следующий записи в случае если есть несколько записей с одинаковым значением упорядочивания:
· Отдельно (Separately ) обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей. Значение по умолчанию.
· Вместе (Together ) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.
Например, если полученная последовательность упорядочена по дате:
№ | Дата | ФИО | Значение |
1 | 01 января 2001 года |
Иванов М. |
10 |
2 | 02 января 2001 года | Петров С. | 20 |
3 | 03 января 2001 года | Сидоров Р. | 30 |
4 | 04 января 2001 года | Петров С. | 40 |
Отдельно , то:
§ предыдущей записью к записи 3 будет запись 2.
Текущая, Текущая (соответственно, параметры Начало и Конец ), то для записи 2 этот фрагмент будет состоять из одной записи 2. Выражение будет равно 20.
Если значение параметра равно Вместе , то:
§ предыдущей записью к записи 3 будет запись 1.
§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец ), то для записи 2 этот фрагмент будет состоять из записей 2 и 3. Выражение ВычислитьВыражение(«Сумма(Значение)", Текущая, Текущая) будет равно 50.
При указании значение параметра равного Вместе , в параметрах Начало и Конец нельзя указывать смещение для позиций Первая , Последняя , Предыдущая , Следующая .
ВычислитьВыражение("Сумма(СуммаОборот)", "Первая", "Текущая")
Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:
ВычислитьВыражение("Курс", "Предыдущая")
Список новых функций:ВычислитьВыражениеСГруппировкойМассив (,) -
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
ВычислитьВыражениеСГруппировкойТаблицаЗначений (,) -
Функция возвращает таблицу значений, каждая строка которой содержит результат вычисления выражений для группировки по указанному полю
ЗначениеЗаполнено () - Возвращает Истина , если значение отлично от значения данного типа по умолчанию, отлично от значения NULL , отлично от пустой ссылки, отлично от значения Неопределено . Для логических значений осуществляется проверка на значение NULL . Для строк осуществляется проверка на отсутствие не пробельных символов
Формат (, ) - Получить отформатированную строку переданного значения. Форматная строка задается в соответствии с форматной строкой системы «1С:Предприятие».
Подстрока (, , ) - Данная функция предназначена для выделения подстроки из строки.
ДлинаСтроки () - Функция предназначена для определения длины строки. Параметр — выражение строкового типа
Строка () - Если в качестве параметра передан массив, то функция возвращает строку, содержащую строковые представления всех элементов массива, разделенных символами "; ". Если в качестве параметра передана таблица значений, то функция возвращает строку, содержащую строковые представления всех строк таблицы значений, причем представления ячеек каждой строки разделяются символами "; ", а строки — смиволом перевода строки. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка.
Грамотное использование схемы компоновки данных (СКД) позволяет:
Но далеко не все разработчики по максимуму используют возможности схемы, так как не все её настройки очевидны и интуитивно понятны. В частности многие знают, что в 1С в СКД есть вычисляемые поля, однако, не до конца представляют область их использования и методы работы с ними.
В большинстве случаев в качестве источника данных в схеме компоновки выступает запрос. В принципе, внутри самого запроса уже можно использовать различные формулы, конструкции и выражения. Возникает закономерный вопрос, зачем же нужен дублирующий функционал?
Дело в том, что СКД – это нечто большее, нежели просто отображение результата выполнения запроса и это прекрасно видно из формы создания схемы (Рис.1).
Вычисляемые поля позволяют выполнять определенные действия со сформированным набором данных:
Давайте по этому списку и пойдем.
Смоделируем ситуацию, когда необходимо получить в отдельную ячейку все номера документов поступления по контрагенту:
таким образом, мы в нашей схеме создали дополнительное расчетное поле;
Как видно из приведенного примера, никаких сложностей в добавлении и обработке вычисляемых полей нет. Мы использовали две функции: Массив() и СоединитьСтроки().
Несколько слов о последней. Помимо первого параметра, указывающего на идентификатор массива, значений или значения, в ней могут быть установлены еще два:
В качестве источника данных для заполнения вычисляемого поля могут выступать функции общего модуля.
Несколько важных моментов:
В качестве примера использования мы возьмем тот же самый запрос к документам поступления и выведем в отдельную колонку. Сам запрос мы описывать не будем, перейдем непосредственно к вычисляемым полям:
Таким образом, мы видим, что практически любой обработчик данных может быть инициализирован из СКД, что значительно расширяет возможности использования схемы.
Достаточно часто в работе разработчика возникает ситуация, когда в поле СКД необходимо вывести результат деления:
Во избежание проблем, в этих случаях желательно в вычисляемое поле ввести проверку на деление на 0.
Сделать это можно с помощью конструкции «Выбор Когда ….Тогда… Иначе… Конец».
В конце несколько слов о достаточно новой функции ВычислитьВыражение(). С её помощью, в частности можно вычислять отклонения в стоимости между текущей и предыдущей строкой, накопительный остаток и т.д.
Допустим, получить СуммуДокумента из предыдущей строки нашего запроса можно указав в поле «Выражение» значение ВычислитьВыражение(«СуммаДокумента», «ПредыдущаяСумма»).
1. Вычислить (Eval) - предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.
Синтаксис
:
Вычислить(Выражение, Группировка, ТипРасчета)
Параметры :
Синтаксис
:
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)
Параметры :
В данном примере вычисляется значение текущей иерархии:
Выбор
Когда Уровень() > 0
Тогда ВычислитьВыражение("Ссылка", "Иерархия")
Иначе Null
Конец
Примечания
:
Функция учитывает отбор группировок, но не учитывает иерархические отборы. Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение("Сумма(СуммаОборот)", "ОбщийИтог") > 1000 . Но такое выражение можно использовать в иерархическом отборе. Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют. При расчете интервальных выражений для общего итога (параметр Группировка имеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют. Компоновщик макета при генерации выражения функции ВычислитьВыражение, в случае если выражение упорядочивания содержит поля, которые не могут быть использованы в группировке, заменяет функцию ВычислитьВыражение на NULL.
3. ВычислитьВыражениеСГруппировкойМассив (EvalExpressionWithGroupArray) - функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис
:
ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры :
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.
Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))
4. ВычислитьВыражениеСГруппировкойТаблицаЗначений (EvalExpressionWithGroupValueTable) - функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис
:
ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры :
Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Например, пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))
5. Уровень (Level) - функция предназначена для получения текущего уровня записи.
Синтаксис
:
Уровень()
Пример
:
Уровень()
6. НомерПоПорядку (SequenceNumber) - получить следующий порядковый номер.
Синтаксис
:
НомерПоПорядку()
Пример
:
НомерПоПорядку()
7. НомерПоПорядкуВГруппировке (SequenceNumberInGrouping) - возвращает следующий порядковый номер в текущей группировке.
Пример
:
НомерПоПорядкуВГруппировке()
8. Формат (Format) - получить отформатированную строку переданного значения.
Синтаксис
:
Формат(Значение, ФорматнаяСтрока)
Параметры :
9. НачалоПериода (BeginOfPeriod)
Синтаксис
:
НачалоПериода(Дата, ТипПериода)
Параметры :
10. КонецПериода (EndOfPeriod) - функция предназначена для выделения определенной даты из заданной даты.
Синтаксис
:
КонецПериода(Дата, ТипПериода)
Параметры :
11. ДобавитьКДате (DateAdd) - функция предназначена для прибавления к дате некоторой величины.
Синтаксис
:
ДобавитьКДате(Выражение, ТипУвеличения, Величина)
Параметры :
12. РазностьДат (DateDifference) - функция предназначена для получения разницы между двумя датами.
Синтаксис
:
РазностьДат(Выражение1 , Выражение2 , ТипРазности)
Параметры :
13. Подстрока (Substring) - данная функция предназначена для выделения подстроки из строки.
Синтаксис
:
Подстрока(Строка, Позиция, Длина)
Параметры :
14. ДлинаСтроки (StringLength) - функция предназначена для определения длины строки.
Синтаксис
:
ДлинаСтроки(Строка)
Параметр :
15. Год (Year) - данная функция предназначена для выделения года из значения типа Дата.
Синтаксис
:
Год(Дата)
Параметр :
16. Квартал (Quarter) - данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4.
Синтаксис
:
Квартал(Дата)
Параметр :
17. Месяц (Month) - данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапа-зоне от 1 до 12.
Синтаксис
:
Месяц(Дата)
Параметр :
18. ДеньГода (DayOfYear) - данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365(366).
Синтаксис
:
ДеньГода(Дата)
Параметр :
19. День (Day) - данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31.
Синтаксис
:
День(Дата)
Параметр :
20. Неделя (Week) - данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1.
Синтаксис
:
Неделя(Дата)
Параметр :
21. ДеньНедели (WeekDay) - данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7(воскресенье).
Синтаксис
:
ДеньНедели(Дата)
Параметр :
22. Час (Hour) - данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23.
Синтаксис
:
Час(Дата)
Параметр :
23. Минута (Minute) - данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59.
Синтаксис
:
Минута(Дата)
Параметр :
24. Секунда (Second) - данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59.
Синтаксис
:
Секунда(Дата)
Параметр :
25. Выразить (Cast) - данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. В случае, если выражение будет содержать тип, отличный от требуемого типа, будет возвращено значение NULL.
Синтаксис
:
Выразить(Выражение, УказаниеТипа)
Параметры :
26. ЕстьNull (IsNull) - данная функция возвращает значение второго параметра в случае, если значение первого параметра NULL. В противном случае будет возвращено значение первого параметра.
Синтаксис
:
ЕстьNull(Выражение1, Выражение2)
Параметры :
27. ACos - вычисляет арккосинус в радианах.
Синтаксис
:
ACos(Выражение)
Параметр :
Синтаксис
:
ASin(Выражение)
Параметр :
Синтаксис
:
ATan(Выражение)
Параметр :
Синтаксис
:
Cos(Выражение)
Параметр :
Синтаксис
:
Exp(Выражение)
Параметр :
Синтаксис
:
Log(Выражение)
Параметр :
Синтаксис
:
Log10(Выражение)
Параметр :
Синтаксис
:
Pow(Основание, Показатель)
Параметры :
Синтаксис
:
Sin(Выражение)
Параметр :
Синтаксис
:
Sqrt(Выражение)
Параметр :
Синтаксис
:
Tan(Выражение)
Параметр :
Синтаксис
:
Окр(Выражение, Разрядность)
Параметры :
Синтаксис
:
Цел(Выражение)
Параметр :
Выражение механизма компоновки данных может содержать вызовы функций глобальных общих модулей конфигурации. Никакого дополнительно синтаксиса для вызова таких функций не требуется.
Пример
:
СокращенноеНаименование(Документы.Ссылка, Документы.Дата, Документы.Номер)
В данном примере будет осуществлен вызов функции "СокращенноеНаименование" из общего модуля конфигурации.
Отметим, что использование функций общих модулей разрешено только при указании соответствующего параметра процессора компоновки данных.
Кроме того, функции общих модулей не могут быть использованы в выражениях пользовательских полей.
41. Представление (Resentation) - данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
<Пустое значение>".
Пример
:
Представление(Контрагент)
42. Строка (String) - данная функция преобразует переданное значение в строку.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами "; ". Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка "<Пустое значение>".
Пример
:
Строка(ДатаПродажи)
43. ЗначениеЗаполнено (ValueIsFilled)
Для значений NULL, Неопределено всегда возвращает Ложь.
Для значений Булево всегда возвращает Истину.
Для остальных типов возвращает Истину, если значение отличается от значения по умолчанию для данного типа.
Пример
:
ЗначениеЗаполнено(ДатаДоставки)
44. УровеньВГруппировке (LevelInGroup) - данная функция получает текущий уровень записи относительно группировки.
Может быть использована для получения уровня вложенности записи в иерархической группировке.
Пример
:
УровеньВГруппировке()
45. ТипЗначения(ValueType)
Синтаксис
:
ТипЗначения(Выражение)
Параметр :