1с скд вычисляемое поле не выводится

СКД, ошибка в вычисляемых полях

(4) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «опМодуль.КореньКвадратный»

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка «SQRT»

(8) А это уже странно. Тупо ради интереса запилил себе в первый попавшийся отчет эту функцию, вот этот столбец:

Корень из отрицательного числа
118,82
39,01
79,81

(4) А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

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

Есть только маленькая тонкость при программном формировании отчета СКД.

Обычно, при инициализации процессора компоновки данных делают так:

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
При таком формировании отчета вызова функций не произойдет. Что бы эту возможность включить нужно сделать так

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры «*»

Источник

Работа с вычисляемыми полями

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

Пример

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

Определим вычисляемое поле. Для этого перейдем в конструкторе схемы компоновки данных на вкладку Вычисляемые поля и добавим поле.

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Результат отчета будет выглядеть так:

НоменклатураПодразделениеСтоимость планСтоимость фактПеревыполнение плана
Вентилятор настольныйОтдел оптовой продажи238,32737,55209,48
Мужские сапоги с искусственным мехомОтдел оптовой продажи234,24-100,00
Мишка (конфеты)Отдел розничной продажи114,91Не запланировано

Т.е. для каждой строчки было рассчитано значение вычисляемого поля.

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Теперь в итог отчета будет выводиться сумма по полям, в том числе и по полю ПеревыполнениеПлана :

НоменклатураПодразделениеСтоимость планСтоимость фактПеревыполнение плана
Вентилятор настольныйОтдел оптовой продажи238,32737,55209,48
Мужские сапоги с искусственным мехомОтдел оптовой продажи234,24-100,00
Мишка (конфеты)Отдел розничной продажи114,91Не запланировано
Итого472,56852,46109,48

Для того чтобы получить правильный итог по выполнению плана изменим формулу расчета итога по полю Выполнение плана :

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

Введем данную формулу в выражение ресурса:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Теперь результат отчета будет выглядеть так:

Источник

1С: Вычисляемые поля в СКД

Грамотное использование схемы компоновки данных (СКД) позволяет:

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

Что такое вычисляемое поле

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

Дело в том, что СКД – это нечто большее, нежели просто отображение результата выполнения запроса и это прекрасно видно из формы создания схемы (Рис.1).

Вычисляемые поля позволяют выполнять определенные действия со сформированным набором данных:

Давайте по этому списку и пойдем.

Массив значений в одной ячейке

Смоделируем ситуацию, когда необходимо получить в отдельную ячейку все номера документов поступления по контрагенту:

таким образом, мы в нашей схеме создали дополнительное расчетное поле;

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

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

Обращение к экспортным функциям общего модуля

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

Несколько важных моментов:

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

Таким образом, мы видим, что практически любой обработчик данных может быть инициализирован из СКД, что значительно расширяет возможности использования схемы.

Выражения языка компоновки

Достаточно часто в работе разработчика возникает ситуация, когда в поле СКД необходимо вывести результат деления:

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

Сделать это можно с помощью конструкции «Выбор Когда ….Тогда… Иначе… Конец».

В конце несколько слов о достаточно новой функции ВычислитьВыражение(). С её помощью, в частности можно вычислять отклонения в стоимости между текущей и предыдущей строкой, накопительный остаток и т.д.

Допустим, получить СуммуДокумента из предыдущей строки нашего запроса можно указав в поле «Выражение» значение ВычислитьВыражение(«СуммаДокумента». «ПредыдущаяСумма»).

Источник

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: считаем итоги (ресурсы)

Целью этого урока будет:

Создаём новый отчёт

Как и на предыдущих уроках открываем базу «Гастроном » в конфигураторе и создаём новый отчёт через меню «Файл «->»Новый. «:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

В форме настройки отчёта пишем имя «Урок3 » и нажимаем кнопку «Открыть схему компоновки данных «:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Оставляем имя схемы по умолчанию и нажимаем кнопку «Готово «:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Добавляем запрос через конструктор

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Вместо того, чтобы писать текст запроса вручную, вновь запускаем конструктор запроса :

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

На вкладке «Таблицы » перетягиваем таблицу «Еда » из первой колонки во вторую:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Выбираем из таблицы «Еда » поля, которые будем запрашивать. Для этого перетаскиваем поля «Наименование «, «Вкус «, «Цвет » и «Калорийность » из второй колонки в третью:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Получилось вот так:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Формируем настройки представления отчёта

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Перетаскиваем из левой колонки в правую поля, которые будут отображаться в списке и нажимаем «Далее «:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

А вот и результат работы конструктора. Иерархия нашего отчёта:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

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

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Меняем порядок колонок

Но давайте поменяем порядок колонок (стрелки вверх-вниз), чтобы он был таким как на рисунке ниже:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Сохраним отчёт и вновь откроем в режиме пользователя:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Отлично, так гораздо лучше.

Подводим итог (сумму) по калорийности

Было бы неплохо выводить итог калорийности продуктов по группам. Чтобы видеть сумму калорийности всех продуктов, скажем, белого или жёлтого цвета. Или узнать общую калорийность вообще всех продуктов в базе.

Для этого существует механизм вычисления ресурсов.

Переходим на вкладку «Ресурсы » и перетаскиваем поле «Калорийность » (мы же по нему собираемся итог подводить) из левой колонки в правую.

При этом в поле выражение выбираем из выпадающего списка «Сумма(Калорийность) «, так как итогом будет являться сумма всех входящих в итог элементов:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Сохраняем и формируем отчёт:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

У нас появились итоги по каждой из групп и по отчёту в целом.

Подводим итог (среднее) по калорийности

Теперь давайте сделаем так, чтобы в ещё одной колонке выводилась средняя калорийность продуктов по группам и в целом по отчёту.

Переходим на закладку «Вычисляемые поля » и нажимаем зелёный плюсик:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Поступим вторым способом. Для этого переходим на закладку «Настройки «, выбираем «Отчет » (ведь мы хотим добавить поле в целом к отчёту), выбираем внизу закладку «Выбранные поля » и перетаскиваем поле «СредняяКалорийность » из левой колонки в правую:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Получилось вот так:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Сохраняем и формируем отчет:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Поле появилось и мы видим, что его значениями являются значения поля «Калорийность». Отлично!

Для этого вновь воспользуемся уже знакомым нам механизмом ресурсов (подведение итогов). Переходим на закладку «Ресурсы » и перетаскиваем поле «СредняяКалорийность » из левой колонки в правую:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

При этом в колонке «Выражение » выбираем «Среднее(СредняяКалорийность) «:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Сохраняем и формируем отчёт:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

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

Знаете почему они появились (значения не по группам)? Потому что, когда мы добавляли поле «СредняяКалорийность » в настройки отчёта, на втором шаге мы выделили весь отчёт в целом и это новое поле попало в элемент «Детальные записи «.

Исправим ошибку. Для этого вернёмся на закладку «Настройки «, выберем «Детальные записи » сначала сверху (шаг 2), а затем «Детальные записи » снизу (шаг 3), перейдём на закладку «Выбранные поля » и увидим в её правой колонке элемент «Авто «.

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Элемент «Авто » раскрылся в следующие поля:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

А вот и наше поле «СредняяКалорийность «, которое попало сюда из пункта «Отчет «, когда мы его туда перетаскивали. Просто снимем галку рядом с этим полем, чтобы убрать его вывода.

В свете ближайшего выхода 8.2.14, попытаюсь описать некоторые новые функции системы компоновки данных.

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

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

1. Настраиваем запрос в СКД.

2. Настраиваем вычисляемые поля в СКД

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

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

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

4. Запускаем 1С Предприятие 8.2.14. Открываем отчет. Формируем, получаем.

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Описание самих новых функций:

Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТекущаяДата()заменяется значением текущей даты.

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

Функция учитывает отбор группировок, но не учитывает иерархические отборы.

Функция не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение(«Сумма(СуммаОборот)”, «ОбщийИтог») > 1000. Но такое выражение можно использовать в иерархическом отборе.

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

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

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

Тип: Строка. Выражение, которое надо вычислить.

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

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

Тип: Строка. Параметр может принимать следующие значения:

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

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

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

Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получитьПервая(4), то считается, что записей нет.

Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получитьПоследняя(4), то считается, что записей нет.

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

При получении предыдущей записи для итога по группировке считается, что получается первая запись.

Если следующая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3 и для третьей записи получают Следующая(), то считается, что записей нет.

При получении следующей записи для итога по группировке считается, что записи нет.

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

В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, и оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.

Тип: Строка. Перечисляются выражения, разделенные запятыми, которые описываютправила упорядочивания. Если не указана, то упорядочивание выполняется также как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр (для упорядочивания по возрастанию), Убыв (для упорядочивания по убывания) и Автоупорядочивание (для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка). Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.

Тип: Строка. Аналогично параметру Сортировка. Применяется для упорядочивания иерархических записей. Если не указано, компоновщик макета генерирует упорядочивание в соответствии с упорядочиванием, указанным в параметре Сортировка.

Тип: Строка. Указывает правило определения предыдущей или следующий записи в случае если есть несколько записей с одинаковым значением упорядочивания:

Например, если полученная последовательность упорядочена по дате:

ДатаФИОЗначение
101 января 2001 годаИванов М.10
202 января 2001 годаПетров С.20
303 января 2001 годаСидоров Р.30
404 января 2001 годаПетров С.40

Если значение параметра равно Отдельно, то:

§ предыдущей записью к записи 3 будет запись 2.

§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец), то для записи 2 этот фрагмент будет состоять из одной записи 2. Выражение ВычислитьВыражение(«Сумма(Значение)”, Текущая, Текущая) будет равно 20.

Если значение параметра равно Вместе, то:

§ предыдущей записью к записи 3 будет запись 1.

§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец), то для записи 2 этот фрагмент будет состоять из записей 2 и 3. Выражение ВычислитьВыражение(«Сумма(Значение)”, Текущая, Текущая) будет равно 50.

При указании значение параметра равного Вместе, в параметрах Начало и Конец нельзя указывать смещение для позиций Первая,Последняя, Предыдущая, Следующая.

ВычислитьВыражение(“Сумма(СуммаОборот)”, “Первая”, “Текущая”)

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

Список новых функций:

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

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

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

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Грамотное использование схемы компоновки данных (СКД) позволяет:

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

Что такое вычисляемое поле

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

Дело в том, что СКД – это нечто большее, нежели просто отображение результата выполнения запроса и это прекрасно видно из формы создания схемы (Рис.1).

Вычисляемые поля позволяют выполнять определенные действия со сформированным набором данных:

Давайте по этому списку и пойдем.

Массив значений в одной ячейке

Смоделируем ситуацию, когда необходимо получить в отдельную ячейку все номера документов поступления по контрагенту:

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

таким образом, мы в нашей схеме создали дополнительное расчетное поле;

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

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

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

Обращение к экспортным функциям общего модуля

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

Несколько важных моментов:

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

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Таким образом, мы видим, что практически любой обработчик данных может быть инициализирован из СКД, что значительно расширяет возможности использования схемы.

Выражения языка компоновки

Достаточно часто в работе разработчика возникает ситуация, когда в поле СКД необходимо вывести результат деления:

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

Сделать это можно с помощью конструкции «Выбор Когда ….Тогда… Иначе… Конец».

В конце несколько слов о достаточно новой функции ВычислитьВыражение(). С её помощью, в частности можно вычислять отклонения в стоимости между текущей и предыдущей строкой, накопительный остаток и т.д.

Допустим, получить СуммуДокумента из предыдущей строки нашего запроса можно указав в поле «Выражение» значение ВычислитьВыражение(«СуммаДокумента», «ПредыдущаяСумма»).

В свете ближайшего выхода 8.2.14, попытаюсь описать некоторые новые функции системы компоновки данных.

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

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

1. Настраиваем запрос в СКД.

2. Настраиваем вычисляемые поля в СКД

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

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

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

4. Запускаем 1С Предприятие 8.2.14. Открываем отчет. Формируем, получаем.

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Описание самих новых функций:

Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТекущаяДата() заменяется значением текущей даты.

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

Функция учитывает отбор группировок, но не учитывает иерархические отборы.

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

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

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

· ОбщийИтог — выражение будет вычисляться для всех записей группировки.

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

· Группировка — выражение будет вычисляться для текущей групповой записи группировки.

· ГруппировкаНеРесурса — при вычисление функции для групповой записи по ресурсам, выражение будет вычислено для первой групповой записи исходной группировки.

· ОграничивающееЗначение (BoundaryValue ) ОграничивающееЗначение

При получении предыдущей записи для итога по группировке считается, что получается первая запись.

При получении следующей записи для итога по группировке считается, что записи нет.

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

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

· Вместе (Together ) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.

Например, если полученная последовательность упорядочена по дате:

ДатаФИОЗначение
101 января 2001 года10
202 января 2001 годаПетров С.20
303 января 2001 годаСидоров Р.30
404 января 2001 годаПетров С.40

§ предыдущей записью к записи 3 будет запись 2.

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

§ предыдущей записью к записи 3 будет запись 1.

§ если расчетный фрагмент определяется как Текущая, Текущая (соответственно, параметры Начало и Конец ), то для записи 2 этот фрагмент будет состоять из записей 2 и 3. Выражение ВычислитьВыражение(«Сумма(Значение)», Текущая, Текущая) будет равно 50.

ВычислитьВыражение(«Сумма(СуммаОборот)», «Первая», «Текущая»)

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

Список новых функций:

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

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

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

1с скд вычисляемое поле не выводится. Смотреть фото 1с скд вычисляемое поле не выводится. Смотреть картинку 1с скд вычисляемое поле не выводится. Картинка про 1с скд вычисляемое поле не выводится. Фото 1с скд вычисляемое поле не выводится

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *