1С скд пользовательские поля выражение

Содержание
  1. Отчет
  2. Дополнительные поля
  3. Настраиваем и формируем отчет
  4. Содержание
  5. Язык выражений системы компоновки данных
  6. Литералы
  7. Строка
  8. Число
  9. Булево
  10. Значение
  11. Операции над числами
  12. Унарный –
  13. Унарный +
  14. Бинарный –
  15. Бинарный +
  16. Произведение
  17. Деление
  18. Остаток от деления
  19. Операции над строками
  20. Конкатенация (Бинарный +)
  21. Подобно
  22. Операции сравнения
  23. Равно
  24. Не равно
  25. Меньше
  26. Больше
  27. Меньше или равно
  28. Больше или равно
  29. Операция В
  30. Операция проверки наличия значения в наборе данных
  31. Операция проверки значения на NULL
  32. Операция проверки значения на неравенство NULL
  33. Логические операции
  34. Операция НЕ
  35. Операция И
  36. Операция ИЛИ
  37. Агрегатные функции
  38. Сумма
  39. Количество
  40. Количество различных
  41. Максимум
  42. Минимум
  43. Среднее
  44. Другие операции
  45. Операция ВЫБОР
  46. Правила сравнения двух значений
  47. Работа со значением NULL
  48. Приоритеты операций
  49. Функции языка выражений системы компоновки данных
  50. Вычислить
  51. Уровень
  52. НомерПоПорядку
  53. НомерПоПорядкуВГруппировке
  54. Формат
  55. НачалоПериода
  56. КонецПериода
  57. ДобавитьКДате
  58. РазностьДат
  59. Подстрока
  60. ДлинаСтроки
  61. Квартал
  62. Месяц
  63. ДеньГода
  64. Неделя
  65. ДеньНедели
  66. Минута
  67. Секунда
  68. Выразить
  69. ЕстьNull
  70. Функции общих модулей

Отчет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержание

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

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

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

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

Литералы

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

Строка

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

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

Число

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

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

Булево

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

Значение

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

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

Унарный –

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

Унарный +

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

Бинарный –

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

Бинарный +

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

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

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

Деление

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

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

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

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

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

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

Подобно

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

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

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

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

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

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

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

Равно

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

Не равно

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

Меньше

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

Больше

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

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

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

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

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

Операция В

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

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

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

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

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

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

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

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

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

Операция НЕ

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

Операция И

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

Операция ИЛИ

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

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

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

Сумма

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

Количество

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

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

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

Максимум

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

Минимум

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

Среднее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вычислить

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

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

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

Уровень

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

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

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

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

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

Формат

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

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

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

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

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

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

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

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

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

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

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

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

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

    Подстрока

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

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

    ДлинаСтроки

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

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

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

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

    Квартал

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

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

    Месяц

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

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

    ДеньГода

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

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

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

    • Дата. Тип Дата. Дата, по которой определяют дня месяца.

    Неделя

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

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

    ДеньНедели

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

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

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

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

    Минута

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

    • Дата. Тип Дата. Дата, по которой определяют минута часа.

    Секунда

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

    • Дата. Тип Дата. Дата, по которой определяют секунды минуты.

    Выразить

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

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

    ЕстьNull

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

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

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

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

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

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

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

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

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

    Рассмотрим добавление пользовательского поля на примере стандартного отчёта Коэффициент текучести кадров в конфигурации 1С:Зарплата и управление персоналом 3.1.

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

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

    Но с СКД всё стало гораздо проще.

    1. Для начала сохраним новый вариант отчёта по кнопке Выбрать вариант отчёта или сохранить новый — Сохранить вариант отчёта:

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

    2. Теперь добавим наше поле. Переходим в меню Все действия (или Ещё в интерфейсе 1С 8.3) — Прочее — Изменить вариант отчёта.

    Затем переходим на вкладку Пользовательские поля в нижней части формы редактирования варианта, нажимаем на кнопку Добавить — Новое поле выбор:

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

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

    Заполняем список нужными должностями вручную или с помощью кнопки Подбор. Например, в категорию Административный отнесём должность Директор и Администратор, в категорию Линейный — Продавец и Бухгалтер, а в категорию Охрана — Начальник охраны и Охранник.

    В итоге поле Категория персонала будет таким:

    Внимание! Т ип значений списка — Число, а наименование категории мы заносим в поле Представление. Если значениям списка сразу присвоить тип Строка, мы в дальнейшем не сможем настроить корректный отбор по этому полю.Отбор по строковым полям настраивается только по принципу Заполнено/Не заполнено.

    3. Теперь настроим отбор. Переходим на вкладку Отбор . Ищем в конце списка слева папку Пользовательские поля, а в ней — поле Категория персонала, переносим его в правую часть.

    Затем щёлкаем по строке отбора правой кнопкой мыши и выбираем пункт Свойства элемента пользовательских настроек.

    Устанавливаем флаг Включать в пользовательские настройки и выбираем режим редактирования — Быстрый доступ. Это позволит управлять настройкой отбора по категории персонала прямо в шапке отчёта.

    4. Теперь добавим группировку по пользовательскому полю. Для этого после группировки по полям Организация и Период формирования добавляем группировку по категории персонала и переносим в неё группировку по должности. Затем выделяем группировку Категория персонала и переходим на вкладку Дополнительные настройки . Устанавливаем флаг Текущий элемент имеет собственные дополнительные настройки, ищем в нижнем списке параметр Расположение общих итогов по вертикали и устанавливаем его значение равным Конец.

    5. Попробуем сформировать отчёт:

    Отчёт в целом готов, но при необходимости его можно немного улучшить.

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

    Обратите внимание, что сортировка пользовательских полей происходит по значениям, а не по представлениям.

    7. По полям отчета можно настроить условное оформление. Для этого переходим на вкладку Условное оформление и добавляем в список новый элемент. Выбираем вкладку Условие , добавляем в правую часть нужное поле и настраиваем его:

    На вкладке Оформление задаём требуемое оформление для полей, удовлетворяющих условию. Например, красный цвет шрифта. Сохраняем нашу настройку:

    Теперь отчёт имеет следующий вид:

    Не забудьте после всех манипуляций сохранить вариант отчёта!

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector