Не задано значение параметра

  • автор:

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

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

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

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

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

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

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

Рис.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.

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

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

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

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

Бывает, и очень часто, что при разработке отчетов недостаточно полей, назначенных в наборе данных. И нужно отразить поля, которые рассчитываются на основе существующих. С помощью вычисляемых полей можно добавить, сколько требуется полей, если нужно составить сложное поле из разных наборов данных, например типа «запрос и объект».
Указывать выражение вычисляемого поля нужно на языке системы компоновки данных, что бы система могла рассчитать его значение. Язык имеет ограничение — нельзя использовать вычисляемые поля. Можно использовать все синтаксические конструкции языка выражений, поля наборов данных, а так же функции общих модулей конфигурации.


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

Выбор
Когда КоличествоДнейПросрочки >= 5
Тогда СуммаПросрочки * 0.01 * КоличествоДнейПросрочки
Иначе 0
Конец
Задаем тип значения – «Число» и формат – «ЧЦ=14; ЧДЦ=2»
Добавляем поле «Пеня» в список ресурсов с функцией «Сумма()». Вычисляем итоги по контрагентам и итоги в целом. В итоге выполнения отчета в поле «Пеня» по контрагенту будет отражаться сумма пеней за каждый документ, по которому выполняется условие начисления пеней.
Но на практике при расчете пени срок и сумма просрочки берутся в целом по контрагенту. Для того чтобы отчет выводил нужные данные по контрагенту, необходимо усложнить выражение агрегирования для ресурса «Пеня»:
Сумма(СуммаПросрочки) * 0.01 * Максимум(КоличествоДнейПросрочки)
Если мы вводим такое выражение в колонку «Выражение» для ресурса «Пеня», то получаем правильный расчет по контрагентам.
Это базовые основы по работе с вычисляемыми полями в СКД.

Тема: Ошибка при выполнении обработчика 1С8

Быстрый переход 1C Вверх

  • Навигация
  • Кабинет
  • Личные сообщения
  • Подписки
  • Кто на сайте
  • Поиск по форуму
  • Главная страница форума
  • Форум
  • Бухгалтерия
    1. Общая бухгалтерия
      1. Бухучет и Налогообложение
      2. Оплата труда и кадровый учет
      3. Документация и отчетность
      4. Учет ценных бумаг и валютных операций
      5. Внешнеэкономическая деятельность
      6. Внешнеэкономическая деятельность. Таможенный союз
      7. Алкоголь: лицензирование и декларирование
      8. Онлайн-ККТ, БСО, эквайринг и кассовые операции
    2. Отрасли и спецрежимы
      1. Индивидуальные предприниматели. Спецрежимы (ЕНВД, УСН, ПСН, ЕСХН)
      2. Учет в НКО и жилищном хозяйстве
      3. Бухгалтерский учет в строительстве
      4. Бухгалтерский учет в туризме
    3. Бюджетные, автономные и казенные учреждения
      1. Бюджетный учет
      2. Программы для бюджетного учета
    4. Банки
    5. МСФО, GAAP, управленческий учет
  • Юридический отдел
    1. Правовая помощь
    2. Регистрация
    3. Опыт проверок
  • Управление предприятием
    1. Администрирование и управление на предприятии
    2. Аутсорсинг
  • Автоматизация предприятия
    1. Программы для ведения бухгалтерского и налогового учета
      1. Инфо-Бухгалтер
      2. Другие программы
    2. 1C
    3. Электронный документооборот и электронная отчетность
    4. Прочие средства автоматизации труда бухгалтеров
  • Гильдия клерков
    1. Взаимоотношения на работе
    2. Бухгалтерский бизнес
    3. Обучение
    4. Биржа труда
      1. Ищу работу
      2. Предлагаю работу
  • Клуб Клерк.Ру
    1. Пятница
    2. Частные инвестиции
    3. Политика
    4. Спорт. Туризм
    5. Встречи и поздравления
    6. Авторские форумы
      1. Интервью
      2. Простое, как мычание
      3. Авторский форум Goblin_Gaga
        1. Бухгалтера можно…
        2. опусник Гаги
  • Интернет-конференции
    1. Кому я должен — всем прощайте: все о банкротстве физлиц
    2. Архив Интернет-конференций
      1. Интернет-конференции
        1. Обмен электронными документами и сюрпризы от ФНС
        2. Нарушение прав граждан при трудоустройстве и увольнении
        3. Новый порядок сдачи отчетности по НДС в электронном формате
        4. Подготовка годовой финансовой/бухгалтерской отчетности за 2014 год
        5. Все, что вы хотели спросить у оператора обмена электронными документами
        6. Как финансовый кризис превратить в окно возможностей?
        7. НДС: изменения в нормативном регулировании и их реализация в программе «1С:Бухгалтерия 8»
        8. Обеспечение достоверности результатов инвентаризационных мероприятий
        9. Защита персональных данных. Применение ЗПК «1С:Предприятие 8.2z»
        10. Формирование учетной политики компании: возможности сближения с МСФО
        11. Электронный документооборот на службе бухгалтера
        12. Учет времени при различных системах оплаты труда в программе «1С:Зарплата и управление персоналом 8»
        13. Полугодовой отчет по налогу на прибыль: раскроем все секреты
        14. Межличностные отношения на рабочем месте
        15. Облачная бухгалтерия 1С. Стоит ли уходить в облако?
        16. Банковские депозиты: как не потерять и выиграть
        17. Больничные листы и другие пособия за счет ФСС. Порядок расчета и начисления
        18. Клерк.Ру: задайте любой вопрос руководству сайта
        19. Правила расчёта НДС при осуществлении экспортно-импортных операций
        20. Как сдать отчетность в Пенсионный фонд за 3 квартал 2012 года
        21. Отчетность в ФСС за 9 месяцев 2012 года
        22. Подготовка отчетности в ПФР за 2 квартал. Сложные вопросы
        23. Запуск электронных счетов-фактур в России
        24. Как снизить затраты на ИТ-оборудование, ПО и ИТ-персонал с использованием облачных мощностей
        25. Отчетность в ПФР за 1 квартал 2012. Основные изменения
        26. Налог на прибыль: нюансы заполнения декларации за 2011 год
        27. Годовая отчетность в ПФР. Актуальные вопросы
        28. Новое в бухгалтерской отчетности за 2011 год
        29. Отчетность в ФСС в вопросах и ответах
        30. Полугодовая отчетность в ПФР в вопросах и ответах
        31. Расчет пособий по временной нетрудоспособности в 2011 году
        32. Электронные счета-фактуры и электронные первичные документы
        33. Формирование бухгалтерской отчетности за 2010 год
        34. Расчет больничных в 2011 году. Декретные и пособия в переходный период
        35. Новое в законодательстве о налогах и страховых взносах в 2011 году
        36. Изменения в финансовой отчетности в 2011 году
        37. DDoS атаки в России как способ нечестной конкурентной борьбы.
        38. Банковские продукты для физлиц: кредитование, депозиты, спецпредложения
        39. Документ в электронной форме — эффективное решение актуальных проблем
        40. Как найти работу с помощью Клерк.Ру
        41. Предоставление сведений перс. учета за первое полугодие 2010 года
        42. Налоговая ответственность: кто и за что отвечает?
        43. Проверки, взыскание, возврат/зачет налогов и др.вопросы ч.1 НК РФ
        44. Расчет больн. листов и страховых взносов в свете квартальной отчетности
        45. Замена ЕСН страховыми взносами и другие нововведения 2010 года
        46. Ликвидация коммерческих и некоммерческих организаций
        47. Бухгалтерский и налоговый учет товарно-материальных ценностей
        48. Обязательная перерегистрация фирм в соответствии с Законом №312-ФЗ
        49. PR и маркетинг в сфере профессиональных услуг своими силами
        50. Клерк.Ру: смена дизайна
        51. Построение личного финансового плана: мечты и реальность
        52. Подготовка бух. отчетности. Изменения в рос. стандартах учета в 2009 году
        53. Откаты в сфере продаж: за и против
        54. Потеря работы в период кризиса. Что делать?
        55. Все, что вы хотели знать о Клерк.Ру, но стеснялись спросить
        56. Кредит в кризис: условия и возможности
        57. Сохранение капитала во время кризиса: стратегии для частных инвесторов
        58. НДС: вычеты по авансам. Вопросы с ответами и без
        59. Пресс-конференция Деда Мороза
        60. Изменения в Налоговый кодекс, вступающие в силу с 2009 года
        61. Налог на прибыль с учетом последних изменений и разъяснений Минфина
        62. Российский кризис: угрозы и возможности
        63. Сетевой бизнес: качественные товары или развод на деньги?
        64. КАСКО: страховка без секретов
        65. Выплаты физическим лицам
        66. Рейдерство. Как защитить собственный бизнес?
        67. Актуальные вопросы исчисления и возмещения НДС
        68. Спецрежимы: ЕНВД и УСН. Особенности и сложные вопросы
        69. Налог на прибыль. Расчет, особенности исчисления, спорные моменты
        70. Учетная политика для целей бухучета
        71. Налоговые проверки. Практика применения новых правил
        72. НДС: порядок расчета
      2. Аутсорсинг в вопросах и ответах
      3. Как бухгалтеру выполнить требования Закона «О персональных данных»
      4. Идеальный архив бухгалтерских документов
  • Служебные форумы
    1. Архив
      1. FAQ (Часто задаваемые вопросы)
        1. FAQ: Часто задаваемые вопросы по бухучету и налогам
      2. Игры и тренинги
        1. Тренинг по воспитанию самоуверенности
        2. ВЭД в условиях суровой действительности
    2. Книга жалоб и предложений
      1. Дневники

СКД, Функция Массив или соединитьстроку возвращает «<Пустое значение>» #636467

  • Как сделать, чтобы реквизит обработки запоминался в текущем сеансе?
  • Критерии отбора в СКД
  • Может-ли отчет написанный не на СКД попасть в ПанельОтчетов БСП ?
  • Что такое и на сколько заразно safeguard и waagent ?
  • БП 3.0 Нарушена последовательность регламентных операций
  • Отражение зарплаты в регл. учете — вручную или можно из ЗУП выгружать?
  • Автоматическое заполнение полей формы документа 1с 8.1
  • Удаляются записи из регистра сведений
  • Нумерация в СКД
  • Как убрать шапку и границы формы
  • поиск колонки в строке табличной части
  • Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.14.10) , вижу ошибку
  • 2 Конвертация УНФ — УНФ Не перегружаются связи «На основании»
  • файл отсутствует в хранилище
  • Как из ТекущаяДата() получить день текущей даты?
  • Как добавить документ в структуру подчинённости?
  • Как исправить регистр взаиморасчеты с контрагентами
  • УТ 11. Регистрировать остатки у поставщиков из их прайсов.

Функции языка выражений системы компоновки данных

Вычисление выражений

Вычислить
ВычислитьВыражение
ВычислитьВыражениеСГруппировкойМассив
ВычислитьВыражениеСГруппировкойТаблицаЗначений

Дата и время

Год
День
ДеньГода
ДеньНедели
ДобавитьКДате
Квартал
КонецПериода
Месяц
Минута
НачалоПериода
Неделя
РазностьДат
Секунда
Час

Положение записи

НомерПоПорядку
НомерПоПорядкуВГруппировке
Уровень
УровеньВГруппировке

Представление значения

ЗначениеЗаполнено
Формат

Работа с числами

ACos
ASin
ATan
Cos
Exp
Log
Log10
Pow
Sin
Sqrt
Tan
Окр
Цел

Работа со строками

ДлинаСтроки
Подстрока

Прочее

Выразить
ЕстьNull
ЗначениеЗаполнено
Представление
Строка
ТипЗначения
Функции общих модулей

Вычислить (Eval)

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

Синтаксис:

Вычислить(Выражение, Группировка, ТипРасчета)

Параметры:

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

Сумма(Продажи.СуммаОборот) / Вычислить(«Сумма(Продажи.СуммаОборот)», «ОбщийИтог»)

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

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

ВычислитьВыражение (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

Значение по умолчанию «Отдельно».

Примечания:

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

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

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

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

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

ВычислитьВыражениеСГруппировкойМассив (EvalExpressionWithGroupArray)

Синтаксис:

ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры:

  • Выражение — выражение, которое нужно вычислить. Тип Строка. Например, «Сумма(СуммаОборот)»;
  • ВыраженияПолейГруппировки — выражения полей группировки, перечисленные через запятую. Например, «Контрагент, Партия»;
  • ОтборЗаписей — выражение, применяемое к детальным записям. Например, «ПометкаУдаления = Ложь». Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
  • ОтборГруппировок — отбор, применяемый к групповым записям. Например: «Сумма(СуммаОборот) > &Параметр1».

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

Пример:

Максимум(ВычислитьВыражениеСГруппировкойМассив («Сумма(СуммаОборот)», «Контрагент»));

Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.

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

Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойМассив(«Сумма(СуммаОборот)», «Контрагент»)

компоновщик макета сгенерирует для вывода следующее выражение:

ВычислитьВыражениеСГруппировкойТаблицаЗначений (EvalExpressionWithGroupValueTable)

Синтаксис:

ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)

Параметры:

Параметры:

  • Выражение — выражение, которое нужно вычислить. Тип Строка. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: «Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж».
  • ВыраженияПолейГруппировки — выражения полей группировки, перечисленные через запятую. Например, «Контрагент, Партия»;
  • ОтборЗаписей — выражение, применяемое к детальным записям. Например, «ПометкаУдаления = Ложь». Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
  • ОтборГруппировок — отбор, применяемый к групповым записям. Например: «Сумма(СуммаОборот) > &Параметр1».

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

Пример:

ВычислитьВыражениеСГруппировкойТаблицаЗначений («Контрагент КАК Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж», «Контрагент»)

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

Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.

Например, для пользовательского поля с выражением:

ВычислитьВыражениеСГруппировкойТаблицаЗначений («Контрагент, Сумма(СуммаОборот)», «Контрагент»)

Компоновщик макета сгенерирует для вывода следующее выражение:

Год (Year)

Данная функция предназначена для выделения года из значения типа Дата.

Синтаксис:

Год(Дата)

Параметр:

  • Дата — тип Дата. Дата, по которой определяют год.

Пример:

ГОД(РасхНакл.Дата)

День (Day)

Данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31.

Синтаксис:

День(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют дня месяца.

Пример:

ДЕНЬ(РасхНакл.Дата)

ДеньГода (DayOfYear)

Данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365(366).

Синтаксис:

ДеньГода(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют день года.

Пример:

ДЕНЬГОДА(РасхНакл.Дата)

ДеньНедели (WeekDay)

Данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7(воскресенье).

Синтаксис:

ДеньНедели(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют день недели .

Пример:

ДЕНЬНЕДЕЛИ(РасхНакл.Дата)

ДобавитьКДате (DateAdd)

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

Синтаксис:

ДобавитьКДате(Выражение, ТипУвеличения, Величина)

Параметры:

  • Выражение — тип Дата. Исходная дата;
  • ТипУвеличения — тип Строка. Содержит одно из значений:
    • Минута;
    • Час;
    • День;
    • Неделя;
    • Месяц;
    • Квартал;
    • Год;
    • Декада — При выборе значения к исходной дате будет добавлено количество дней, умноженное на 10;
    • Полугодие.
  • Величина – на сколько необходимо увеличить дату. Тип Число. Дробная часть игнорируется.

Пример:

ДобавитьКДате(ДатаВремя(2002, 10, 12, 10, 15, 34), «Месяц», 1)

Результат:

12.11.2002 10:15:34

Квартал (Quarter)

Данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4.

Синтаксис:

Квартал(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют квартал

Пример:

КВАРТАЛ(РасхНакл.Дата)

КонецПериода (EndOfPeriod)

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

Синтаксис:

КонецПериода (Дата, ТипПериода)

Параметры:

Пример:

КонецПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), «Неделя»)

Результат:

13.10.2002 23:59:59

Месяц (Month)

Данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапазоне от 1 до 12.

Синтаксис:

Месяц(Дата)

Параметр:

  • Дата — тип Дата. Дата, по которой определяют месяц.

Пример:

МЕСЯЦ(РасхНакл.Дата)

Минута (Minute)

Данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59.

Синтаксис:

Минута(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют минута часа.

Пример:

МИНУТА(РасхНакл.Дата)

НачалоПериода (BeginOfPeriod)

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

Синтаксис:

НачалоПериода(Дата, ТипПериода)

Параметры:

Пример:

НачалоПериода(ДатаВремя(2002, 10, 12, 10, 15, 34), «Месяц»)

Результат:

01.10.2002 0:00:00

Неделя (Week)

Данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1.

Синтаксис:

Неделя(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют номера недели.

Пример:

НЕДЕЛЯ(РасхНакл.Дата)

РазностьДат (DateDiff)

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

Синтаксис:

РазностьДат(Выражение1 , Выражение2 , ТипРазности)

Параметры:

Пример:

РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2002, 10, 12, 10, 15, 34),
ДАТАВРЕМЯ(2002, 10, 14, 9, 18, 06), «ДЕНЬ»)

Результат:

Секунда (Second)

Данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59.

Синтаксис:

Секунда(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют секунды минуты.

Пример:

СЕКУНДА(РасхНакл.Дата)

Час (Hour)

Данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23.

Синтаксис:

Час(Дата)

Параметр

  • Дата — тип Дата. Дата, по которой определяют час суток.

Пример:

ЧАС(РасхНакл.Дата)

НомерПоПорядку (SerialNumber)

Получить следующий порядковый номер.

Синтаксис:

НомерПоПорядку()

Пример:

НомерПоПорядку()

НомерПоПорядкуВГруппировке (GroupSerialNumber)

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

Пример:

НомерПоПорядкуВГруппировке()

Уровень (Level)

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

Синтаксис:

Уровень()

Пример:

Уровень()

УровеньВГруппировке (LevelInGroup)

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

Пример:

УровеньВГруппировке()

ЗначениеЗаполнено (ValueIsFilled)

Для значений NULL, Неопределено всегда возвращает Ложь.
Для значений Булево всегда возвращает Истину.
Для остальных типов возвращает Истину, если значение отличается от значения по умолчанию для данного типа.

Пример:

ЗначениеЗаполнено(ДатаДоставки)

Формат (Format)

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

Синтаксис:

Формат(Значение, ФорматнаяСтрока)

Параметры:

  • Значение — выражение, которое требуется отформатировать;
  • ФорматнаяСтрока — форматная строка задается в соответствии с форматной строкой 1С:Предприятие.

Пример:

Формат(РасходныеНакладные.СуммаДок, «ЧДЦ=2»)

ACos

Вычисляет арккосинус в радианах.

Синтаксис:

ACos(Выражение)

Параметр:

  • Выражение — тип Число. Значение косинуса (в диапазоне -1 … 1), по которому определяется угол.

ASin

Вычисляет арксинус в радианах.

Синтаксис:

ASin(Выражение)

Параметр:

  • Выражение — тип Число. Значение синуса (в диапазоне -1 … 1), по которому определяется угол.

ATan

Вычисляет арктангенс в радианах.

Синтаксис:

ATan(Выражение)

Параметр:

  • Выражение — тип Число. Значение тангенса, по которому определяется угол.

Cos

Вычисляет косинус.

Синтаксис:

Cos(Выражение)

Параметр:

  • Выражение — тип Число. Задается в радианах.

Exp

Возведение числа e в степень.

Синтаксис:

Exp(Выражение)

Параметр:

  • Выражение — тип Число. Значение степени.

Log

Вычисляет натуральный логарифм.

Синтаксис:

Log(Выражение)

Параметр:

  • Выражение — тип Число. Исходное число, больше 0.

Log10

Вычисляет логарифм X по основанию 10.

Синтаксис:

Log10(Выражение)

Параметр:

  • Выражение — тип Число. Исходное число, больше 0.

Pow

Возведение в степень.

Синтаксис:

Pow(Основание, Показатель)

Параметры:

  • Основание — тип Число. Основание операции возведения в степень.
  • Показатель — тип Число. Показатель степени.

Sin

Вычисляет синус.

Синтаксис:

Sin(Выражение)

Параметр:

  • Выражение — тип Число. Задается в радианах.

Sqrt

Вычисляет квадратный корень.

Синтаксис:

Sqrt(Выражение)

Параметр:

  • Выражение — тип Число. Неотрицательное число.

Tan

Вычисляет тангенс.

Синтаксис:

Tan(Выражение)

Параметр:

  • Выражение — тип Число. Значение синуса, по которому определяется угол.

Окр (Round)

Округляет исходное число до нужной разрядности. Режим округления стандартный (1,5 как 2).

Синтаксис:

Окр(Выражение, Разрядность)

Параметры:

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

Цел (Int)

Отсекает дробную часть числа.

Синтаксис:

Цел(Выражение)

Параметр:

  • Выражение — тип Число. Дробное число.

ДлинаСтроки (StringLength)

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

Синтаксис:

ДлинаСтроки(Строка)

Параметр:

  • Строка — тип Строка. Строка, длину которой определяют.

Пример:

Строка(Контрагенты.Адрес)

Подстрока (Substring)

Данная функция предназначена для выделения подстроки из строки.

Синтаксис:

Подстрока(Строка, Позиция, Длина)

Параметры:

  • Строка — тип Строка. Строка, из которой выделяют подстроку. Если в качестве первого параметра фигурирует строка, то результатом функции будет строка (возможно, нулевой длины). Если в качестве первого параметра будет использовано значение NULL, то результатом функции также будет значение NULL. Другие значения считаются недопустимыми и вызывают состояние ошибки;
  • Позиция — тип Число. Позиция символа, с которого начинается выделяемая из строки подстрока;
  • Длина — тип Число. Длина выделяемой подстроки.

Пример:

ПОДСТРОКА(Контрагенты.Адрес, 1, 4)

Выразить (Cast)

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

Синтаксис:

Выразить(Выражение, УказаниеТипа)

Параметры:

  • Выражение — преобразуемое выражение;
  • УказаниеТипа — тип Строка. Содержит строку типа. Например, «Число», «Строка» и т.п. Кроме примитивных типов данная строка может содержать имя таблицы. В этом случае будет осуществлена попытка выразить к ссылке на указанную таблицу.

Пример:

Выразить(Данные.Реквизит1, «Число(10,3)»)

ЕстьNull (IsNull)

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

Синтаксис:

ЕстьNull(Выражение1, Выражение2)

Параметры:

  • Выражение1 — проверяемое значение;
  • Выражение2 — возвращаемое значение, если значение Выражение1 есть NULL.

Пример:

ЕстьNULL(Сумма(Продажи.СуммаОборот), 0)

Функции общих модулей

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

Пример:

СокращенноеНаименование(Документы.Ссылка, Документы.Дата, Документы.Номер)

В данном примере будет осуществлен вызов функции «СокращенноеНаименование» из общего модуля конфигурации.

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

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

Представление (Resentation)

Данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами «; «. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка «<Пустое значение>».

Пример:

Представление(Контрагент)

Строка (String)

Данная функция преобразует переданное значение в строку.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами «; «. Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка «<Пустое значение>».

Пример:

Строка(ДатаПродажи)

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

Синтаксис:

ПолучитьНавигационнуюСсылку(Объект, ИмяРеквизита, Индекс)

Параметры:

  • Объект — Обязательный. Тип Любая ссылка, РегистрСведенийКлючЗаписи.<Имя регистра сведений>, ИдентификаторОбсужденияСистемыВзаимодействия, ОбсуждениеСистемыВзаимодействия. В качестве значения данного параметра могут быть указаны:
    • Ссылка на объект информационной базы,
    • Ключ записи регистра сведений,
    • Идентификатор обсуждения системы взаимодействия,
    • Обсуждение системы взаимодействия.

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

  • ИмяРеквизита — тип Строка. Если требуется получить навигационную ссылку на реквизит объекта, то в данном параметре следует указать имя реквизита.
    Если требуется получить ссылку на ключ записи регистра сведений, то данный параметр должен содержать имя ресурса регистра сведений.
    Если требуется получить ссылку на реквизит табличной части, то он указывается через точку «.» после имени табличной части, и в параметре <Индекс> следует указать индекс строки табличной части;
  • Индекс — тип Число. Индекс строки в табличной части, если требуется получить навигационную ссылку на реквизит табличной части.
    Первая строка имеет индекс, равный 0.

Пример:

ТипЗначения(ValueType)

Синтаксис:

ТипЗначения(Выражение)

Параметр:

  • Выражение – тип Строка. Строковое значение типа.

Возвращает значение типа Тип, содержащее тип значения параметра функции.

см. также:
Язык выражений системы компоновки данных
Двуязычное представление ключевых слов системы компоновки данных

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

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