Трогать уже имеющуюся колонку Калорийность нельзя — в неё уже выводится итог-сумма, поэтому заведём ещё одно поле , которое будет являться точной копией поля Калорийность.
Вычисляемые поля в скд 1с 8.3. Язык выражений системы компоновки данных (1Cv8)
ВычислитьВыражение — довольно сложная функция СКД для понимания, а примеры применения в справочной информации довольно скудны. В данной статье рассмотрены примеры, которые наверняка пригодятся каждому разработчику:
Получим количество товара нарастающим итогом на уровне группировки. Для этого создаем вычисляемое поле (см. рисунок 1).
На вкладке «Ресурсы» задаем функцию для вычисляемого поля:
ВычислитьВыражение(«Сумма(КоличествоОборот)», «Первая», «Текущая»)
которая будет суммировать количество товаров от первой записи до текущей (см. рисунок 2).
1С скд отбор по вычисляемому полю –
- Строка (Строка). Строка, из которой выделяют подстроку;
- Позиция (Число). Позиция символа, с которого начинается выделяемая из строки подстрока;
- Длина (Число). Длина выделяемой подстроки.
Получение значения показателя из предыдущей строки
Способы вывода данных табличной части в одну строку, включая способ с использованием функции ВычислитьВыражение, рассмотрен в статье
1. Вычислить (Eval) — предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.
Синтаксис :
Вычислить(Выражение, Группировка, ТипРасчета)
- Выражение (Строка). Cодержит вычисляемое выражение;
- Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
Например:
Сумма(Продажи.СуммаОборот) / Вычислить(«Сумма(Продажи.СуммаОборот)», «ОбщийИтог»).
В данном примере в результате получится отношение суммы по полю «Продажи.СуммаОборот» записи группировки к сумме того же поля во всей компоновке. - ТипРасчета (Строка). В случае если данный параметр имеет значение «ОбщийИтог», выражение будет вычисляться для всех записей группировки. В случае если значение параметра «Группировка», значения будут вычисляться для текущей групповой записи группировки.
Синтаксис :
ВычислитьВыражение(Выражение, Группировка, ТипРасчета, Начало, Конец, Сортировка, ИерархическаяСортировка, ОбработкаОдинаковыхЗначенийПорядка)
Промокоды на Займер на скидки
В данном примере вычисляется значение текущей иерархии:
Выбор
Когда Уровень() > 0
Тогда ВычислитьВыражение(«Ссылка», «Иерархия»)
Иначе Null
Конец
Синтаксис :
ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
- Выражение (Строка) — выражение, которое нужно вычислить. Например, «Сумма(СуммаОборот)»;
- ВыраженияПолейГруппировки
- ОтборЗаписей
- ОтборГруппировок — отбор, применяемый к групповым записям. Например: «Сумма(СуммаОборот) > &Параметр1».
Синтаксис :
ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
- Выражение (Строка) — выражение, которое нужно вычислить. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: «Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж».
- ВыраженияПолейГруппировки — выражения полей группировки, перечисленные через запятую. Например, «Контрагент, Партия»;
- ОтборЗаписей — выражение, применяемое к детальным записям. Например, «ПометкаУдаления = Ложь». Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
- ОтборГруппировок — отбор, применяемый к групповым записям. Например: «Сумма(СуммаОборот) > &Параметр1».
В этом способе используется замечательный метод табличного документа НайтиТекст , но для применения данного способа требуется отключение стандартной обработки формирования результата отчета.
Дополнительные поля
И так, приступим. Зайдем в настройки варианта отчета:
Перед нами откроется конструктор настроек варианта отчета СКД. Перейдя на вкладку «Пользовательские поля» начнем их создание.
На скриншоте уже показаны два созданных пользовательских поля, функционал которых был описан выше. Рассмотрим настройки каждого. Начнем с поля «Оповещение».
В настройка нам нужно задать заголовок поля, который будет отображаться в отчете, а также задать выражения для формирования значения в поле детальных записей и в итогах для этого поля. Поскольку оповещение показывать в итогах нет необходимости, напишем выражение только для детальных записей.
Синтаксис выражения похож на язык запросов 1С:Предприятия. Имеются некоторые отличия, но касаться подробно мы в настоящей статье мы их не будем. В выражении используется оператор выбора:
аналогичный оператору в языке запросов. Поля в выражениях пользовательских полей задаются по их представлению. Для того, чтобы платформа поняла, что введеное представление обозначает некоторое поле, имя представления обрамляется квадратными скобками «[]». Если представление поля имеет одно слово, то квадратные скобки не обязательны. В примере выше мы обращаемся к полю «Конечный остаток».
Аналогично заданы настройки для поля «Формула расчета конечного остатка»:
- Формулу в ячейке мы можем показать лишь в виде строки. Поэтому все числовые значения мы преобразуем к строке с помощью метода языка выражений СКД «Строка()», преобразующего любое значение в строку. После выполняем конкатенацию строк.
- Для того, чтобы поле отображалось в итогах отчета, добавим аналогичную формулу в выражение итоговых записей. Нужно лишь добавить агрегирующие функции «СУММА()» для каждого значения в соответствии с итогами.
1С скд заголовок поля – ПК портал
- Оповещение о количестве. Если количество меньше или равно 5, то оповещение «Недостаточно». Если количество больше 5, то меньше или равно 10, то оповещение «Нормально». Если количество больше 10, то «Переизбыток».
- Формула расчета конечного остатка. В дополнительной колонке пользователь хочет видеть какие действия выполнила программа чтобы получить значение конечного остатка. То есть формулу «Начальный остаток + Оборот = Конечный остаток», где будут подставлены соответствующие значения.
Настраиваем и формируем отчет
Поле «Формула расчета конечного остатка» добавим в выводимые поля отчета:
Выражение «Оповещение» добавим к детальным записям номенклатуры. Для этого в группировку «Номенклатура» добавим поле выражения «Оповещение». После этого структура отчета примет следующий вид:
Настройка отчета на этом выполнена. При необходимости добавленные настройки можно сохранить для повторного использования. Сформируем отчет:
Как мы видим, в отчет добавлены поля в соответствии с условиями задачи. При этом дорабатывать отчет в режиме конфигуратора не пришлось. В этом и заключается главное преимущество пользовательских полей! Пользователь, обученный ими пользоваться, может использовать их для создания отчета по своим требованиям собственными силами, без участия программиста.
Поверьте мне, обучить его использовать эти возможности можно, ведь это куда проще, чем писать формулы в электронных таблицах Excel.
Поменять реквизит документа быстро, загрузить в базу данные из файла, осуществить разные переброски — приемы работы
Бывают ситуации, когда необходимо произвести в системе 1С разработку сложного отчёта по подобию некоторой таблицы, например, такого вида.
Периодичные величины (остатки, валютные курсы) за конкретные даты в сложных отчетах
Иногда случается, что основная часть сложного отчёта готова, но необходимо поверх добавить ещё что-то, например, курсы валют. Для этого нужно использовать главный набор, к которому и будут добавляться различные курсы валют. Воспользуемся календарём (см. скриншот ниже), при этом вторым набором будут сами валютные курсы.
Важно обратить внимание на поле «ПериодВалюты», которое представляет собой параметр из виртуальной таблицы. Данное поле необходимо, чтобы произвести соединение по наборам, как показано ниже:
Рис. 18 Параметр виртуальной таблицы ПериодВалюты
Настройка заголовков полей на вкладке СКД «Настройки»
Произвольные столбцы в сложном отчёте
Бывают ситуации, когда необходимо произвести в системе 1С разработку сложного отчёта по подобию некоторой таблицы, например, такого вида:
Стоит отметить, что условия для каждого из значений в таблицы могут быть весьма непростыми. Тогда нам необходимо следовать специальному алгоритму, дабы сделать сложный отчёт корректно:
1. Первым шагом нужно прописать запрос, который создаст все столбцы, в нашем примере он будет выглядеть так:
Рис. 20 Запрос для создания столбцов в сложном отчете
2. Результатом такого запроса будет список со всеми номенклатурами;
Рис. 21 Добавление декартового произведения таблиц
4. Дальше попробуем в СКД вывести таблицу сложным отчётом. Для этого нужно задействовать колонку с числами для проведения сортировок по колонкам, как показано на скриншоте с примером ниже:
Рис. 22 Сортировка по колонкам в сложном отчете
5. Далее остаётся лишь провести настройки для выведения данных в виде таблицы:
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы