Войти
Портал компьютерных советов - Hiper-ru
  • Как удалить антивирусы полностью с компьютера
  • Просмотр телеканалов онлайн в RusTV Player
  • Флаг и герб: Якутия и ее национальные символы
  • Файловый менеджер для windows phone, – какой он
  • Как клеить защитное стекло на телефон Защитная пленка или стекло
  • Основные проблемы с WhatsApp
  • Простой пример использования пользовательских полей в отчете на скд. Пользовательские поля в отчетах скд Пользовательское поле выражение 1с 8.3

    Простой пример использования пользовательских полей в отчете на скд. Пользовательские поля в отчетах скд Пользовательское поле выражение 1с 8.3

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

    Развитие платформы 1С: Предприятие 8 предлагает пользователям все больше возможностей. Так, например, в версии 8.2 отчеты стали гибче, позволив настраивать их под различные требования без помощи квалифицированных программистов.

    Изменение настроек отчета

    Чтобы просмотреть или изменить настройки отчета нужно зайти в меню «Все действия» и выбрать команду «Изменить вариант». После этого перед пользователем открывается окно с настройками для открытого отчета.

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

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

    Пользовательские поля

    В программе 1С: Управление торговлей 8 редакции 11 настройки отчетов предоставляют пользователям больше возможностей в их формировании.

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

    Рассмотрим использование данной функции на примере.

    Предположим, руководитель торговой компании, осуществляющей реализацией товаров на территории Москвы и регионов, желает подстроить под свои требования отчет «История продаж», желая вывести в нем данные по продаже номенклатуры в Москве и регионах в общем, а также - партнерам. Сделать это с использованием пользовательских полей очень легко.

    Таким образом, на наглядном примере видно, что гибкие настройки пользовательских полей в типовой программе 1С: Управление торговлей 8 предоставляют пользователем широкие возможности в настройках отчетов, позволяя оперативно получать необходимую информацию в удобном виде.

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

    Давным давно мной был написан отчет "Продажи товаров по отгрузке" http://infostart.ru/public/16477/ . В данной публикации не будемобсуждать его актуальность и достоинства. Данный отчет возьмется как шаблон для экспериментов, видоизменений. Тем более в комментариях спрашивали, как добавлять Поля.

    Открываем "Настройки..." и переходим на закладку "Пользовательские настройки".

    2. Добавляем "Новое поле Выражение"

    Добавление полей проставляет собой прописывание арифметических действий между Доступными полями, (это позволительно отмеченных зеленым квадратиком). Также особенность, если название такого поля состоит из двух или более слов, его необходимо заключить в квадратные скобки . Получиться вот так - [Сумма продажи].

    После сохранения, это поле станет доступно для выбора:

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

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

    Функций, используемые при написании полей.

    • Арифметические « + , - , * , / » с этим понятно, думаю объяснить принцип их действия не надо.
    • Логические выражения в используются для определения отборов. « > , < , = , >= , <= , <>, И, ИЛИ, НЕ ». Данные выражения используется с операцией выбора.
    • Операции выбора. Применяться для получения одного из возможных значений в соответствии с указанными условиями

    ВЫБОР
    КОГДА < Операция выбора > ТОГДА <Выражение>
    ИНАЧЕ <Выражение>
    КОНЕЦ
    Пример:
    ВЫБОР
    КОГДА Количество > 0 и Сумма > 0 ТОГДА «Правильно»
    ИНАЧЕ «Ошибка»
    КОНЕЦ

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

    • Встроенная функция, позволяет произвести определенные преобразования с полями.

    ПОДСТРОКА («Выражение» , «Начальная позиция» , «Конечная Позиция») - выбирается часть «Выражения», ограниченного рамками «Начальной…» и «Конечной…».
    Как это поисходит при значении Номенклатура - «Паста шоколадная» формула Подстрока(Номенклатура,1,5) выведет значение «Паста»

    Для работы с датой используются функции

    ГОД(<Дата>), КВАРТАЛ(<Дата>), МЕСЯЦ(<Дата>), ДЕНЬГОДА(<Дата>), ДЕНЬ(<Дата>), НЕДЕЛЯ(<Дата>), ДЕНЬНЕДЕЛИ(<Дата>),ЧАС(<Дата>), МИНУТА(<Дата>), СЕКУНДА(<Дата>)

    Будет выводится соответствующий названию функции значение.

    НАЧАЛОПЕРИОДА(«Дата», «Период сдвига»), КОНЕЦПЕРИОДА(«Дата», «Период сдвига»). Для данных функции, значение Выражения даты на начало или конец заданной даты.

    ДОБАВИТЬКДАТЕ («Дата», «Период сдвига», «Величина, на которую требуется увеличить дату») - функция позволяет увеличить или уменьшить дату на определенное значение.

    РАЗНОСТЬДАТ («Дата1», «Дата2», «Период сдвига») - Функция предназначена для получения разницы между двумя датами.

    «Период сдвига» одно из «Минута, Час, День, Неделя, Месяц, Квартал, Год, Декада, Полугодие».

    5.Агрегатные функции языка запросов используются при группировке результатов подсчете итогов

    СУММА (<>) арифметическую сумму всех попавших в выборку значений.
    СРЕДНЕЕ (<>) вычисляет среднее значение всех попавших в выборку
    МИНИМУМ (<>) вычисляет минимальное значение из всех попавших в выборку значений
    МАКСИМУМ (<>) вычисляет максимальное значение из всех попавших в выборку значений
    КОЛИЧЕСТВО (<>) подсчитывает количество значений параметра, попавших в выборку. Данная функция позволяет имеет варианты использования. КОЛИЧЕСТВО(*) - позволяет подсчитать количество строк в результате. КОЛИЧЕСТВО(РАЗЛИЧНЫЕ «Выражение») - позволяет подсчитать количество различных значений указанного поля.

    Сумма(Выбор
    Когда Подстрока(Номенклатура, 1, 5) = "Паста"
    Тогда Количество *0.2
    Иначе Количество *0.35
    Конец)

    Получится сумма значений при этом когда в начале наименования номенклатуры присутствует «Паста» в этом случает количество увеличивается на 0.2 если не присутствует увеличивается на 0.35.

    Год([Документ.Дата])

    Выведется Год когда документ записан/проведен.

    Более сложный пример, без расшифровки.

    Выбор
    Когда Квартал([Документ.Дата]) = 1 И Подстрока(Номенклатура, 1, 5) = "Паста"
    Тогда Количество * 0.2
    Иначе Выбор
    Когда Квартал([Документ.Дата]) = 2
    Тогда Количество * 0.3
    Иначе Выбор
    Когда Квартал([Документ.Дата]) = 3
    Тогда Количество * 0.4
    Иначе Выбор
    Когда Квартал([Документ.Дата]) = 4
    Тогда Количество * 0.5
    Конец
    Конец
    Конец
    Конец

    Отчет получает остатки товаров на складах в различных разрезах (характеристики, серии, единицы измерения и т.д.). Чтобы не усложнять пример, оставим лишь группировку по номенклатуре и вывод лишь конечного остатка на дату отчета. Итоговая таблица будет показывать остатки по номенклатуре в зазрезе складов.

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

    1. Оповещение о количестве. Если количество меньше или равно 5, то оповещение "Недостаточно". Если количество больше 5, то меньше или равно 10, то оповещение "Нормально". Если количество больше 10, то "Переизбыток".
    2. Формула расчета конечного остатка. В дополнительной колонке пользователь хочет видеть какие действия выполнила программа чтобы получить значение конечного остатка. То есть формулу "Начальный остаток + Оборот = Конечный остаток", где будут подставлены соответствующие значения.

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

    Дополнительные поля

    И так, приступим. Зайдем в настройки варианта отчета:

    Перед нами откроется конструктор настроек варианта отчета СКД. Перейдя на вкладку "Пользовательские поля" начнем их создание.

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

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

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

    "Выбор Когда Тогда Иначе Конец",

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

    Аналогично заданы настройки для поля "Формула расчета конечного остатка":


    Здесь нужно сказать о некоторых нюансах:

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

    Все готово к использованию полей в отчете!

    Настраиваем и формируем отчет

    Поле "Формула расчета конечного остатка" добавим в выводимые поля отчета:

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

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

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

    Поверьте мне, обучить его использовать эти возможности можно, ведь это куда проще, чем писать формулы в электронных таблицах Excel.

    Мы довольно подробно рассмотрели настройки отчетов, реализованных на базе СКД. Теперь разберем более тонкие и детальные настройки вариантов отчета. Окно «продвинутых» настроек варианта отчета вызывается по команде «Еще» - «Прочее» - «Изменить вариант отчета».

    Окно изменения варианта отчета разделено на две части:

    1. Структура отчета.

    2. Настройки отчета.


    Раздел структуры варианта отчета аналогичен вкладке «Структура» стандартных настроек отчета. Назначение и настройка группировок подробно рассмотрена в ч. 1 статьи.

    Таблица структуры варианта отчета, кроме непосредственно колонки с группировками, содержит несколько дополнительных колонок:

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

    Раздел настроек состоит из следующих вкладок:

    1. Параметры. Содержит параметры СКД, доступные пользователю.

    Параметр СКД - некоторое значение, использующееся для получения данных отчета. Это может быть значение условия для отбора или проверки данных, а также вспомогательное значение.


    Таблица параметров представлена в формате «Параметр»-«Значение». При необходимости можно менять значения параметров. Нажатие на кнопку «Свойства элемента пользовательских настроек» открывает пользовательские настройки элемента.


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

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

    2. Пользовательские поля. Содержит поля, которые формирует сам пользователь на основании данных, выбираемых отчетом.


    Пользователь может добавить два вида полей:

    • Новое поле выбор…
    • Новое поле выражение…

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


    Например, вычислим оценку количества продаж. Будем считать, что, если продано меньше 10 единиц товара, продали мало, а если больше 10 единиц - много. Для этого зададим 2 значения вычисляемого поля: первое будет с отбором «Количество товаров Меньше или равно "10"», второе с отбором «Количество товаров Больше "10"».

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

    Например, вычислим средний процент скидки. Средний процент скидки рассчитывается по формуле: [Сумма продаж без скидки] - [Сумма продаж со скидкой] / [Сумма продаж без скидки]. Необходимо помнить, что сумма продаж без скидки может быть нулевой, поэтому используем оператор ВЫБОР для проверки. Получим следующие выражения:

    · Для детальных записей:

    Выбор

    Когда [Сумма продаж без скидки] = 0

    Тогда 0

    Иначе [Сумма продаж без скидки] - [Сумма продаж со скидкой] / [Сумма продаж без скидки]

    Конец

    · Для итоговых записей:

    Выбор

    Когда Сумма([Сумма продаж без скидки]) = 0

    Тогда 0

    Иначе Сумма([Сумма продаж без скидки]) - Сумма([Сумма продаж со скидкой]) / Сумма([Сумма продаж без скидки])

    Конец

    Как было сказано ранее, в выражении итоговых записей используем агрегатную функцию «Сумма».

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


    4. Поля. Содержит поля, которые будут выведены в результат варианта отчета. Поля настраиваются отдельно для каждой из группировок, но можно задать общие поля для варианта отчета, если выбрать в дереве структуры корень «Отчет». Можно добавить поле из результата отчета, пользовательское поле или выбрать авто поле, тогда система подберет поля автоматически. Также данная вкладка позволяет изменять порядок следования полей.

    Поля можно группировать, чтобы логически выделить какую-либо часть отчета или задать особое расположение колонок. При добавлении группы становится активна колонка «Расположение» и позволяет выбрать один из вариантов расположения:

    • Авто - система располагает поля автоматически;
    • Горизонтально - поля располагаются горизонтально;
    • Вертикально - поля располагаются вертикально;
    • В отдельной колонке - поля располагаются в разных колонках;
    • Вместе - поля располагаются в одной колонке.


    5. Отбор. Содержит отборы, используемые в варианте отчета. Настройка отборов была подробно рассмотрена в части 1 данной статьи. Отборы настраиваются отдельно для каждой из группировок, но можно задать общие отборы для варианта отчета, если выбрать в дереве структуры корень «Отчет».


    6. Сортировка. Содержит поля сортировки, используемые в варианте отчета. Настройка полей сортировки была подробно рассмотрена в части 1 данной статьи. Сортировка настраиваются отдельно для каждой из группировок, но можно задать общие поля сортировки для варианта отчета, если выбрать в дереве структуры корень «Отчет».


    7. Условное оформление. Содержит элементы условного оформления, используемые в варианте отчета. Настройка условного оформления была подробно рассмотрена в части 1 данной статьи. Условное оформление настраивается отдельно для каждой из группировок, но можно задать общие элементы условного оформления для варианта отчета, если выбрать в дереве структуры корень «Отчет».


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


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


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

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

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

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

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

    Литералы

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

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

    Строка

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

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

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

    Например:

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

    Число

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

    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)

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

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

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

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

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