Меню Рубрики

1с вычисляемые поля какие функции можно применять. Функции языка выражений системы компоновки данных. Операция проверки наличия значения в наборе данных

Грамотное использование схемы компоновки данных (СКД) позволяет:

  • значительно снизить время, необходимое на разработку отчета;
  • избавиться от необходимости создания управляемой формы обработчика;
  • получить на выходе красивый результат с возможностью дополнительной настройки пользователем.

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

Что такое вычисляемое поле

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

Дело в том, что СКД – это нечто большее, нежели просто отображение результата выполнения запроса и это прекрасно видно из формы создания схемы (Рис.1).

Вычисляемые поля позволяют выполнять определенные действия со сформированным набором данных:

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

Давайте по этому списку и пойдем.

Массив значений в одной ячейке

Смоделируем ситуацию, когда необходимо получить в отдельную ячейку все номера документов поступления по контрагенту:


таким образом, мы в нашей схеме создали дополнительное расчетное поле;


Как видно из приведенного примера, никаких сложностей в добавлении и обработке вычисляемых полей нет. Мы использовали две функции: Массив() и СоединитьСтроки().

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

  1. РазделительЭлементов – указывает, какой символ будет отделять один элемент массива или одну строку таблицы значений от другого (в нашем случае мы опустили этот параметр и по умолчанию был назначен перенос строки);
  2. РазделительКолонок – символ, используемый для разделения колонок таблицы значений (по умолчанию используется точка с запятой).

Обращение к экспортным функциям общего модуля

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

Несколько важных моментов:

  • Функция обязательно должна быть экспортной;
  • Если функция расположена в общем модуле с установленным признаком «Глобальный», её вызов осуществляется непосредственно по имени, в противном случае вызов функции должен происходить по схеме «Имя общего модуля». «Имя вызываемой функции».

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


Таким образом, мы видим, что практически любой обработчик данных может быть инициализирован из СКД, что значительно расширяет возможности использования схемы.

Выражения языка компоновки

Достаточно часто в работе разработчика возникает ситуация, когда в поле СКД необходимо вывести результат деления:

  1. Рассчитать среднюю стоимость номенклатуры;
  2. Всевозможные проценты;
  3. Расчеты среднего заработка и т.д.

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

Сделать это можно с помощью конструкции «Выбор Когда ….Тогда… Иначе… Конец».

В конце несколько слов о достаточно новой функции ВычислитьВыражение(). С её помощью, в частности можно вычислять отклонения в стоимости между текущей и предыдущей строкой, накопительный остаток и т.д.

Допустим, получить СуммуДокумента из предыдущей строки нашего запроса можно указав в поле «Выражение» значение ВычислитьВыражение(«СуммаДокумента», «ПредыдущаяСумма»).

Одним из самых удобных и уникальных инструментов разработки в 1С является система компоновки данных (СКД). Мало в каких информационных системах разработчики могут создавать отчеты без написания программного кода. Данный механизм разрабатывался с целью упростить и ускорить разработку отчетных форм и дать больше возможностей пользователям в работе с выводимыми данными. Последнее очень высоко ценится продвинутыми пользователями, которые благодаря этому могут самостоятельно настроить отчет под собственные нужды, не ожидая действий разработчиков.

Создание отчета в 1С через СКД

Процесс разработки отчета при помощи СКД можно разделить на следующие этапы:

  1. Создание запроса. Запрос можно написать вручную или обойтись без программного кода, воспользовавшись удобным интерфейсом;
  2. Настройка отчета. Выбираются поля, итоги, группировки, параметры, оформление отчета;
  3. После этого нам останется лишь подключить получившийся отчет в конфигурацию любым доступным способом.

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

Рассмотрим пример создания внешнего отчета на СКД:


Теперь заходим в 1С, открываем наш отчет, чтобы удостовериться в правильности совершенных действий. Данные все отражены, группировки можно сворачивать и разворачивать. Как видите, СКД позволяет получать полноценные отчеты без написания кода за исключением нестандартных требований. Учитывая, что большинство отчетов имеют схожую структуру, знание СКД позволит существенно сократить время на разработку этих объектов.

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

Возможности СКД

Бывают ситуации, когда мы сделали отчет, а потом приходит пользователь и просит сделать небольшую доработку. Например, вместо названий номенклатуры выводить артикулы. СКД позволяет такие доработки делать пользователям самостоятельно с помощью кнопки «Еще» - «Изменить вариант…».


Открывшееся окно похоже на окно настройки в отчете в конфигураторе, а также оно имеет схожие функции. Чтобы решить поставленную задачу пользователь должен зайти во вкладку «Поля» и изменить поле «Номенклатура». Это поле для редактирования открывается двойным щелчком, и становится доступна кнопка «Выбрать…».


Открывшееся окно предоставляет нам возможность выбора любого значения, которое будет фигурировать в поле «Номенклатура». У некоторых полей слева фигурирует знак плюса – в эти поля разработчик поместил ссылки, значит, мы можем увидеть их реквизиты. Раскрываем «Номенклатура» и видим артикул, который нам и нужен. Выделяем его и выбираем.


В окне изменения вариантов отчета заложены многие полезные функции системы компоновки данных. К примеру, пользователь самостоятельно может изменить порядок группировок, добавить отбор или наложить условное оформление. Завершаем редактирование и формируем отчет – как видим, вся номенклатура теперь отображается в виде артикулов.


Механизм СКД 1С:Предприятие 8.3 также имеет расширенный функционал для разработчиков. При разработке отчета мы пользовались всего 2 вкладками – «Наборы данных» и «Настройки», но в СКД их намного больше. Чтобы пользоваться всеми функциями системы компоновки данных, необходимо представлять, для чего каждая из вкладок нужна:

  1. Наборы данных – здесь перечислены все запросы, участвующие в формировании отчета;
  2. Связи наборов данных – используется для построения связи между различными запросами с первой вкладки;
  3. Вычисляемые поля – перечень добавленных полей не из запроса. Чаще всего используется в случаях, когда на основании значений нескольких полей из запроса нужно получить 1 значение;
  4. Ресурсы. В 1С так называются поля, по которым необходимо знать итоги. Ресурсы поддерживают различные арифметические операции – сумму, количество, максимум и другие;
  5. Параметры. Используются, если для формирования отчета необходимо, чтобы пользователь ввел определенные данные – дату, подразделений или номенклатуру, например;
  6. Макеты. Предназначены для тех случаев, когда пользователи хотят увидеть уникально оформленный отчет. Создать отдельное место для подписей или новую верхнюю часть отчета – все это можно здесь;
  7. Вложенные схемы. Они необходимы, когда ваш отчет должен содержать данные других отчетов;
  8. Настройки. В разделе объявляются выводимые поля, группировки, настраивается внешний вид отчета.


Количество возможностей, заложенных в механизме СКД разработчиками, велико, но многие из них используются крайне редко. Даже опытные программисты 1С за годы работы могут не использовать некоторые функции. Для начала успешной работы в СКД достаточно знать основные понятия и часто используемые настройки. В редких случаях на помощь придет документация.

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


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

Соответственно, теперь необходимо рассчитать итоги, по выше находящимся группировкам («Склады», «ТипыСкладов») и общий итог.
Для этого используется функция ВычислитьВыражениеСГруппировкойМассив:
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EVALEXPRESSIONWITHGROUPARRAY)
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив(,)
Описание:
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет преобразовано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функцияВычислитьМассивСГруппировкойМассив(), генерирует выводимое выражение таким образом, чтобы выводимая информация была упорядочена. Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:

СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений("Представление(Сумма(НаборДанных.СуммаОборот)),Сумма(НаборДанных.СуммаОборот)","НаборДанных.Контрагент"),"2")))

Параметры:

Тип: Строка. Выражение, которое нужно вычислить. Строка, например, Сумма(СуммаОборот).

Тип: Строка. Выражения полей группировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия.

Тип: Строка. Выражение, описывающее отбор, применяемый к детальным записям. В выражении не поддерживается использование агрегатных функций. Например,ПометкаУдаления = Ложь.

Тип: Строка. Выражение, описывающее отбор, применяемый к групповым записям. Например, Сумма(СуммаОборот) > &Параметр1.
Пример:

Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));

Подробное описание синтаксиса функции можно найти по адресу http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Теперь для расчета, продублируем поле «Заказать», с различными значениями «Рассчитывать по…», используя следующие выражения, обратите внимание, что в каждом выше стоящем уровне используются значения уровней ниже стоящих группировок.

В итоге получаем следующую конструкцию:

1. Вычислить (Eval) - предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.

Синтаксис :
Вычислить(Выражение, Группировка, ТипРасчета)

Параметры :

  • Выражение (Строка). Cодержит вычисляемое выражение;
  • Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
    Например:
    Сумма(Продажи.СуммаОборот) / Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог").
    В данном примере в результате получится отношение суммы по полю "Продажи.СуммаОборот" записи группировки к сумме того же поля во всей компоновке.
  • ТипРасчета (Строка). В случае если данный параметр имеет значение "ОбщийИтог", выражение будет вычисляться для всех записей группировки. В случае если значение параметра "Группировка", значения будут вычисляться для текущей групповой записи группировки.
2. ВычислитьВыражение (EvalExpression) - предназначена для вычисления выражения в контексте некоторой группировки. Функция учитывает отбор группировок, но не учитывает иерархические отборы. Функция не может применяться к группировке в групповом отборе этой группировки.

Синтаксис :
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)

Параметры :

  • Выражение (Строка). Содержит вычисляемое выражение;
  • Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем;
  • ТипРасчета (Строка). В случае если данный параметр имеет значение "ОбщийИтог", выражение будет вычисляться для всех записей группировки. В случае если значение параметра "Группировка", значения будут вычисляться для текущей групповой записи группировки. Если параметр имеет значение "ГруппировкаНеРесурса", то при вычислении функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки. При вычислении функции ВычислитьВыражение со значением "ГруппировкаНеРесурса" для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра "Группировка". Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля – ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение, с указанным параметром "ГруппировкаНеРесурса". Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов. Если параметр имеет значение "Иерархия", то выражение нужно вычислять для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется. Компоновщик макета при генерации выражения для поля "% в группе иерархии" генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления "Иерархия".
  • Начало . Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из:
    • "Первая" ("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.
  • Конец . Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатное выражение. Строка, содержащая одно из:
    • "Первая" ("First").
    • "Последняя" ("Last").
    • "Предыдущая" ("Previous").
    • "Следующая" ("Next").
    • "Текущая" ("Current").
    • "ОграничивающееЗначение" ("BoundaryValue").
  • Сортировка . Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Если не указана, то упорядочивание выполняется также как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр, для упорядочивания по возрастанию, Убыв, для упорядочивания по убывания, Автоупорядочивание, для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка. Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.
  • ИерархическаяСортировка . Аналогично сортировке. Применяется для упорядочивания иерархических записей. Если не указано, компоновщик макета генерирует упорядочивание в соответствии с упорядочиванием, указанным в параметре Сортировка.
  • ОбработкаОдинаковыхЗначенийПорядка . Строка, содержащее одно из:
    • "Вместе" ("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. При указанном "Вместе" в параметрах Начало и Конец нельзя указывать смещение для позиций "Первая", "Последняя", "Предыдущая", "Следующая". Значение по умолчанию "Отдельно".
Пример :
Получение отношения суммы по полю "Продажи.СуммаОборот" записи группировки к сумме того же поля во всей компоновке:
Сумма(Продажи.СуммаОборот) / ВычислитьВыражение("Сумма(Продажи.СуммаОборот)", "ОбщийИтог").

В данном примере вычисляется значение текущей иерархии:
Выбор
Когда Уровень() > 0
Тогда ВычислитьВыражение("Ссылка", "Иерархия")
Иначе Null
Конец

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

3. ВычислитьВыражениеСГруппировкойМассив (EvalExpressionWithGroupArray) - функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

Синтаксис :
ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры :

  • Выражение (Строка) - выражение, которое нужно вычислить. Например, "Сумма(СуммаОборот)";
  • ВыраженияПолейГруппировки
  • ОтборЗаписей
  • ОтборГруппировок - отбор, применяемый к групповым записям. Например: "Сумма(СуммаОборот) > &Параметр1".
Пример :
Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));


Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.
Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))

4. ВычислитьВыражениеСГруппировкойТаблицаЗначений (EvalExpressionWithGroupValueTable) - функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.

Синтаксис :
ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры :

  • Выражение (Строка) - выражение, которое нужно вычислить. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: "Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж".
  • ВыраженияПолейГруппировки - выражения полей группировки, перечисленные через запятую. Например, "Контрагент, Партия";
  • ОтборЗаписей - выражение, применяемое к детальным записям. Например, "ПометкаУдаления = Ложь". Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
  • ОтборГруппировок - отбор, применяемый к групповым записям. Например: "Сумма(СуммаОборот) > &Параметр1".
Пример :
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент КАК Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж", "Контрагент")

Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Например, пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))

5. Уровень (Level) - функция предназначена для получения текущего уровня записи.

Синтаксис :
Уровень()

Пример :
Уровень()

6. НомерПоПорядку (SequenceNumber) - получить следующий порядковый номер.

Синтаксис :
НомерПоПорядку()

Пример :
НомерПоПорядку()

7. НомерПоПорядкуВГруппировке (SequenceNumberInGrouping) - возвращает следующий порядковый номер в текущей группировке.

Пример :
НомерПоПорядкуВГруппировке()

8. Формат (Format) - получить отформатированную строку переданного значения.

Синтаксис :
Формат(Значение, ФорматнаяСтрока)

Параметры :

  • Значение - выражение, которое требуется отформатировать;
  • ФорматнаяСтрока - форматная строка задается в соответствии с форматной строкой 1С:Предприятие.
Пример :
Формат(РасходныеНакладные.СуммаДок, "ЧДЦ=2")

9. НачалоПериода (BeginOfPeriod)

Синтаксис :
НачалоПериода(Дата, ТипПериода)

Параметры :

  • Дата (Дата). Заданная дата;
  • ТипПериода
Пример :
НачалоПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц")
Результат: 01.10.2002 0:00:00

10. КонецПериода (EndOfPeriod) - функция предназначена для выделения определенной даты из заданной даты.

Синтаксис :
КонецПериода(Дата, ТипПериода)

Параметры :

  • Дата (Дата). Заданная дата;
  • ТипПериода (Строка). Содержит одно из значений: Минута; Час; День; Неделя; Месяц; Квартал; Год; Декада; Полугодие.
Пример :
КонецПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Неделя")
Результат: 13.10.2002 23:59:59

11. ДобавитьКДате (DateAdd) - функция предназначена для прибавления к дате некоторой величины.

Синтаксис :
ДобавитьКДате(Выражение, ТипУвеличения, Величина)

Параметры :

  • Выражение (Дата). Исходная дата;
  • ТипУвеличения (Строка). Содержит одно из значений: Минута; Час; День; Неделя; Месяц; Квартал; Год; Декада; Полугодие.
  • Величина (Число). На сколько необходимо увеличить дату, дробная часть игнорируется.
Пример :
ДобавитьКДате(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц", 1)
Результат: 12.11.2002 10:15:34

12. РазностьДат (DateDifference) - функция предназначена для получения разницы между двумя датами.

Синтаксис :
РазностьДат(Выражение1 , Выражение2 , ТипРазности)

Параметры :

  • Выражение1 (Дата). Вычитаемая дата;
  • Выражение2 (Дата). Исходная дата;
  • ТипРазности (Строка). Содержит одно из значений: Секунда; Минута; Час; День; Месяц; Квартал; Год.
Пример :
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34),
ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), "ДЕНЬ")
Результат: 2

13. Подстрока (Substring) - данная функция предназначена для выделения подстроки из строки.

Синтаксис :
Подстрока(Строка, Позиция, Длина)

Параметры :

  • Строка (Строка). Строка, из которой выделяют подстроку;
  • Позиция (Число). Позиция символа, с которого начинается выделяемая из строки подстрока;
  • Длина (Число). Длина выделяемой подстроки.
Пример :
ПОДСТРОКА(Контрагенты.Адрес, 1, 4)

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.

Синтаксис :
Выразить(Выражение, УказаниеТипа)

Параметры :

  • Выражение - преобразуемое выражение;
  • УказаниеТипа (Строка). Содержит строку типа. Например, "Число", "Строка" и т.п. Кроме примитивных типов данная строка может содержать имя таблицы. В этом случае будет осуществлена попытка выразить к ссылке на указанную таблицу.
Пример :
Выразить(Данные.Реквизит1, "Число(10,3)")

26. ЕстьNull (IsNull) - данная функция возвращает значение второго параметра в случае, если значение первого параметра NULL. В противном случае будет возвращено значение первого параметра.

Синтаксис :
ЕстьNull(Выражение1, Выражение2)

Параметры :

  • Выражение1 - проверяемое значение;
  • Выражение2 - возвращаемое значение, если значение Выражение1 есть NULL.
Пример :
ЕстьNULL(Сумма(Продажи.СуммаОборот), 0)

27. ACos - вычисляет арккосинус в радианах.

Синтаксис :
ACos(Выражение)

Параметр :

  • Выражение (Число). Значение косинуса (в диапазоне -1 ... 1), по которому определяется угол.
28. ASin - вычисляет арксинус в радианах.

Синтаксис :
ASin(Выражение)

Параметр :

  • Выражение (Число). Значение синуса (в диапазоне -1 ... 1), по которому определяется угол.
29. ATan - вычисляет арктангенс в радианах.

Синтаксис :
ATan(Выражение)

Параметр :

  • Выражение (Число). Значение тангенса, по которому определяется угол.
30. Cos - вычисляет косинус.

Синтаксис :
Cos(Выражение)

Параметр :

  • Выражение
31. Exp - возведение числа e в степень.

Синтаксис :
Exp(Выражение)

Параметр :

  • Выражение (Число). Значение степени.
32. Log - вычисляет натуральный логарифм.

Синтаксис :
Log(Выражение)

Параметр :

  • Выражение
33. Log10 - вычисляет логарифм X по основанию 10.

Синтаксис :
Log10(Выражение)

Параметр :

  • Выражение (Число). Исходное число, больше 0.
34. Pow - возведение в степень.

Синтаксис :
Pow(Основание, Показатель)

Параметры :

  • Основание (Число). Основание операции возведения в степень.
  • Показатель (Число). Показатель степени.
35. Sin - вычисляет синус.

Синтаксис :
Sin(Выражение)

Параметр :

  • Выражение (Число). Задается в радианах.
36. Sqrt - вычисляет квадратный корень.

Синтаксис :
Sqrt(Выражение)

Параметр :

  • Выражение (Число). Неотрицательное число.
37. Tan - вычисляет тангенс.

Синтаксис :
Tan(Выражение)

Параметр :

  • Выражение (Число). Значение синуса, по которому определяется угол.
38. Окр (Round) - округляет исходное число до нужной разрядности. Режим округления стандартный (1,5 как 2).

Синтаксис :
Окр(Выражение, Разрядность)

Параметры :

  • Выражение (Число). Исходное число;
  • Разрядность (Число). Число знаков дробной части, до которых производится округление.
39. Цел (Int) - отсекает дробную часть числа.

Синтаксис :
Цел(Выражение)

Параметр :

  • Выражение (Число). Дробное число.
40. Функции общих модулей

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

Пример :
СокращенноеНаименование(Документы.Ссылка, Документы.Дата, Документы.Номер)

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

41. Представление (Resentation) - данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.

<Пустое значение>".

Пример :
Представление(Контрагент)

42. Строка (String) - данная функция преобразует переданное значение в строку.

Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами "; ". Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка "<Пустое значение>".

Пример :
Строка(ДатаПродажи)

43. ЗначениеЗаполнено (ValueIsFilled)

Для значений NULL, Неопределено всегда возвращает Ложь.
Для значений Булево всегда возвращает Истину.
Для остальных типов возвращает Истину, если значение отличается от значения по умолчанию для данного типа.

Пример :
ЗначениеЗаполнено(ДатаДоставки)

44. УровеньВГруппировке (LevelInGroup) - данная функция получает текущий уровень записи относительно группировки.

Может быть использована для получения уровня вложенности записи в иерархической группировке.

Пример :
УровеньВГруппировке()

45. ТипЗначения(ValueType)

Синтаксис :
ТипЗначения(Выражение)

Параметр :

  • Выражение (Строка). Строковое значение типа.
Возвращает значение типа Тип, содержащее тип значения параметра функции.

Язык выражений системы компоновки данных

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

Выражения используются в следующих подсистемах:

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

Литералы

В выражении могут присутствовать литералы. Возможны литералы следующих типов:

  • Строка;
  • Число;
  • Дата;
  • Булево.

Строка

Строковый литерал записывается в символах «”», например:

“Строковой литерал“

При необходимости использования внутри строкового литерала символа «”», следует использовать два таких символов.

Например:

“Литерал ““в кавычках“““

Число

Число записывается без пробелов, в десятичном формате. Дробная часть отделяется при помощи символа «.». Например:

10.5 200

Дата

Литерал типа дата записывается при помощи ключевого литерала ДАТАВРЕМЯ (DATETIME). После данного ключевого слова, в скобках, через запятую перечисляются год, месяц, день, часы, минуты, секунды. Указание времени не обязательно.

Например:

ДАТАВРЕМЯ(1975, 1, 06) – Шестое января 1975 года ДАТАВРЕМЯ(2006, 12, 2, 23, 56, 57) – Второе декабря 2006 года, 23 часа 56 минут 57 секундода, 23 часа 56 минут 57 секунд

Булево

Булевы значения могут быть записаны при помощи литералов Истина (True), Ложь (False).

Значение

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

Значение(ВидСчета. Активный)

Операции над числами

Унарный –

Данная операция предназначена для изменения знака числа на обратный. Например:

Продажи.Количество

Унарный +

Данная операция не выполняет над числом никаких действий. Например:

Продажи.Количество

Бинарный -

Данная операция предназначена для вычисления разности двух чисел. Например:

ОстаткиИОбороты.НачальныйОстаток – ОстаткиИОбороты.КонечныйОстаток ОстаткиИОбороты.НачальныйОстаток - 100 400 – 357

Бинарный +

Данная операция предназначена для вычисления суммы двух чисел. Например:

ОстаткиИОбороты.НачальныйОстаток + ОстаткиИОбороты.Оборот ОстаткиИОбороты.НачальныйОстаток + 100 400 + 357

Произведение

Данная операция предназначена для вычисления произведения двух чисел. Например:

Номенклатура.Цена * 1.2 2 * 3.14

Деление

Данная операция предназначена для получения результата деления одного операнда на другой. Например:

Номенклатура.Цена / 1.2 2 / 3.14

Остаток от деления

Данная операция предназначена для получения остатка от деления одного операнда на другой. Например:

Номенклатура.Цена % 1.2 2 % 3.14

Операции над строками

Конкатенация (Бинарный +)

Данная операция предназначена для конкатенации двух строк. Например:

Номенклатура.Артикул + “: ”+ Номенклатура.Наименование

Подобно

Данная операция проверяет соответствие строки переданному шаблону.

Значением оператора ПОДОБНО является ИСТИНА, если значение <Выражения> удовлетворяет шаблону, и ЛОЖЬ в противном случае.

Следующие символы в <Строке_шаблона> имеют смысл, отличный от просто очередного символа строки:

  • % - процент: последовательность, содержащая ноль и более произвольных символов;
  • _ - подчеркивание: один произвольный символ;
  • […] - один или несколько символов в квадратных скобках: один символ, любой из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
  • [^…] - в квадратных скобках значок отрицания, за которым следует один или несколько символов: любой символ, кроме тех, которые перечислены следом за значком отрицания;

Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>, указанный после ключевого слова СПЕЦСИМВОЛ (ESCAPE).

Например, шаблон

“%АБВ[абвг]\_абв%” СПЕЦСИМВОЛ “\”

означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем эта последовательность может располагаться, начиная с произвольной позиции в строке.

Операции сравнения

Равно

Данная операция предназначена для сравнения двух операндов на равенство. Например:

Продажи.Контрагент = Продажи.НоменклатураОсновнойПоставщик

Не равно

Данная операция предназначена для сравнения двух операндов на неравенство. Например:

Продажи.Контрагент <> Продажи.НоменклатураОсновнойПоставщик

Меньше

Данная операция предназначена для проверки того, что первый операнд меньше второго. Например:

ПродажиТекщие.Сумма < ПродажиПрошлые.Сумма

Больше

Данная операция предназначена для проверки того, что первый операнд больше второго. Например:

ПродажиТекщие.Сумма > ПродажиПрошлые.Сумма

Меньше или равно

Данная операция предназначена для проверки того, что первый операнд меньше либо равен второму. Например:

ПродажиТекщие.Сумма <= ПродажиПрошлые.Сумма

Больше или равно

Данная операция предназначена для проверки того, что первый операнд больше либо равен второму. Например:

ПродажиТекщие.Сумма >= ПродажиПрошлые.Сумма

Операция В

Данная операция осуществляет проверку наличия значения в переданном списке значений. Результатом операции будет Истина, в случае, если значение найдено, или Ложь - в противном случае. Например:

Номенклатура В (&Товар1, &Товар2)

Операция проверки наличия значения в наборе данных

Операция осуществляет проверку наличия значения в указанном наборе данных. Набор данных для проверки должен содержать одно поле. Например:

Продажи.Контрагент В Контрагенты

Операция проверки значения на NULL

Данная операция возвращает значение Истина в случае, если значение является значением NULL. Например:

Продажи.Контрагент ЕСТЬ NULL

Операция проверки значения на неравенство NULL

Данная операция возвращает значение Истина в случае, если значение не является значением NULL. Например:

Продажи.Контрагент ЕСТЬ НЕ NULL

Логические операции

Логические операции принимают в качестве операндов выражения, имеющие тип Булево.

Операция НЕ

Операция НЕ возвращает значение Истина в случае, если ее операнд имеет значение Ложь, и значение Ложь в случае, если ее операнд имеет значение Истина. Например:

НЕ Документ.Грузополучатель = Документ.Грузоотправитель

Операция И

Операция И возвращает значение Истина в случае, если оба операнда имеют значение Истина, и значение Ложь в случае, если один из операндов имеет значение Ложь. Например:

Документ.Грузополучатель = Документ.Грузоотправитель И Документ.Грузополучатель = &Контрагент

Операция ИЛИ

Операция ИЛИ возвращает значение Истина в случае, если один из операндов имеет значение Истина, и Ложь в случае, если оба операнда имеют значение Ложь. Например:

Документ.Грузополучатель = Документ.Грузоотправитель ИЛИ Документ.Грузополучатель = &Контрагент

Агрегатные функции

Агрегатные функции осуществляют некоторое действие над набором данных.

Сумма

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

Сумма(Продажи.СуммаОборот)

Количество

Функция Количество рассчитывает количество значений отличных от значения NULL. Например:

Количество(Продажи.Контрагент)

Количество различных

Эта функция рассчитывает количество различных значений. Например:

Количество(Различные Продажи.Контрагент)

Максимум

Функция получает максимальное значение. Например:

Максимум(Остатки.Количество)

Минимум

Функция получает минимальное значение. Например:

Минимум(Остатки.Количество)

Среднее

Функция получает среднее значение для значений, отличных от NULL. Например:

Среднее(Остатки.Количество)

Другие операции

Операция ВЫБОР

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

Выбор Когда Сумма > 1000 Тогда Сумма Иначе 0 Конец

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

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

  • NULL (самый низший);
  • Булево;
  • Число;
  • Дата;
  • Строка;
  • Ссылочные типы

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

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

  • у типа Булево значение ИСТИНА больше значения ЛОЖЬ;
  • у типа Число обычные правила сравнения для чисел;
  • у типа Дата более ранние даты меньше более поздних;
  • у типа Строка - сравнения строк в соответствии с установленными национальными особенностями базы данных;
  • ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).

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

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

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

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

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

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

  • В, ЕСТЬ NULL, ЕСТЬ НЕ NULL;
  • =, <>, <=, <, >=, >;
  • Бинарный +, Бинарный – ;
  • *, /, %;
  • Унарный +, Унарный -.

Функции языка выражений системы компоновки данных

Вычислить

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

  • Выражение. Тип Строка. Содержит вычисляемое выражение;
  • Группировка. Тип Строка. Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем. Например:
Сумма(Продажи.СуммаОборот) / Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")

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

Уровень

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

Уровень()

НомерПоПорядку

Получить следующий порядковый номер.

НомерПоПорядку()

НомерПоПорядкуВГруппировке

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

НомерПоПорядкуВГруппировке()

Формат

Получить отформатированную строку переданного значения.

Форматная строка задается в соответствии с форматной строкой 1С:Предприятие.

Параметры:

  • Значение;
  • Форматная строка.

Формат(РасходныеНакладные.СуммаДок, "ЧДЦ=2")

НачалоПериода

Параметры:

    • Минута;
    • День;
    • Неделя;
    • Месяц;
    • Квартал;
    • Декада;
    • Полугодие.

НачалоПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц")

Результат:

01.10.2002 0:00:00

КонецПериода

Функция предназначена для выделения определенной даты из заданной даты.

Параметры:

  • Дата. Тип Дата. Заданная дата;
  • Тип периода. Тип Строка. Содержит одно из значений:
    • Минута;
    • День;
    • Неделя;
    • Месяц;
    • Квартал;
    • Декада;
    • Полугодие.

КонецПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), "Неделя")

Результат:

13.10.2002 23:59:59

ДобавитьКДате

Функция предназначена для прибавления к дате некоторой величины.

Параметры:

  • Тип увеличения. Тип Строка. Содержит одно из значений:
    • Минута;
    • День;
    • Неделя;
    • Месяц;
    • Квартал;
    • Декада;
    • Полугодие.
  • Величина – на сколько необходимо увеличить дату. Тип Число. Дробная часть игнорируется.

ДобавитьКДате(ДатаВремя(2002, 10, 12, 10, 15, 34), "Месяц", 1)

Результат:

12.11.2002 10:15:34

РазностьДат

Функция предназначена для получения разницы между двумя датами.

Параметры:

  • Выражение. Тип Дата. Исходная дата;
  • Выражение. Тип Дата. Вычитаемая дата;
  • Тип разности. Тип Строка. Содержит одно из значений:
    • Секунда;
    • Минута;
    • День;
    • Месяц;
    • Квартал;

РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), "ДЕНЬ")

Результат:

Подстрока

Данная функция предназначена для выделения подстроки из строки.

Параметры:

  • Строка. Тип Строка. Строка, из которой выделяют подстроку;
  • Позиция. Тип Число. Позиция символа, с которого начинается выделяемая из строки подстрока;
  • Длина. Тип Число. Длина выделяемой подстроки.

ПОДСТРОКА(Контрагенты.Адрес, 1, 4)

ДлинаСтроки

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

Параметр:

  • Строка. Тип Строка. Строка, длину которой определяют.

Строка(Контрагенты.Адрес)

Год

Данная функция предназначена для выделения года из значения типа Дата.

Параметр:

  • Дата. Тип Дата. Дата, по которой определяют год.

ГОД(РасхНакл.Дата)

Квартал

Данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4.

Параметр

  • Дата. Тип Дата. Дата, по которой определяют квартал
КВАРТАЛ(РасхНакл.Дата)

Месяц

Данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапа-зоне от 1 до 12.

  • Дата. Тип Дата. Дата, по которой определяют месяц.
МЕСЯЦ(РасхНакл.Дата)

ДеньГода

Данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365(366).

  • Дата. Тип Дата. Дата, по которой определяют день года.
ДЕНЬГОДА(РасхНакл.Дата)

День

Данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31.

  • Дата. Тип Дата. Дата, по которой определяют дня месяца.
ДЕНЬ(РасхНакл.Дата)

Неделя

Данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1.

  • Дата. Тип Дата. Дата, по которой определяют номера недели.
НЕДЕЛЯ(РасхНакл.Дата)

ДеньНедели

Данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7(воскресенье).

  • Дата. Тип Дата. Дата, по которой определяют день недели.
ДЕНЬНЕДЕЛИ(РасхНакл.Дата)

Час

Данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23.

  • Дата. Тип Дата. Дата, по которой определяют час суток.
ЧАС(РасхНакл.Дата)

Минута

Данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59.

  • Дата. Тип Дата. Дата, по которой определяют минута часа.
МИНУТА(РасхНакл.Дата)

Секунда

Данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59.

  • Дата. Тип Дата. Дата, по которой определяют секунды минуты.
СЕКУНДА(РасхНакл.Дата)

Выразить

Данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. В случае, если выражение будет содержать тип, отличный от требуемого типа, будет возвращено значение NULL.

Параметры:

  • Преобразуемое выражение;
  • Указание типа. Тип Строка. Содержит строку типа. Например, "Число", "Строка" и т.п. Кроме примитивных типов данная строка может содержать имя таблицы. В этом случае будет осуществлена попытка выразить к ссылке на указанную таблицу.

Выразить(Данные.Реквизит1, "Число(10,3)")

ЕстьNull

Данная функция возвращает значение второго параметра в случае, если значение первого параметра NULL.

В противном случае будет возвращено значение первого параметра.

ЕстьNULL(Сумма(Продажи.СуммаОборот), 0)

Функции общих модулей

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

В данном примере будет осуществлен вызов функции "СокращенноеНаименование" из общего модуля конфигурации.

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

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