Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1С 8.3 РУКОВОДСТВО.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
4.8 Mб
Скачать

1.5. Другие операции Операция выбор

Операция ВЫБОР предназначена для осуществления выбора одного из нескольких значений при выполнении некоторых условий.

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

ВЫБОР Когда Сумма > 1000 Тогда Сумма Иначе 0 Конец

Правила сравнения двух значений

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

● NULL (самый низший),

● Булево,

● Число,

● Дата,

● Строка,

● ссылочные типы.

Отношения между различными ссылочными типами определяются на основе ссылочных номеров таблиц, соответствующих тому или иному типу.

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

● у типа Булево значение ИСТИНА больше значения ЛОЖЬ;

● у типа Число обычные правила сравнения для чисел;

● у типа Дата более ранние даты меньше более поздних;

● у типа Строка сравнения строк в соответствии с установленными национальными особенностями базы данных;

● ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).

Работа со значением NULL

Любая операция, в которой значение одного из операндов NULL, будет давать результат NULL.

Есть исключения:

● операция И будет возвращать NULL только в случае, если ни один из операндов не имеет значение Ложь;

● операция ИЛИ будет возвращать NULL только в случае, если ни один из операндов не имеет значениеИстина.

Приоритеты операций

Операции имеют следующие приоритеты (первая строка имеет низший приоритет):

● ИЛИ;

● И;

● НЕ;

● В, ЕСТЬ NULL, ЕСТЬ НЕ NULL;

● =, <>, <=, <, >=, >;

● Бинарный +, Бинарный – ;

● *, /, %; 

● Унарный +, Унарный –.

1.6. Функции

ВЫЧИСЛИТЬ (EVAL)

Функция ВЫЧИСЛИТЬ предназначена для вычисления выражения в контексте некоторой группировки. Функция имеет следующие параметры:

● Выражение – строка, содержащая вычисляемое выражение;

● Группировка – строка, содержащая имя группировки, в контексте которой необходимо вычислить выражение. Если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. Если в качестве имени группировки будет использована строкаОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.

● Тип расчета – строка, содержащая тип расчета. Если данный параметр имеет значение ОбщийИтог, выражение будет вычисляться для всех записей группировки. Если значение параметра – Группировка, значения будут вычисляться для текущей групповой записи группировки.

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

СУММА(Продажи.СуммаОборот) / ВЫЧИСЛИТЬ("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")

В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке.

Вычислитьвыражение (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 Иванов М. 10

2. 02 января 2001 Петров С. 20

3. 02 января 2001 Сидоров Р. 30

4. 03 января 2001 Петров С. 40

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]