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(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки)
(1) Светлана5291, прошу прощения, что не конструктивно отвечаю. Но не могу не отметить, что тема не соответствует вопросу. Не понятно, из какой процедуры код? Не понятно, что значит "не могу сменить период"? Поля не доступны что-ли? Или при открытии происходит установка периода?.
ну вот в картинках. Задала значения параметров в настройках - год. И они больше не меняются, хотя в отладчике я поставила месяц
(3) Светлана5291, В СКД используются Пользовательские настройки (параметры, отборы и тд) + предопределенные. Если параметры пересекаются тогда главнее пользовательские.
(6) Светлана5291, Посмотрите что в "КомпоновщикНастроек.". Там (если не ошибаюсь) 3 свойства.
Нужно так писать:
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки() , ДанныеРасшифровки);
fortran; Maruska77; Михаська; user1080968; Suslik_Johns; tva120; Sиlьver; Shadow308; P1rate; 1СРамиль; korpas; amaksimov; Светлана5291; Deletex; + 14 – Ответить
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
Круто . Вот рабочий код !! Спасибо!
Это в справке нашла. ПолеТД - реквизит (поле табличного документа) для показа результатов отчета. В имени кнопки содержится уровень.
Уровень = Число(Сред(Кнопка.Имя, 2)) - 1;
У = ПолеТД.КоличествоУровнейГруппировокСтрок() - 1;
Пока У > Уровень Цикл
ПолеТД.ПоказатьУровеньГруппировокСтрок(У);
У = У - 1;
КонецЦикла;
ПолеТД.ПоказатьУровеньГруппировокСтрок(Уровень);
ПолеКомпоновкиДанных (DataCompositionField)
Конструкторы:
По пути к данным
Поле системы компоновки данных.
ПолеГруппировкиКомпоновкиДанных, свойство Поле
ВыбранноеПолеКомпоновкиДанных, свойство Поле
ЭлементПорядкаКомпоновкиДанных, свойство Поле
ОформляемоеПолеКомпоновкиДанных, свойство Поле
ДоступныеПоляКомпоновкиДанных, метод НайтиПоле
ДоступноеПолеКомпоновкиДанных, свойство Поле
ДоступноеПолеОтбораКомпоновкиДанных, свойство Поле
Возможно кому-то пригодиться.
Столкнулась с такой же проблемой, когда переписывала старый отчет.
На этапе группировки вы должны знать нужно вам разворачивать группировку или нет.
Если Дата(ДатаОкончанияДоговора) >= ТекущаяДата() Тогда
Потом когда группировка зкончена пишем Таб.ЗакончитьГруппуСтрок();
Макет.НаборыДанных.Данные.Поля[2].ПутьКДанным - еще нашла: путьКДАнным - это наименование самого поля.
10. Группировки и поля построителя отчета
Измерение построителя отчета – это группировка по строкам или колонкам.
Основными реквизитами группировки являются
“Имя” (идентификатор реквизита) (пример: “Номенклатура”, “Контрагент”…),
“Представление” (представление при выводе) (пример: “Документ продажи”, “Единица измерения”…),
“ПутьКДанным” (путь к полю выборки запроса) (пример: “Номенклатура”, “ДокументПродажи.Организация”…)
и, если группировка строится по справочнику, то еще
“ТипИзмерения” (один из вариантов фильтра по значениям поля: иерархия (элементы и группы), только иерархия (только группы) или элементы (только элементы)).
Кроме этого, есть несколько свойств, позволяющих назначить группировке макеты, которые будут использоваться при выводе в табличный документ.
“Макет” – имя области в макете построителя отчета или отдельный макет, используемый при выводе группировки.
“МакетИерархии” – имя области в макете построителя отчета или отдельный макет, используемый при выводе иерархии группировки.
“МакетПодвала” – имя области в макете построителя или отдельный макет, используемый при выводе подвала группировки.
“МакетПодвалаИерархии” – имя области в макете построителя или отдельный макет, используемый при выводе подвала иерархии группировки.
“МакетыПодваловУровней” – массив макетов подвалов для различных уровней группировок.
“МакетыУровней” – массив макетов для различных уровней группировок.
Поле построителя отчета – это одно из выбранных полей. Основными реквизитами поля являются
“Имя” (идентификатор поля) (пример: “Количество”, “КодНоменклатуры”, “Период”…),
“Представление” (представление при выводе) (пример: “Кол-во”, “Код”, “Период”…) и
“ПутьКДанным” (путь к полю выборки запроса) (пример: “Количество”, “Номенклатура. Код”, “Период”…).
Со списком группировок или полей можно выполнять ряд действий.
“Вставить()“ – добавить группировку/поле в указанную позицию.
“Добавить()“ – добавить группировку/поле в конец списка.
“Индекс()“ – получить индекс группировки/поля в списке.
“Количество()“ – получить количество группировок/полей в списке.
“Найти()“ – найти группировку/поле в списке по имени.
“Очистить()“ – очистить список группировок/полей.
“Получить()“ – получить группировку/поле по индексу.
“Сдвинуть()“ – сдвинуть группировку/поле на указанное количество позиций.
“Удалить()“ – удалить группировку/поле из списка.
Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.
Предыдущие мои статьи по СКД можно посмотреть по ссылкам ниже:
- Основные понятия и элементы схемы компоновки
- Настройки вариантов отчетов
- Работа с пользовательскими настройками
- Расширения языка запросов
- Наборы данных и связи между ними, иерархии
- Внутренние функции СКД, ВычислитьВыражение
Нет такого программиста 1С, который никогда не работал бы с СКД. И все, кто выводил с помощью системы компоновки даже самые простые отчеты, знают, что такое агрегатные функции. Так как вывод итогов по ресурсам на уровне группировок, это, пожалуй, самая распространенная задача при создании отчета.
Но, далеко не все знают, что список возможных агрегатных функций не ограничивается выпадающим списком в конструкторе СКД:
Если посмотреть справку то можно увидеть гораздо больше агрегатных функций, о существовании некоторых из которых мало кто знает:
А в выпадающем списке консоли СКД отображены только основные агрегатные функции, которые чаще всего приходится применять.
Но мы, программисты 1С довольно редко читаем справку. Обычно мы пытаемся понять новый материал интуитивно, максимум обращаемся к синтаксис-помощнику, и очень зря. Ведь, использование этих функций позволяет сильно облегчить и, главное, ускорить создание большого количество отчетов.
Статья как раз про эти, «скрытые» агрегатные функции, которые иногда оказываются ну очень полезными. В статье будут описаны возможности этих функций, по некоторым будут приведены примеры.
Массив
Функция формирует массив, содержащий значения детальных записей по полю или выражению, указанному в качестве параметра. Обрабатываются подчиненные записи текущей группировки. Ключевое слово «Различные», позволяет получить только уникальные записи. Если в качестве параметра передана таблица значений, сформируется массив со значениями первой колонки таблицы:
Если массив формируется по числовому полю, то к его результату можно применять еще одну агрегатную функцию (Сумма, Количество, Максимум, Минимум, Среднее).
ТаблицаЗначений
Ф ункция формирует таблицу значений. Количество колонок результирующей функции равно количеству переданных параметров (полей или выражений). Обрабатываются подчиненные записи текущей группировки. После ключевого слова «КАК» можно задать наименования колонок таблицы. Ключевое слово «Различные» перед первым параметром позволяет получить только различные записи. Проверка выполняется по всем колонкам таблицы значений.
Если в качестве параметров указаны поля-остатки и данные выбираются с периодичностью (Остатки и обороты), стоки таблицы формируются в разрезе периодов и уникальной комбинации измерений. То-есть, если значение остатка в разных периодах различное, в итоговой таблице значений будет сформировано несколько строк, со значениями из разных периодов.
Для наглядности приведу пример .
Создадим набор данных со следующим запросом:
Добавляем вычисляемое поле «ТаблицаЗначений» и в качестве выражения ресурса, укажем для него:
В результате получаем таблицу значений со значениями на каждый день, в котором было изменение остатка:
Важное дополнение. Если для колонок таблицы значений не заданы наименования после ключевого слова «КАК», во всех функциях, которые выполняют обработку этой таблицы (Свернуть, Упорядочить, ПолучитьЧасть) нельзя использовать наименования для указания требуемых колонок. Имена колонок будут иметь специальные наименования, назначенные системой. Для обращения к этим колонкам можно будет использовать только их порядковые номера. Так что если планируется обращение к колонкам таблицы значений по именам, обязательно нужно указывать эти имена после ключевого слова «КАК».
Свернуть
Функция позволяет удалить повторяющиеся строки из массива или таблицы значений. Если в качестве первого параметра используется Таблица значений, необходимо вторым параметром указать порядковые номера или имена колонок, по которым нужно свернуть данные:
Важный момент , данная функция не сворачивает данные с группировкой суммовых показателей. Происходит именно отсечение строк с повторяющимися значениями:
Для массива, функция аналогична применению ключевого слова «Различные» в функции «Массив». Для таблицы значений, функция позволяет проверить уникальность не по всем колонкам, в отличие от применения ключевого слова «Различные» в функции «ТаблицаЗначений».
ПолучитьЧасть
Функция позволяет получить часть таблицы значений. Оставить только необходимые колонки. Наименования или порядковые номера колонок нужно указать вторым параметром функции:
В результате получится таблица значений с одной колонкой «Номенклатура».
Упорядочить
Функция позволяет упорядочить массив или таблицу значений. Если используется таблица значений, вторым параметром нужно указать номера колонок, по которым требуется выполнить упорядочивание. Можно указать направление упорядочивания (Возр / Убыв) и признак «Автоупорядочивание»:
СоединитьСтроки
Функция выполняет соединение срок, переданных в качестве массива или таблицы значений. Втором параметром можно указать символ соединения строк, массива или таблицы (по умолчанию используется символ перевода строки). Если в качестве первого параметра используется таблица значений, в третьем параметре можно указать символ соединения колонок таблицы (по умолчанию используется символ «;»). Результатом выполнения функции является строка.
Примеры использования функций:
ГрупповаяОбработка
Функция выполняет групповую обработку строк. Вычисляет указные выражения и формирует таблицу значений с результатами этих выражений в контексте текущей или указанной группировки. Важный момент, что в обработку включаются строки, которые находятся на одном уровне с обрабатываемой строкой или на одном уровне иерархии (это не подчиненные строки как для большинства агрегатных функций).
Синтаксис функции следующий:
Выражения – поля или выражения, которые требуется обработать и поместить в результирующие данные.
ВыраженияИерархии – поля или выражения, которые требуется обработать для иерархических записей (если обработка выполняется для иерархии). Если параметр не указан, используются такие же поля, которые указаны в параметре «Выражения».
ИмяГруппировки – Имя группировки, по строкам которой необходимо выполнить расчет. Если параметр не указан, вычисление выполняется по строкам на уровне текущей группировки. Если указанная группировка не доступна на текущем уровне (группировка более низкого уровня), функция вернет значение NULL .
Результат групповой обработки возвращается в виде объекта с типом « ДанныеГрупповойОбработкиКомпоновкиДанных ». Данные групповой обработки можно передать в качестве параметра в экспортную функцию общего модуля
Объект содержит следующие реквизиты:
- Данные – результирующая таблица значений. Колонками таблицы являются поля или результаты выражений, перечисленные в первом параметре функции «ГрупповаяОбработка».
- ТекущийЭлемент – строка таблицы значений соответствующая текущему элементу группировки.
- ВременныеДанныеОбработки – структура в которую можно поместить произвольные параметры в процессе работы с результатом групповой обработки в функции общего модуля. Эти параметры будут доступны при следующей обработке групповых данных в рамках этой же группировки.
Пример использования функции
Создадим набор данных с простым запросом:
Создадим вычисляемое поле «ГрупповаяОбработка», определим его как ресурс и укажем следующее выражение:
СКДСервер.ФункцияОбщегоМодуля(ГрупповаяОбработка ("СУММА(КоличествоОборот) КАК Количество"))
В конфигурации, в общем серверном модуле «СКДСервер» разместим экспортную процедуру:
Функция рассчитывает отклонение значения в текущей группировке от среднего значения по всем группировкам.
Проверяется наличие параметра «СреднееКоличество» в структуре «ВременныеДанныеОбработки». Если параметр существует, используется он, так как среднее количество в рамках одной и той же группировки будет одинаковым. Если параметра не существует (выводится первая строка группировки), выполняется его расчет по таблицы значений «Данные». Полученное значение добавляется в структуру «ВременныеДанныеОбработки».
На заметку. Имейте в виду про следующую особенность. Функция общего модуля, указанная для ресурса, вызывается дважды для одной и той же строки. Это связано с типовой обработкой расшифровки для поля – ресурса. Если для данного поля создать собственный макет, с указанием одного и того же выражения для основного параметра и для параметра расшифровки, такой особенности не будет. Функция будет вызвана один раз для каждой строки.
Каждый
Функция вычисляет выражения для всех строк и возвращает значение «Истина», если выражения по всем строкам вернули значение «Истина». В противном случае, будет возвращено значение «Ложь».
Любой
Функция вычисляет выражения для всех строк и возвращает значение «Истина», если хотя бы по одной строке результат будет «Истина». В противном случае, будет возвращено значение «Ложь».
МестоВПорядке
Функция определяет позицию данной строки, если расположить все строки группировки в порядке, указанном в выражении первого параметра. Также как и для функции «ГрупповаяОработка», используются строки, которые находятся на одном уровне с обрабатываемой или на одном уровне иерархии (не вложенные строки).
Строки с одинаковым значением порядка будут иметь одно и то же место.
Синтаксис функции следующий:
Порядок – выражение порядка, по которому происходит сортировка строк. Можно указать направление упорядочивания (Возр / Убыв) и признак «Автоупорядочивание».
ПорядокИерархия – выражение упорядочивания для иерархических записей. Если не указано, действует выражение для основных записей.
ИмяГруппировки – группировка, в контексте которой необходимо выполнить упорядочивание. Если параметр не указан, порядок вычисляется в контексте текущей группировки.
Для обычных строк группировки действует сортировка по полю «КоличествоОборот», для иерархических – «СуммаОборот»:
Для всех вложенных группировок место в порядке будет рассчитано по группировкам верхнего уровня «Покупатель»:
КлассификацияABC
Функция вычисляет значение классификации « ABC » по переданному выражению и пороговым значениям.
Синтаксис функции следующий:
Значение – поле или выражение, для которого требуется рассчитать классификацию ABC .
КоличествоГрупп – количество групп классификации. Можно указать количество больше трех, тогда уже будет классификация « ABCD », « ABCDE » и т.д.
ПроцентыДляГрупп – пороги для попадания в группы через запятую в виде строки. Причем для последней группы порог не указывается. Диапазон последней группы считается от последнего порога до 100%. Пример указания порогов для трех групп: «50, 80».
ИмяГруппировки - группировка, в контексте которой необходимо выполнить расчет. Если параметр не указан, вычисление происходит в контексте текущей группировки.
Классификация вложенных строк выполняется по строкам группировки верхнего уровня «Покупатель»:
В СКД существует еще целый набор математических агрегатных функций:
- СтандартноеОтклонениеГенеральнойСовокупности
- СтандартноеОтклонениеВыборки
- ДисперсияВыборки
- ДисперсияГенеральнойСовокупности
- КовариацияГенеральнойСовокупности
- КовариацияВыборки
- Корреляция
- РегрессияНаклон
- РегрессияОтрезок
- РегрессияКоличество
- РегрессияR2
- РегрессияСреднееX
- РегрессияСреднееY
- РегрессияSXX
- РегрессияSYY
- РегрессияSXY
Их рассмотрение и использование заслуживает отдельной статьи, так что здесь я их разбирать не буду.
Спасибо за внимание. В следующих статьях я планирую рассматривать программную работу с отчетами на СКД, а также привести разбор некоторых интересных примеров.
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Выгрузить табличную часть во временную таблицу и свернуть её 3
// Объект.Ремонты - табличная часть на форме // ВремТаб - Реквизит на форме, тип таблица значений с реквизитами " Номенклатура" и " Количество" НаСервере Процедура СоздатьВременнуюТаблицу() ВремТаблица = Объект.Ремонты.Выгрузить(); ВремТаб Горячие клавиши 1С Разработчику [ Конфигуратор ] 128
Основные команды: Кодирование: Ctrl+Пробел - вызов подсказки Ctrl+Q - вызов шаблона Ctrl+F1 - поиск в синтакс-помощнике Ctrl + L - удалить текущую строку Alt+Shift+F - отформатировать код Исследование: F12 - ставим курсор на про Посмотреть все результаты поиска похожих
Еще в этой же категории
Как определить версию файла 0
objShellApp = CreateObject(" Shell.Application" ); objFolder = objShellApp.NameSpace(" c: Program Files 1cv82 common " ); objItem = objFolder.ParseName(" 1cestart.exe" ); Message(objFolder.GetDetailsOf(objItem, 37)); Получить дату и время из строк вида "17.12.2012" "18.00.02" 0
НаКлиенте Процедура ДатаВремя(Команда) ВремяОтпр = " 18.00.02" ; ДатаОтпр =" 17.12.2012" ; ДатаВремя = ПолучитьДату(ДатаОтпр,ВремяОтпр); КонецПроцедуры НаКлиенте Функция ПолучитьДату(ЗнДата, ЗнВремя) Возврат Дата(Прав(ЗнДата,4)+Сред(ЗнДа преснос картинок из одно1 базы в другую по ком 0
Господа подскажите пожалуйста как можно осуществить преснос картинок из одной базы в другую по ком Посмотреть все в категории
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Google maps : вывод точек на карту и режим панорамы 7
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Как в СКД вывести дату и время формирования отчета? 6
Есть несколько вариантов вывода информации перед основным отчетом,какой лучше?! - зависит от задачи: Допустим нам нужно вывести дату и время формирования отчета и свою шапку отчета, например так: Варианты решения: 1. Использование группиров Как программно свернуть группировки в СКД (система компоновки данных)? 21
При формировании отчетов на СКД по умолчанию все группировки развернуты, но бывает что необходимо сразу после формирования показать отчет со свернутыми группировками! Данный код в модуле отчета позволяет свернуть группировки до необходимого уровня Посмотреть все результаты поиска похожих
Еще в этой же категории
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
Чтобы работало с параметрами, нужно заменить это:
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);[/pre]
Макет = КомпоновщикМакет.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);[/pre]
Если в отчёте есть параметры, этот код выдаёт ошибку, что не заданы значения параметров
Читайте также: