1С скд округление в вычисляемых полях

  • Главная
  • Программирование 1С
  • Настройка отчёта в СКД. Как округлить число.

Настройка отчёта в СКД. Как округлить число.

Округление числа в отчёте на СКД.

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

Источником для запроса является виртуальная таблица РегистрНакопления.Продажи.Обороты, построенная по данным регистра в интервале между ДатаНач и ДатаКон.
В качестве выходных полей берем Номенклатура и результат деления значения полей источника СтоимостьОборот и КоличествоОборот. Причем оператором ВЫРАЗИТЬ() тип последнего поля приводится к примитивному типу Число с определенным форматом (длина – 15, точность – 2).

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

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

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

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

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

Читайте также:  Xbox one elite контроллер

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

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

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

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

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

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

  • С помощью конструктора реализуем простейший запрос (Рис. 2) Рис. 2
  • На закладке «Вычисляемые поля» мы создадим новое поле и назовем его МассивИдентификаторов, подставив в колонку «Выражение» фразу Массив(Номер) (Рис. 3) Рис. 3

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

  • Перейдем на закладку «Ресурсы» и установим выражение для расчета итога по контрагенту (Рис. 4), заменив выражение по умолчанию «Сумма» на «СоединитьСтроки»; Рис. 4
  • На закладке «Настройки» определим внешний вид нашего отчета, добавим новую группировку «Контрагент» и укажем её выбранные поля (Рис. 4); Рис. 4
  • Результат выполнения обработки можно увидеть на Рис. 5. Рис.5

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

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

  1. РазделительЭлементов – указывает, какой символ будет отделять один элемент массива или одну строку таблицы значений от другого (в нашем случае мы опустили этот параметр и по умолчанию был назначен перенос строки);
  2. РазделительКолонок – символ, используемый для разделения колонок таблицы значений (по умолчанию используется точка с запятой).
Читайте также:  Авира не удаляется с компьютера

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

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

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

  • Функция обязательно должна быть экспортной;
  • Если функция расположена в общем модуле с установленным признаком «Глобальный», её вызов осуществляется непосредственно по имени, в противном случае вызов функции должен происходить по схеме «Имя общего модуля». «Имя вызываемой функции».

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

  1. Создадим новое поле «СуммаПропись»;
  2. Определим его выражение, как на Рис.6; Рис.6
  3. В общем модуле создадим экспортную функцию (Рис.7); Рис.7
  4. Этап настройки отчета пропустим и сразу посмотрим на результат (Рис.8). Рис. 8

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

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

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

  1. Рассчитать среднюю стоимость номенклатуры;
  2. Всевозможные проценты;
  3. Расчеты среднего заработка и т.д.

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

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

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

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