1с скд параметры выражение
Важно! Если параметр функции имеет тип Строка и в нем указывается имя поля, которое содержит пробелы, то такое имя поля должно быть заключено в квадратные скобки.
Например: "[Количество Оборот]".
1. Сумма (Total) - рассчитывает сумму значений выражений, переданных ей в качестве аргумента для всех детальных записей. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива.
2. Количество (Count) - рассчитывает количество значений отличных от значения NULL. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива.
Синтаксис :
Количество([Различные] Параметр)
В указания получения различных значений следует перед параметром метода Количество указать Различные (Distinct).
Пример :
Количество(Продажи.Контрагент)
Количество(Различные Продажи.Контрагент)
3. Максимум (Maximum) - получает максимальное значение. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива.
4. Минимум (Minimum) - получает минимальное значение. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива.
5. Среднее (Average) - получает среднее значение для значений, отличных от NULL. В качестве параметра можно передавать Массив. В этом случае функция будет применена к содержимому массива.
6. Массив (Array) - формирует массив, содержащий для каждой детальной записи значение параметра.
Синтаксис :
Массив([Различные] Выражение)
В качестве параметра можно использовать таблицу значений. При этом результатом работы функции будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра. Если выражение содержит функцию Массив, то считается, что данное выражение является агрегатным. Если указано ключевое слово Различные, то получаемый массив не будет содержать дублирующихся значений.
7. ТаблицаЗначений (ValueTable) - формирует таблицу значений, содержащую столько колонок, сколько параметров у функции. Детальные записи получаются из наборов данных, которые нужны для получения всех полей, участвующих в выражениях параметров функции.
Синтаксис :
ТаблицаЗначений([Различные] Выражение1 [КАК ИмяКолонки1][, Выражение2 [КАК ИмяКолонки2]. ])
Если параметрами функции выступают поля–остатки, то в результирующую таблицу значений попадут значения для записей по уникальным комбинациям измерений из других периодов. При этом значения получаются только для полей-остатков, измерений, счетов, полей периодов и их реквизитов. Значениями остальных полей в записях из других периодов считаются равными NULL. Если выражение содержит функцию ТаблицаЗначений, то считается, что данное выражение является агрегатным. Если указано ключевое слово Различные, то в получаемой таблице значений не будет строк, содержащих одинаковые данные. После каждого параметра может располагаться необязательное ключевое слово КАК и имя, которое будет назначено колонке таблицы значений.
Пример :
ТаблицаЗначений(Различные Номенклатура, ХарактеристикаНоменклатуры КАК Характеристика)
8. Свернуть (GroupBy) - предназначена для удаления дубликатов из массива.
Синтаксис :
Свернуть(Выражение, НомераКолонок)
- Выражение - выражение типа Массив или ТаблицаЗначений, значения элементов которого нужно свернуть;
- НомераКолонок - (если выражение имеет тип ТаблицаЗначений) тип Строка. Номера или имена (через запятую) колонок таблицы значений, среди которых нужно искать дубликаты. По умолчанию – все колонки.
9. ПолучитьЧасть (GetPart) - получает таблицу значений, содержащую определенные колонки из исходной таблицы значений.
Синтаксис :
ПолучитьЧасть(Выражение, НомераКолонок)
- Выражение - тип ТаблицаЗначений. Таблица значений, из которой нужно получить колонки;
- НомераКолонок - тип Строка. Номера или имена (через запятую) колонок таблицы значений, которые нужно получить.
Пример :
ПолучитьЧасть(Свернуть(ТаблицаЗначений(НомерТелефона, Адрес) ,"НомерТелефона"),"НомерТелефона");
10. Упорядочить (Order) - предназначена для упорядочивания элементов массива и таблицы значений.
Синтаксис :
Упорядочить(Выражение, НомераКолонок)
- Выражение - Массив или ТаблицаЗначений, из которой нужно получить колонки;
- НомераКолонок - (если выражение имеет тип ТаблицаЗначений) номера или имена (через запятую) колонок таблицы значений, по которым нужно упорядочить. Может содержать направление упорядочивания и необходимость автоупорядочивания: Убыв/Возр + Автоупорядочивание.
Пример :
Упорядочить(ТаблицаЗначений(НомерТелефона, Адрес, ДатаЗвонка),"ДатаЗвонка Убыв");
11. СоединитьСтроки (JoinStrings) - предназначена для объединения строк в одну строку.
Синтаксис :
СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок)
- Значение - выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
- РазделительЭлементов - строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
- РазделителиКолонок - строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию "; ".
12. ГрупповаяОбработка (GroupProcessing) - возвращает объект ДанныеГрупповойОбработкиКомпоновкиДанных. В объект в свойство Данные помещается в виде таблицы значений значения группировок для каждого выражения, указанного в параметре функции Выражения. В случае использования иерархической группировки каждый уровень иерархии обрабатывается отдельно. Значения для иерархических записей также помещаются в данные. В свойство ТекущийЭлемент объекта помещается строка таблицы значений, для которой в настоящий момент вычисляется функция.
Синтаксис :
ГрупповаяОбработка(Выражения, ВыраженияИерархии, ИмяГруппировки)
- Выражения. Выражения, которые нужно вычислить. Строка, в которой через запятую перечислены выражения, которые нужно вычислить. После каждого выражение возможно наличие необязательного ключевого слова КАК и имени колонки результирующей таблицы значений. Каждое выражение образует колонку таблицы значений свойства Данные объекта ДанныеГрупповойОбработкиКомпоновкиДанных.
- ВыраженияИерархии. Выражения, которые нужно вычислить для иерархических записей. Аналогично параметру Выражения с тем отличием, что параметр ВыраженияИерархии используется для иерархических записей. Если параметр не указан, то для вычисления значений для иерархических записей используется выражения, указанные в параметре Выражение.
- ИмяГруппировки. Имя группировки, в которой нужно вычислять группировку обработки. Строка. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку, или не указан, то значение вычисляется для группировки – строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
14. Любой (Any) - если хоть одна запись имеет значение Истина, то результат Истина, иначе Ложь
15. СтандартноеОтклонениеГенеральнойСовокупности (Stddev_Pop) - вычисляет стандартное отклонение совокупности. Вычисляется по формуле: SQRT(ДисперсияГенеральнойСовокупности(X)).
Пример :
X | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Y | 7 | 1 | 2 | 5 | 7 | 34 | 32 | 43 | 87 |
Результат: 805.694444
16. СтандартноеОтклонениеВыборки (Stddev_Samp) - вычисляет совокупное типовое стандартное отклонение. Вычисляется по формуле: SQRT(ДисперсияВыборки(X)).
Пример :
X | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Y | 7 | 1 | 2 | 5 | 7 | 34 | 32 | 43 | 87 |
Результат: 28.3847573
17. ДисперсияВыборки (Var_Samp) - вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Вычисляется по формуле: (Сумма(X^2) - Сумма(X)^2 / Количество(X)) / (Количество(X) - 1). Если Количество(X) = 1, то возвращается значение NULL.
18. ДисперсияГенеральнойСовокупности (Var_Pop) - вычисляет различие совокупности ряда чисел без учета значений NULL в этом наборе. Вычисляется по формуле: (Сумма(X^2) - Сумма(X)^2 / Количество(X)) / Количество(X)
19. КовариацияГенеральнойСовокупности (Covar_Pop) - вычисляет ковариацию ряда числовых пар. Вычисляется по формуле: (Сумма(Y * X) - Сумма(X) * Сумма(Y) / n) / n, где n число пар (Y, X) в которых ни Y ни X не являются NULL.
Синтаксис :
КовариацияГенеральнойСовокупности(Y, X)
20. КовариацияВыборки (Covar_Samp) - вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Вычисляется по формуле: (Сумма(Y * X) - Сумма(Y) * Сумма(X) / n) / (n-1), где n число пар (Y, X) в которых ни Y ни X не являются NULL.
Синтаксис :
КовариацияВыборки(Y, X)
21. Корреляция (Corr) - вычисляет коэффициент корреляции ряда числовых пар. Вычисляется по формуле: КовариацияГенеральнойСовокупности(Y, X) / (СтандартноеОтклонениеГенеральнойСовокупности(Y) * СтандартноеОтклонениеГенеральнойСовокупности(X)). Не учитываются пары, в которых Y или X равны NULL.
Синтаксис :
Корреляция(Y, X)
22. РегрессияНаклон (Regr_Slope) - вычисляет наклон линии. Вычисляется по формуле: КовариацияГенеральнойСовокупности(Y, X) / ДисперсияГенеральнойСовокупности(X). Вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияНаклон(Y, X)
23. РегрессияОтрезок (Regr_Intercept) - вычисляет Y-точку пересечения линии регресса. Вычисляется по формуле: Среднее(Y) - РегрессияНаклон(Y, X) * Среднее(X). Вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияОтрезок(Y, X)
24. РегрессияКоличество (Regr_Count) - вычисляет количество пар не содержащих NULL.
Синтаксис :
РегрессияКоличество(Y, X)
25. РегрессияR2 (Regr_R2) - вычисляет коэффициент детерминации. Вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияR2(Y, X)
- Y - тип Число;
- X - тип Число.
- Null - если ДисперсияГенеральнойСовокупности(X) = 0;
- 1 - если ДисперсияГенеральнойСовокупности(Y)=0 И ДисперсияГенеральнойСовокупности(X)<>0;
- POW(Корреляция(Y,X),2) - если ДисперсияГенеральнойСовокупности(Y)>0 И ДисперсияГенеральнойСовокупности(X)<>0.
26. РегрессияСреднееX (Regr_AvgX) - вычисляет среднее число X после исключения X и Y пар, где или X или Y являются пустыми. Среднее(X) вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияСреднееX(Y, X)
27. РегрессияСреднееY (Regr_AvgY) - вычисляет среднее число Y после исключения X и Y пар, где или X или Y являются пустыми. Среднее(Y) вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияСреднееY(Y, X)
28. РегрессияSXX (Regr_SXX) - вычисляется по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(X). Вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияSXX(Y, X)
- Y - тип Число;
- X - тип Число.
Пример :
X | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Y | 7 | 1 | 2 | 5 | 7 | 34 | 32 | 43 | 87 |
Результат: 60
29. РегрессияSYY (Regr_SYY) - вычисляется по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(Y). Вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияSYY(Y, X)
30. РегрессияSXY (Regr_SXY) - вычисляется по формуле: РегрессияКоличество(Y, X) * КовариацияГенеральнойСовокупности(Y, X). Вычисляется без учета пар, содержащих NULL.
Синтаксис :
РегрессияSXY (Y, X)
31. МестоВПорядке (Rank)
Синтаксис :
МестоВПорядке(Порядок, ПорядокИеррахии, ИмяГруппировки)
- Порядок – тип Строка. Содержит выражения, в последовательности которых нужно расположить групповые записи, разделенные через запятую. Направление упорядочивания управляется при помощи слов Возр, Убыв. После поля также можно указать строку Автоупорядочивание, что обозначает, что при упорядочивании ссылок нужно использовать поля упорядочивания, определенные для объекта, на который ссылка. Если последовательность не указана, то значение рассчитывается в последовательности группировки;
- ПорядокИеррахии – тип Строка. Содержит выражения упорядочивания для иерархических записей;
- ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислять группировку обработки. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку, или не указан, то значение вычисляется для группировки – строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
Пример :
МестоВПорядке("[Количество Оборот]")
32. КлассификацияABC (ClassificationABC)
Синтаксис :
КлассификацияABC(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки)
В СКД есть вкладка "Параметры"
Там в Выражениях вроде как можно подставить значение, я вставляю выражение как на рисунке, но данные не встают в компоновку.
Вопрос что я делаю не так?
Не хотелось бы программно переписывать все эти вставки.
(14) Лучше как раз прописать программно установку параметров, т.к. у вас поиск по коду, который может ничего не найти. Эту ситуацию стоит так же обрабатывать.
(16)
(15)
(2) Все работало, просто у меня порядок был не правильно задан данных, из за этого отчет не правильно выводил данные.
Спасибо за поддержку
(9) Значит, что "НайтиПоКоду" должно поставить ссылку в параметр, который стоит в наборе данных типа запрос.
Но параметр получает пустую ссылку.
(12) если код точно соответствует, тогда смотрите дальше. Проблема не в выражение параметра.
Приводите код. Настройки.
(13) Отчет на текущий момент полностью на СКД собран.
И если не получиться эти параметры вогнать, то придется программно прописывать вставку этих параметров в отчет, чего бы не хотелось
(14) Лучше как раз прописать программно установку параметров, т.к. у вас поиск по коду, который может ничего не найти. Эту ситуацию стоит так же обрабатывать.
(16)
(15)
(2) Все работало, просто у меня порядок был не правильно задан данных, из за этого отчет не правильно выводил данные.
Спасибо за поддержку
(17) Можете поподробнее рассказать как решили?
У меня схожая ситуация. Сижу думаю: или лыжи не едут, или со мной что-то не так
(18)Все работало, просто у меня порядок найти по коду был не правильный (70 строк, ошибся) из за чего не шел отчет, от чего я думал что он не робит.
это выражение встроенного языка, а не выражение компоновки данных
для корректной работы выражений встроенного языка 1С в СКД необходимо помещать эти выражения
в функции экспортного общего модуля и использовать вызов этой функции в СКД. Перед компоновкой
необходимо разрешить вызов функций общих модулей в этой СКД.
Язык выражений системы компоновки данных предназначен для записи выражений, используемых в различных частях системы.
Выражения используются в следующих подсистемах:
- схема компоновки данных — для описания вычисляемых полей, полей итогов, выражений связи и т.д.;
- настройки компоновки данных — для описания выражений пользовательских полей;
- макет компоновки данных — для описания выражений связи наборов данных, описания параметров макета и т.д.
Литералы
В выражении могут присутствовать литералы. Возможны литералы следующих типов:
Строка
Строковый литерал записывается в символах «”», например:
При необходимости использования внутри строкового литерала символа «”», следует использовать два таких символов.
Число
Число записывается без пробелов, в десятичном формате. Дробная часть отделяется при помощи символа «.». Например:
Литерал типа дата записывается при помощи ключевого литерала ДАТАВРЕМЯ (DATETIME). После данного ключевого слова, в скобках, через запятую перечисляются год, месяц, день, часы, минуты, секунды. Указание времени не обязательно.
Булево
Булевы значения могут быть записаны при помощи литералов Истина (True), Ложь (False).
Значение
Для указания литералов других типов (системных перечислений, предопределенных данных) используется ключевое слово Значение, после которого в скобках идет указание имени литерала.
Операции над числами
Унарный –
Данная операция предназначена для изменения знака числа на обратный. Например:
Унарный +
Данная операция не выполняет над числом никаких действий. Например:
Бинарный -
Данная операция предназначена для вычисления разности двух чисел. Например:
Бинарный +
Данная операция предназначена для вычисления суммы двух чисел. Например:
Произведение
Данная операция предназначена для вычисления произведения двух чисел. Например:
Деление
Данная операция предназначена для получения результата деления одного операнда на другой. Например:
Остаток от деления
Данная операция предназначена для получения остатка от деления одного операнда на другой. Например:
Операции над строками
Конкатенация (Бинарный +)
Данная операция предназначена для конкатенации двух строк. Например:
Подобно
Данная операция проверяет соответствие строки переданному шаблону.
Значением оператора ПОДОБНО является ИСТИНА, если значение удовлетворяет шаблону, и ЛОЖЬ в противном случае.
Следующие символы в имеют смысл, отличный от просто очередного символа строки:
- % - процент: последовательность, содержащая ноль и более произвольных символов;
- _ - подчеркивание: один произвольный символ;
- […] - один или несколько символов в квадратных скобках: один символ, любой из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
- [^…] - в квадратных скобках значок отрицания, за которым следует один или несколько символов: любой символ, кроме тех, которые перечислены следом за значком отрицания;
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать , указанный после ключевого слова СПЕЦСИМВОЛ (ESCAPE).
означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем эта последовательность может располагаться, начиная с произвольной позиции в строке.
Операции сравнения
Равно
Данная операция предназначена для сравнения двух операндов на равенство. Например:
Не равно
Данная операция предназначена для сравнения двух операндов на неравенство. Например:
Меньше
Данная операция предназначена для проверки того, что первый операнд меньше второго. Например:
Больше
Данная операция предназначена для проверки того, что первый операнд больше второго. Например:
Меньше или равно
Данная операция предназначена для проверки того, что первый операнд меньше либо равен второму. Например:
Больше или равно
Данная операция предназначена для проверки того, что первый операнд больше либо равен второму. Например:
Операция В
Данная операция осуществляет проверку наличия значения в переданном списке значений. Результатом операции будет Истина, в случае, если значение найдено, или Ложь - в противном случае. Например:
Операция проверки наличия значения в наборе данных
Операция осуществляет проверку наличия значения в указанном наборе данных. Набор данных для проверки должен содержать одно поле. Например:
Операция проверки значения на NULL
Данная операция возвращает значение Истина в случае, если значение является значением NULL. Например:
Операция проверки значения на неравенство NULL
Данная операция возвращает значение Истина в случае, если значение не является значением 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С (в сокращении — СКД). Параметры в запросе СКД, фигурные скобочки в запросе СКД — оно же Расширение языка запросов для СКД, особенности настройки страницы “Параметры” СКД, вывод параметров на форму, программная установка параметров, мягкие и жесткие параметры.
Параметры могут использоваться практически в любом месте запроса и выполнять самые различные функции.
Параметры обозначаются знаком & после которого следует имя параметра.
Параметр может быть полем запроса, частью произвольного выражения поля запроса, условием для виртуальной таблицы, частью выражения в отборе запроса и так далее:
При построении запроса конструктором на вкладке “Условия” если не стоит галочка “Произвольное”, то конструктор считает что в правом значении параметр и он записывается без символа &.
Таким образом этот блок настраивается в конструкторе.
Если значение параметра не задано, то построение СКД будет невозможно и будет выдана ошибка, поэтому такие параметры называют “обязательными” или “жесткими”.
Выбрать.
Этот блок располагается в запросе типа выборка данных пакета запросов СКД в первом запросе объединения между перечнем полей и “ИЗ” и заключается в фигурные скобки.
В этом блоке мы перечисляем поля, которые пользователь может выбирать для вывода, группировки и упорядочивания. Конструкция «.*» в параметре “Марка.*” позволяет выбирать для вывода, группировки и упорядочивания дочерние поля значения, например, Марка.Код. Слово “КАК” позволяет задать псевдоним, например, “Ссылка КАК Машина”. Поля в этом блоке попадают в перечень полей набора, даже если отключено автозаполнение. Если автозаполнение включено, то упомянутые поля попадают в соответствии с тем, как они настроены расширением кода, то есть если ссылочное поле без конструкции “.*” дочерние поля доступны не будут, если указан псевдоним — именно он попадет в перечень полей набора.
Таким образом этот блок настраивается в конструкторе.
При автоматическом заполнении полей набора данных, для не включенных в блок расширения “ВЫБРАТЬ”, добавляются все поля списка выборки и их дочерние поля. Они становятся доступными для выбора, упорядочивания, группировки, отбора. Также добавляются поля, которые упомянуты в параметре “Условия” виртуальных таблиц как доступные для отбора.
Отбор, установленный в пользовательских настройках, будет действовать не только на основной запрос, но и на все запросы в пакете. Но это не всегда соответствует логике отчета, к примеру, если помимо отобранной номенклатуры и сумм по ней нужно выводить общую сумму продаж для сравнения. В таких случаях нам нужны специфические отборы в каждом запросе пакета.
Блок расширения “ГДЕ” может быть расположен после или вместо обычного блока “ГДЕ” в любом запросе, подзапросе, запросах объединения и заключается в фигурные скобки. Для присвоения отбору псевдонима используется конструкция “КАК”. Псевдоним нужно использовать чтобы отбор производился конструкцией расширения языка запросов, но не происходил автоматически по наименованию поля.
Если автозаполнение полей набора отключено, поля из этого блока попадают в перечень полей набора доступными только для отбора, использование дочерних полей зависит от наличия конструкции “.*”.
Если автозаполнение включено, и это поле включено в блок расширения “ВЫБРАТЬ” тогда настройки обоих блоков объединяются. Если не включено в “ВЫБРАТЬ” то поля попадают доступными для вывода, группировки, отбора и упорядочивания.
В случае если нужно дополнительно установить какое то ограничение полю, то можно вручную установить галочку в соответствующее поле перечня полей набора данных СКД.
Параметры в блоке «ГДЕ» не обязательны для заполнения, поэтому эти параметры называют “необязательными” или “мягкими”.
Также в блоке “ГДЕ” вместо параметра может быть произвольное выражение с использованием конструкции ВЫБОР или параметров со страницы “Параметры” СКД. Правда в последнем случае вид сравнения необходимо указывать конкретно.
Нужно с осторожностью использовать вид сравнения МЕЖДУ поскольку:
Если параметры НачалоПериода и КонецПериода не будут заданы, то система получит документы за весь период.
Если параметры НачалоПериода и КонецПериода будут заданы, то система получит документы за указанный период.
Если какой-то один из параметров не будет задан, то система выдаст ошибку.
Один из вариантов решения это разбить МЕЖДУ на два условия чтобы система не выдавала ошибку в случае одного незаполненного параметра.
Это же замечание относится к любым выражением с использованием нескольких параметров.
Параметры виртуальных таблиц.
В параметрах виртуальных таблиц в отличие от предыдущих блоков, каждый параметр заключается в фигурные скобки. В полях относящихся к периоду название параметра ставится с &. Пример &ДатаНачала. В поле “Условие” параметры оформляются аналогично блоку “ГДЕ”.
Поведение параметров из поля “Условие” при снятии или установке галочки “Автозаполнение” также аналогично блоку «ГДЕ».
Параметры из полей периода попадают на страницу “Параметры” СКД. Если автозаполнение включено и в поле периода параметр не вписан, параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД.
Таким образом, эти параметры заполняются в конструкторе запроса. Для открытия формы “Параметры виртуальной таблицы” нужно выбрать виртуальную таблицу в списке таблиц и нажать выделенную синим кнопку. Также тут у таблиц есть булевый реквизит “Обязательная” и числовой реквизит “Номер группы”. Если признак обязательности таблицы не установлен, то она будет добавляться в результирующий запрос только в случае, когда хотя бы одно поле из нее задействовано в компоновке. Номер группы заполняется для необязательных таблиц и обозначает группу таблиц, которые будут добавлены в результирующий запрос только, когда из этой группы таблиц задействовано хотя бы одно поле.
В параметрах виртуальных таблиц возможно совместное использование “жестких” параметров запросов и “мягких” параметров компоновки данных.
В этом примере если в настройках установлено значение параметра &НачалоПериода, то будет использоваться его значение. В противном случае в качестве значения параметра виртуальной таблицы будет использоваться значение “жесткого” параметра “&Начало”.
Если автозаполнение включено и в поля периода не вписаны “мягкие” параметры компоновки данных то параметры с именем поля периода будут автоматически созданы на странице “Параметры” СКД и текст запроса:
будет соответствовать следующему:
В этом случае “мягкие” параметры также будут иметь приоритет над “жесткими”.
Обзорный вид страницы.
На эту страницу автоматически добавляются все параметры из запроса. Можно добавлять свой параметр в для использования его в вычисляемых полях например.
Строка параметра имеет следующие реквизиты:
Имя — это имя параметра, с помощью которого к его значению можно обращаться в тексте запроса, в вычисляемых полях и других местах где доступны выражения.
Заголовок — название, выводимое пользователю.
Тип — определяет тип параметра. Иногда при выборе дат периода, пользователю не нужно указывать время. Тогда нажав на “…” можно указать состав даты — Дата.
Таким же образом можно указать формат числа для численного параметра и длину строки для строкового.
А для того чтобы введенные значения интерпретировались в отчете как начало и конец дня следует в запросе использовать функции НачалоПериода() и КонецПериода() .
Доступные значения — определяет перечень доступных значений. Представляет собой список значений со стандартными полями — значение и представление, где значение типа параметра. Для ссылочного типа доступны для выбора только предопределенные данные.
Доступен список значений — определяет доступность параметру принимать значение “список значения”.
Значение — предустановленное значение параметра. Типа параметра. Для ссылочного типа доступны для выбора только предопределенные данные.
Выражение — выражение, значение которого примет параметр. Что примечательно здесь могут использоваться как функции встроенного языка запросов, так и функции встроенного языка программирования и даже функции из общих модулей. К примеру, параметру ТекДата присваивается значение функции встроенного языка программирования ТекущаяДата().
Также в примере к реквизиту “Тип” можно было в выражениях использовать функции встроенного языка запросов, особенность применения этих функций в данном месте такова, что строковые параметры функций надо брать в кавычки.
и в запросе можно было бы писать проще поскольку в параметрах уже будет содержаться начало и конец периода:
Иногда, для повышения удобства пользователю для выбора периода лучше дать не два поля с типом Дата, а одно поле с типом Стандартный Период. Тогда, к примеру, создаем три параметра: “Период” с типом СтандартныйПериод, “ПериодНачало” и “ПериодОкончание” с типом Дата. Первый параметр без ограничения доступности. Вторые с ним. В выражение “ПериодНачало” пишем “&Период.ДатаНачала”, в “ПериодОкончания” — “&Период.ДатаОкончания”.
Даты начала и конца стандартного периода также содержат и время. ДатаНачала имеет время 00:00:00, а ДатаОкончания 23:59:59. Получится что пользователь выберет стандартный период в “Период” а разработчик будет использовать корректные “ПериодНачало” и “ПериодОкончание”.
Параметр функциональной опции — используется в механизме функциональных опций.
Включать в доступные поля — включает параметр в доступные поля для выбора в настройках.
Ограничение доступности — ограничивает возможность изменения значения параметра пользователем.
Запрещать незаполненные значения — если установлено и значение параметра не заполнено — отчет не сформируется и выдаст ошибку.
Использование — устанавливает использование параметра. Если установлено Авто и параметр используется в запросе или выражениях, а пользователь перед формированием не установит галочку около параметра — отчет при формировании выдаст ошибку. Пользователь может установить эту галочку непосредственно, или она установится автоматически при изменении значения параметра. Если установлено Всегда, то этой проверки на то, что пользователь заполнил этот параметр — не будет.
Параметры редактирования — содержит настройки редактирования как у поля формы.
В настройках варианта мы можем установить галочку “Отображать недоступные параметры”, это можно использовать если для разных вариантов мы хотим использовать разный набор параметров.
У параметров в табличной части мы можем установить значение по умолчанию для варианта, включить использование по умолчанию установив галочку слева. Нажав на кнопку, расположенную справа внизу, мы открываем окно пользовательских настроек параметра.
В пользовательских настройках мы можем включить параметр в пользовательские настройки. Установим режим редактирования обычный. Тогда он будет доступен в форме, вызываемой кнопкой “Настройки…”.
Если Режим редактирования установить Быстрый доступ, то параметр появится на форме.
Если у параметра “Период” представление заполнить строкой “ПеРиОд”, то вместо название будет показано содержания поля представление.
Если у отчета СКД нет формы, то платформа создаст автоматическую, на которой будут табличный документ результата, кнопки управления и быстрые пользовательские настройки.
Можно создать свою форму для отчета и вывести на нее табличное поле со всеми пользовательскими настройками. Вот так:
Для этого в созданной форме в конфигураторе вытаскиваем на форму Пользовательские настройки из Компоновщика отчета.
В некоторых случаях параметр не прост, и для его расчета нужен некий алгоритм с циклом или ветвлениями. К примеру если отчет формируем в понедельник то в отчете сравниваются продажи по дням позапрошлой и прошлой недели, а в остальные дни недели сравниваются продажи по дням прошлой и текущей недели. Получается у нас от значения дня недели текущего дня зависит сразу четыре параметра: &НачалоПрошлойНедели, &КонецПрошлойНедели, &НачалоТекущейНедели и &КонецТекущейНедели. А еще нам надо дать возможность пользователю формировать отчет как будто он сформирован вчера или неделю назад. В таком случае мы создаем реквизит формы ТекДата типа Дата. Выводим его на форму. В событии ПриИзменении() пишем.
Таким образом можно программно менять параметры из формы.
Параметры это ключевой инструмент для управления отчетом. Использование параметров дает возможность решить множество прикладных задач, таких как калькуляция на основе информации в базе и значений введенных интерактивно для конкретной калькуляции и многих других. В данной статье рассмотрены практически все относящиеся к параметрам механизмы и особенности. Рамках статьи не рассмотрен блок “Характеристики” Расширения языка запросов для СКД поскольку он не касается параметров. Не рассмотрена настройка параметра “Параметр функциональной опции” поскольку ее описание лучше включить в статью по функциональным опциям.
Язык выражений СКД похож на язык запросов 1С. Я предполагаю, что с языком запросов 1С читатель знаком. Поэтому постараюсь показать основные отличия. Чтобы можно было быстрее начать использовать все дополнительные возможности языка выражений системы компоновки данных.
1. Где используется язык выражений Системы Компоновки Данных
Язык выражений СКД в 1С используется как правило в конструкторе системы компоновки данных. Еще его можно использовать при программном изменении СКД:
- Выражения представления (Наборы данных)
- Выражения упорядочивания (Наборы данных)
- На закладке «Вычисляемые поля», в колонке «Выражение».
- На закладке «Параметры», в колонке «Выражение».
- На закладке «Настройки», в колонке «Пользовательские поля».
2. Синтаксис языка выражений СКД в 1С
Выражения оперируют параметрами, передаваемыми в СКД. Например, &МассивЧисел, литералами и полями, полученными из источника данных, например, из запроса.
В простейшем случае выражение является ссылкой на поле источника данных.
Выражения описываются при помощи следующих операций (как в языке запросов):
· Разыменование поля – обращение к полю через точку, например, Организация.ИНН
· Приведение типа – для составных полей, например:
ВЫРАЗИТЬ(Регистратор КАК Документ.АвансовыйОтчет).Дата
· Операция В – проверка на вхождение элемента в коллекцию значений
· Функции языка выражений СКД в 1С 8.3
Здесь все организовано, как и в языке запросов 1С: строка, число, дата, булево, тип.
Для указания не примитивных типов, следует использовать ключевое слово
3. Использование функций общих модулей 1С в языке выражений СКД
В языке выражений есть возможность использовать функции из общих модулей 1С.
Естественно, это работает только с экспортными функциями.
Если свойство модуля – «глобальный» не установлено, то к функции следует обращаться, с указанием названия модуля:
Если галочка поставлена, то можно обращаться к функции, без указания названия модуля.
При программном формировании отчета на СКД необходимо разрешить использование функций модулей:
4. Описание функций языка выражений Системы Компоновки Данных
Вычислить(Выражение, Группировка, ТипРасчета)
Вместо неё рекомендуется использовать функцию «ВычислитьВыражение».
Она предназначена для вычисления выражения в контексте некоторой группировки.
Функция учитывает отбор группировок, но не учитывает иерархические отборы.
Данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами "; ". Если у какого-либо элемента строковое представление пустое, то вместо его представления выводится строка "".
Данная функция преобразует переданное значение в строку.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами "; ". Если у какого-либо элемента строковое представление пустое, то вместо его представления выводится строка "".
-ТипЗначения – то же, что в языке запросов
5. Описание языка выражений СКД в конфигураторе
Найти описание языка выражений СКД 1С можно в синтакс-помощнике в конфигураторе по кнопке F1.
- Система компоновки данных → Язык выражений системы компоновки данных.
Также некоторые примеры применения языка выражений СКД есть в книге
Хрусталева Е.Ю. «Разработка сложных отчетов в 1С:Предприятие 8» (1С.Библиотека разработчика) - 2016
Специалист компании ООО «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: