Использование функции Вычислить Выражение () в 1С

1.   Расчет суммы нарастающим итогом

Цель: в отчет о продажах нужно добавить столбцы с кумулятивной суммой для суммы и количества.

Добавьте в наборы данных запрос для регистра «Продажи»:

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

Затем в ресурсах указываем выражения для этих полей:

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

Укажите «Первый» в параметре «Начало» и «Текущий» в параметре «Конец». Следовательно, в столбцах с кумулятивной суммой будут суммироваться все записи от первой до текущей. Для первой записи сумма будет получена только для нее, для второй — суммы первой и второй записей, для третьей — суммы первой, второй и третьей и т.д.

Проверьте отчет в режиме предприятия:

В столбце «Суммарный итог» в первой строке мы видим цифру 2, во второй цифре 5 — сумму первой и второй строк в столбце «Оборачиваемость», в третьей — цифру 8, равную сумма первого, второго и третьего и т д.

2.   Вычисление предыдущего курса с помощью функции Вычислить Выражение ()

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

В отчете в программах 1С добавить запрос реестра «Курсы валют».

На вкладке «Расчетные поля» добавьте новое поле: «Предыдущий курс». Итак, давайте определим для него выражение:

В этом случае в функции CalculateExpression () в первом параметре укажите поле «Курс». А в параметрах «Начало» и «Конец» указываем «Предыдущий». Это вычисленное поле будет заполнено значением из предыдущей строки в столбце «Ставка».

Проверяем результат:

Мы видим, что вторая строка столбца «Предыдущий курс» содержит значение первой строки столбца «Курс» и т.д.

3.   Сравнение с определенным значением в отчете 1С

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

В отчете составляем заявку на регистр «Продажи»:

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

Во вкладке «Параметры» добавьте параметр «ProductForCompare», где пользователь будет указывать, с каким продуктом следует сравнивать. На вкладке «Ресурсы» укажите выражение для поля «Процент».

Здесь мы определяем сумму в поле «AmountTurnover» и для расчета процента продажи продукта, выбранного пользователем, мы умножаем эту сумму на 100, а затем делим на результат функции CalculateExpression().

Мы также переносим на него сумму в поле «ImportoFatturato», но только при условии, что элемент в текущей строке совпадает с элементом, указанным в параметре «Элементы для сравнения».

Также для наглядности настроим оформление столбца «Товар» так, чтобы выбранный пользователем товар выделялся цветом:

Проверяем результат:

В качестве материала для сравнения была выбрана статья «Босиком». Проверим правильность расчета на примере статьи «Валенки».

За выбранный период продано товаров на сумму 12 500 и 4 500 соответственно.

4500 * 100/12500 = 36%. Тот же результат был достигнут и в отчете.

Реализация поставленной задачи с применением функций СКД Массив и СоединитьСтроки

    1. Создадим новый набор данных.
    2. Вставляем в него вышеуказанный запрос.
    3. Переходим на вкладку Calculated Fields и добавляем новую запись.
    4. В поле «Путь к данным» введите ArrayNumbers.
    5. В поле «Выражение» введите массив (RegistrarNumber).

      Создание вычисляемого поля с помощью функции ACS Array

    6. Переходим во вкладку «Ресурсы» и добавляем новые записи из раздела «Доступные поля» с помощью кнопки «>».
    7. Добавим матрицу чисел.
    8. В поле «Выражение» введите ConnectStrings (Array (RegistrarNumber),»,»,»»).
    9. В поле «Рассчитать по…» выберите Номенклатура.
    10. Добавим количество оборотов.
    11. В поле «Выражение» укажите сумму (количество оборотов).
    12. В поле «Рассчитать по…» выберите Номенклатура.

      Создание ресурсов поля с помощью функции ACS JoinStrings

    1. Переходим во вкладку «Настройки» и добавляем новую номенклатурную группировку.
    2. Здесь, на вкладке «Выбранные поля», добавьте новые поля из раздела «Доступные поля» с помощью кнопки «>». Выбираем три поля «Номенклатура», «Матрица чисел», «Число оборотов».

      Настроить группировки и поля в отчете ACS

  1. Наконец, перейдите на вкладку «Другие настройки» и измените две строки: «Положение общих итогов по горизонтали» и «Позиционирование общих итогов по вертикали».
  2. В поле «Значение» установите значение «Нет». Это необходимо, чтобы запретить выдачу итогов.

    Настройка вывода итогов ГВС

Те же шаги, но с некоторыми дополнениями, были использованы для создания отчета о продажах товаров для GTE.

Описание функции СоединитьСтроки (JoinStrings)

JoinStrings Используется для объединения строк в одну строку.

Синтаксис:

JoinStrings (значение, разделитель элементов, разделители столбцов)

Параметры:

  1. Значение — выражения для объединения в одну строку. Если это массив, элементы массива будут объединены в строку. Если ValuesTable равно, все столбцы и строки в таблице будут объединены в одну строку;
  2. Разделитель элементов — это строка, содержащая текст, который будет использоваться в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию — символ перевода строки;
  3. Разделители столбцов: строка, содержащая текст, который будет использоваться в качестве разделителя между столбцами таблицы значений. Дефолт «;».

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

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

Некоторые важные моменты:

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

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

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

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

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

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

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

Поэтому мы создали дополнительное вычисляемое поле в нашей схеме;

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

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

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

  1. Разделитель элементов — указывает, какой символ будет отделять элемент массива или строку таблицы значений от другого (в нашем случае мы опустили этот параметр и по умолчанию задали разрыв строки);
  2. Разделитель столбцов — это символ, используемый для разделения столбцов таблицы значений (по умолчанию используется точка с запятой).
Источники

  • https://www.koderline.ru/expert/instruktsii/article-yazyk-vyrazheniy-skd-primery-ispolzovaniya-funktsii-vychislit-vyrazhenie-/
  • https://www.softmaker.kz/otchety-1s/primer-ispolzovaniya-funkcij-skd-massiv-array-i-soedinitstroki-joinstrings-v-otchyote-1s-8.html
  • https://4apple.org/1s-skd-vychisljaemye-polja-summa-polej/
  • https://dudom.ru/kompjutery/1s-skd-vychisljaemye-polja-summa-polej/

Оцените статью