ВЫЧИСЛИТЬВЫРАЖЕНИЕ (EVALEXPRESSION)

Функция возвращает выражение для записи указанной группировки. Функции имеет следующие параметры:

1. Вычисляемое выражение. – Строка, содержащая выражение, которое требуется вычислить.

2. Группировка.– Строка, содержащая имя группировки, в которой требуется вычислить выражение. в качестве имени группировки используется пустая строка, то вычисление будет выполнено для текущей группировки. Если указана строка «ОбщийИтог», то вычисление будет выполнено для общего итога. При вычислении в таблице, если в параметре указано имя группировки-строки, или указана пустая строка, то вычисление будет выполнено для группировки, полученной на пересечении требуемой области вычисления (см. описание третьего параметра) и текущей строки группировки колонки. Если в параметре указано имя группировки-колонки, то вычисление выполняется для группировки, полученной на пересечении области вычисления группировки-колонки и текущей записи группировки-строки.

3. Область вычисления. – Строка, содержащая область вычисления. Если в качестве области вычисления используется пустая строка, то вычисление будет выполнено для текущей записи группировки, указанной в первом параметре. Если параметр содержит строку «ОбщийИтог», то вычисление будет выполнено для общего итога по группировке, указанной во втором параметре.

В случае если значение параметра «Группировка», значения будут вычисляться для текущей групповой записи группировки.
Если параметр имеет значение «ГруппировкаНеРесурса», то при вычислении функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение со значением «ГруппировкаНеРесурса» для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра «Группировка».
Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля – ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение, с указанным параметром «ГруппировкаНеРесурса». Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов.

Если параметр содержит строку «Иерархия», то выражение будет вычислено для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется. Компоновщик макета при генерации выражения для поля «% в группе иерархии» генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления «Иерархия».

4. Начало. – Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из:

● «Первая» ("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.

5. Конец. – Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатное выражение. Строка, содержащая одно из:

● «Первая» ("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.01.2010.

6. Сортировка. – Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Если не указана, то упорядочивание выполняется также как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр, для упорядочивания по возрастанию, Убыв, для упорядочивания по убывания, Автоупорядочивание, для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка. Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.

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

8. ОбработкаОдинаковыхЗначенийПорядка. Строка, содержащее одно из:

● "Вместе" ("Together") обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.

● «Отдельно» ("Separately") обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей.

Например, если полученная последовательность упорядочена по дате:

Копировать в буфер обмена

1. 01 января 2001 Иванов М. 102. 02 января 2001 Петров С. 203. 02 января 2001 Сидоров Р. 304. 03 января 2001 Петров С. 40

При использовании в обработке одинаковых значений порядка "Отдельно", предыдущей к записи 3 будет запись 2, а при использовании "Вместе" - запись 1. А фрагментом для текущей записи к записи 2 для "Отдельно" будет запись 2, а для "Вместе" - записи 2 и 3. Таким образом сумма по текущей записи для "Отдельно" составит 20, а для "Вместе" - 50.

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

По умолчанию «Отдельно».

Пример использования параметров:

Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение:

Копировать в буфер обмена

ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая")

Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:

Копировать в буфер обмена

ВычислитьВыражение("Курс", , , "Назад")

Функция ВычислитьВыражение учитывает отбор группировок, но не учитывает иерархические отборы.

Функция ВычислитьВыражение не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражениеВычислитьВыражение("Сумма(СуммаОборот)", , "ОбщийИтог") > 1000. Но такое выражение можно использовать в иерархическом отборе.

Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.

При расчете интервальных выражений для общего итога (второй параметр функции ВычислитьВыражениеимеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.

УРОВЕНЬ (LEVEL)

Функция предназначена для получения текущего уровня записи.

Копировать в буфер обмена