Имя: Пароль:
1C
 
Накопление в вычисляемом поле
0 lotor
 
08.11.23
11:31
Добрый день, возник вопрос касательно накопления для диаграммы. Есть поле Дата и есть поле количествоУстройств(вычисляемое поле).Условно в дату 08.08.х было 15 штук устройств, в дату 09.08.х было проверено 17 устройств, а в дату 10.08.х было проверено 23 штуки. Далее я делаю диаграмму вида "График" и мне нужно чтобы точки суммировались как 08.08 15 штук, 09.08 32 штуки, 10.08 55 штук. Как правильно сделать вычисляемое поле, чтобы до конкретной даты суммировались данные?
как делал ранее:
Сумма(ВычислитьВыражениеСГруппировкойМассив("Количество(КоличествоУстройств)", "ДатаАкуталиации"))
и при таком варианте почему-то для всех дат идет итоговая сумма(55), как можно поправить, подскажите
1 vicof
 
08.11.23
11:34
ВычислитьВыражение("Сумма(КоличествоУстройств)", , , "Первая","Текущая")
2 lotor
 
08.11.23
11:45
(1) Сумма(ВычислитьВыражениеСГруппировкойМассив("Количество(ВЫБОР
        КОГДА ПроверенныеПКИ= Истина
Тогда 1
    КОНЕЦ )",,"Первые 1",))
что делаю не так? ругается на первые/первая
3 vicof
 
08.11.23
11:46
Потому что нет такого ключевого слова
4 vicof
 
08.11.23
11:46
И 1 там нельзя ставить. Может быть стоит почитать, как пишутся выражения в СКД?
5 lotor
 
08.11.23
11:59
(4) просто не совсем понятно что имеется под "Первая". Сначала думал что запись, но зачем мне только первая? по идее же я в отбор записей должен положить все строки, у которых дата меньше ДатаАктуализации
6 vicof
 
08.11.23
12:00
С 1 по текущую запись просуммировать количество устройств.
7 vicof
 
08.11.23
12:02
ВычислитьВыражение (EvalExpression)
Функция ВычислитьВыражение предназначена для вычисления выражения в контексте некоторой группировки. Функция учитывает отбор группировок, но не учитывает иерархические отборы.
Функция не может применяться к группировке в групповом отборе этой группировки.
Синтаксис:
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)
Параметры:
Выражение. Тип Строка. Содержит вычисляемое выражение;
Группировка. Тип Строка. Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем. Например:
Сумма(Продажи.СуммаОборот) / Вычислить("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")
В данном примере в результате получится отношение суммы по полю "Продажи.СуммаОборот" записи группировки к сумме того же поля во всей компоновке;
ТипРасчета. Тип Строка. В случае если данный параметр имеет значение "ОбщийИтог", выражение будет вычисляться для всех записей группировки.
В случае если значение параметра "Группировка", значения будут вычисляться для текущей групповой записи группировки.
Если параметр имеет значение "ГруппировкаНеРесурса", то при вычислении функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение со значением "ГруппировкаНеРесурса" для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра "Группировка".
Компоновщик макета компоновки данных при генерации макета компоновки данных при выводе в макет поля – ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение, с указанным параметром "ГруппировкаНеРесурса". Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов.
Если параметр имеет значение "Иерархия", то выражение нужно вычислять для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется. Компоновщик макета при генерации выражения для поля "% в группе иерархии" генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления "Иерархия".
Начало. Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из:
"Первая" ("First"). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля.
Например, Первая(3) – получение третьей записи от начала группировки.
Если первая запись выходит за пределы группировки, то считается, что записей нет.
Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
"Последняя" ("Last"). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля.
Например, Последняя(3) – получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет.
Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.
"Предыдущая" ("Previous"). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки.
Например, Предыдущая(2) – получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то получается первая запись группировки.
При получении предыдущей записи для итога по группировке считается, что получается первая запись.
"Следующая" ("Next"). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки.
Например, Следующая(2) – получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, то считается, что записей нет.
Например, если записей 3 и для третьей записи получают Следующая, то считается, что записей нет.
При получении следующей записи для итога по группировке считается, что записи нет.
"Текущая" ("Current"). Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
"ОграничивающееЗначение" ("BoundaryValue"). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению.
Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.
Конец. Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатное выражение. Строка, содержащая одно из:
"Первая" ("First"). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Первая(3) – получение третьей записи от начала группировки.
Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
"Последняя" ("Last"). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно целым быть числом, больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.
"Предыдущая" ("Previous"). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то считается, что записей нет.
При получении предыдущей записи для итога по группировке считается, что получается последняя запись.
"Следующая" ("Next"). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, получается последняя запись. Например, если записей 3 и для третьей записи получают Следующая, то получается третья запись.
При получении следующей записи для итога по группировке считается, что записи нет.
"Текущая" ("Current"). Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
"ОграничивающееЗначение" ("BoundaryValue"). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться последняя запись, значение поля упорядочивания у которой меньше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, и оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.01.2010.
Сортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Если не указана, то упорядочивание выполняется так же как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр, для упорядочивания по возрастанию, Убыв, для упорядочивания по убывания, Автоупорядочивание, для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка. Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.
ИерархическаяСортировка. Аналогично сортировке. Применяется для упорядочивания иерархических записей. Если не указано, компоновщик макета генерирует упорядочивание в соответствии с упорядочиванием, указанным в параметре Сортировка.
ОбработкаОдинаковыхЗначенийПорядка. Указывает правило определения предыдущей или следующий записи, если есть несколько записей с одинаковым значением упорядочивания:
"Вместе" ("Together") - обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей;
"Отдельно" ("Separately") - обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания;
Например, если полученная последовательность упорядочена по дате:
1. 01 января 2001 Иванов М. 10
2. 02 января 2001 Петров С. 20
3. 02 января 2001 Сидоров Р. 30
4. 03 января 2001 Петров С. 40
Если значение параметра - "Отдельно", предыдущей к записи 3 будет запись 2, а при использовании "Вместе" - запись 1. А фрагментом для текущей записи к записи 2 для "Отдельно" будет запись 2, а для "Вместе" - записи 2 и 3. Таким образом, сумма по текущей записи для "Отдельно" составит 20, а для "Вместе" - 50.
При указанном "Вместе" в параметрах Начало и Конец нельзя указывать смещение для позиций "Первая", "Последняя", "Предыдущая", "Следующая".
Значение по умолчанию "Отдельно".
Примечания:
Функция учитывает отбор группировок, но не учитывает иерархические отборы.
Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение("Сумма(СуммаОборот)", , "ОбщийИтог") > 1000. Но такое выражение можно использовать в иерархическом отборе.
Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
При расчете интервальных выражений для общего итога (параметр Группировка имеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
Компоновщик макета при генерации выражения функции ВычислитьВыражение, в случае если выражение упорядочивания содержит поля, которые не могут быть использованы в группировке, заменяет функцию ВычислитьВыражение на NULL.
8 lotor
 
08.11.23
12:04
(7) Да, я не сразу увидл, что смотрю на разные выражения, у меня просто две агрегатные функции Сначала найти Количество(Устройств), потом Суммирвать их и делал сразу с группировкой в массив, потому неверно в принципе понял
9 lotor
 
08.11.23
14:40
(6) либо я не то делаю, либо хз, он для всех точек показывает сразу финальную
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.