Перейти к содержимому

Доступные поля

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

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

Базовые сведения о наборах и их полях описаны в разделе Наборы данных, о связывании наборов — в разделе Соединения, о параметрах и условиях вывода областей — в разделе Макет.

Любое доступное поле — это путь, который начинается с НаборыДанных и однозначно указывает на значение. Форма пути зависит от того, откуда берётся значение.

ПутьЧто это
НаборыДанных.[Набор].[Поле]Поле набора с видом «Первая строка», «Последняя строка» или «Соединение строк»
НаборыДанных.[Набор].Строка.[Поле]Поле строки многострочной коллекции; доступно в области, для которой этот набор указан в колонке «Набор»
НаборыДанных.[Набор].Итог.[Поле].[Агрегат]Итог по числовой колонке многострочной коллекции
НаборыДанных.[Набор].КоличествоСтрокКоличество строк многострочной коллекции
НаборыДанных.[Набор].[Соединение].[Поле]Поле правого набора, полученное через соединение
НаборыДанных.СистемныеПоля.[Поле]Системное поле, которое программа заполняет сама

Подробное описание форм пути и правил видимости полей приведено в разделе Наборы данных. Здесь важно другое: к пути поля может добавляться ещё один сегмент — имя функции (для полей типа «Дата») или имя агрегата (для числовых колонок коллекции). Эти сегменты и описаны ниже.

Поле выбирается в форме «Доступные поля». Каждый узел дерева показан представлением с пиктограммой типа данных; заголовки колонок не выводятся. Над деревом расположена строка поиска. Дерево заполняется по мере разворачивания узлов: вложенные реквизиты ссылочного поля и функции поля даты подставляются в момент, когда узел разворачивается.

Форма «Доступные поля»

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

Кроме представления, у дерева есть служебные колонки «Тип данных» и «Полный путь». По умолчанию они скрыты и нужны в основном для диагностики — когда требуется убедиться, какой именно путь подставится в макет. Вывести их можно стандартной командой платформы «Ещё» → «Изменить форму».

Функция поля даты — это преобразование значения даты, которое выполняется в момент вывода. Оно не требует ни изменения запроса, ни произвольного алгоритма: достаточно развернуть в дереве узел поля с типом «Дата» и выбрать нужную функцию. Имя функции добавляется к пути поля отдельным сегментом: НаборыДанных.Заказ.Дата.НачалоМесяца. Сегмент образуется из названия функции без пробелов: «Начало месяца» → НачалоМесяца, «День недели» → ДеньНедели.

Функции делятся на две группы: усечение даты (результат — дата) и извлечение части даты (результат — число).

Возвращают дату: исходное значение, «обрезанное» до начала или конца периода. Например, для значения 15.05.2026 14:37:52 функция «Начало месяца» вернёт 01.05.2026 00:00:00, а «Конец месяца» — 31.05.2026 23:59:59.

Название в деревеЗначение в XMLЧто возвращает
Начало минутыBegOfMinuteДата — начало минуты
Начало часаBegOfHourДата — начало часа
Начало дняBegOfDayДата — начало суток
Начало неделиBegOfWeekДата — начало недели (понедельник)
Начало месяцаBegOfMonthДата — первое число месяца
Начало кварталаBegOfQuarterДата — первое число квартала
Начало годаBegOfYearДата — 1 января
Конец минутыEndOfMinuteДата — последняя секунда минуты
Конец часаEndOfHourДата — последняя секунда часа
Конец дняEndOfDayДата — последняя секунда суток
Конец неделиEndOfWeekДата — последняя секунда воскресенья
Конец месяцаEndOfMonthДата — последняя секунда месяца
Конец кварталаEndOfQuarterДата — последняя секунда квартала
Конец годаEndOfYearДата — последняя секунда 31 декабря

Возвращают число — соответствующую часть даты.

Название в деревеЗначение в XMLЧто возвращает
СекундаSecondЧисло: секунда (0–59)
МинутаMinuteЧисло: минута (0–59)
ЧасHourЧисло: час (0–23)
ДеньDayЧисло: день месяца (1–31)
День неделиWeekDayЧисло: день недели (1 — понедельник, 7 — воскресенье)
День годаDayOfYearЧисло: день года (1–366)
Неделя годаWeekOfYearЧисло: номер недели в году
МесяцMonthЧисло: месяц (1–12)
ГодYearЧисло: год

Всего доступно 23 функции. Значения в колонке «Значение в XML» — это то, что записывается в элемент <FunctionName> при экспорте макета; полный перечень со стороны объектной модели приведён в разделе Объектная модель и API.

Пример: вывести месяц документа в заголовке

Заголовок раздела «Пример: вывести месяц документа в заголовке»

Требуется вывести в шапке отчёта период вида «май 2026», а сам документ содержит поле Дата с временем.

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

Функция отвечает только за значение. Если требуется сгруппировать сами строки табличной части по месяцам, группировка выполняется в запросе набора — функция поля этого не заменяет.

Функция «День недели» возвращает число (1 — понедельник). Если в печатной форме нужен день недели прописью, удобнее взять функцию «Начало дня» и задать для поля формат даты с выводом дня недели: значение остаётся датой, а прописное представление формирует форматирование. Числовой результат «Дня недели» подходит там, где день недели нужен именно как число — например, в правиле вывода области.

Пример: сравнение по дате без учёта времени

Заголовок раздела «Пример: сравнение по дате без учёта времени»

Поле даты документа почти всегда содержит время, поэтому прямое сравнение «Дата равно 15.05.2026» не сработает: значение 15.05.2026 14:37:52 не равно 15.05.2026 00:00:00. Функция «Начало дня» решает эту задачу — в правиле вывода области в качестве левого значения выбирается НаборыДанных.Заказ.Дата.НачалоДня:

ИспользованиеЛевое значениеВид сравненияЗначение
НаборыДанных.Заказ.Дата.НачалоДняРавно15.05.2026

Так же работают сравнения «больше или равно» с началом месяца, квартала или года.

Для числовых колонок многострочной коллекции программа автоматически строит ветвь Итог.[Поле] с набором агрегатов. Считать итоги в запросе, добавлять отдельный набор или писать алгоритм для этого не требуется — достаточно выбрать нужный агрегат в дереве полей.

Агрегаты доступны только для колонок числового типа наборов с видом «Многострочная коллекция». Для количества строк коллекции отдельного агрегата не нужно — есть готовое поле НаборыДанных.[Набор].КоличествоСтрок.

Название в деревеСегмент путиЧто считает
СуммаСуммаСумма значений колонки по всем строкам коллекции
СреднееСреднееСреднее значение колонки по всем строкам
МаксимумМаксимумНаибольшее значение колонки
МинимумМинимумНаименьшее значение колонки
Итог накопительныйИтогНакопительныйНарастающий итог: сумма значений строк, выведенных с начала коллекции
Итог по страницеИтогПоСтраницеСумма значений строк, выведенных на текущей странице; обнуляется при переходе на новую страницу
Процент к итогуПроцентКИтогуДоля значения текущей строки в общей сумме колонки, в процентах (тип «Число(15,2)»)

Первые четыре агрегата считаются один раз по всей коллекции — их значение одинаково в любой точке печатной формы. Три последних зависят от того, сколько строк уже выведено, поэтому осмысленны в области со способом вывода «По строкам коллекции» и в областях, которые выводятся после неё.

Путь Итог.[Поле].[Агрегат] и агрегаты «Итог накопительный», «Итог по странице» и «Процент к итогу» доступны начиная с версии 2026.2.11. Раньше Итог.[Поле] означал сумму — такие обращения в алгоритмах переписываются в Итог.[Поле].Сумма автоматически при загрузке макета.

Классическая задача: вывести «Итого» под табличной частью.

  1. В области подвала выбираем параметр (например, ИтогоСумма) и тип значения «Значение набора».
  2. В дереве разворачиваем набор коллекции → ветвь Итог → нужную колонку и выбираем агрегат «Сумма».
  3. Путь принимает вид НаборыДанных.Товары.Итог.СуммаСНДС.Сумма, где СуммаСНДС — имя колонки набора, а Сумма — имя агрегата.

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

Ветвь «Итог» у колонки коллекции: список агрегатов

Требуется колонка, в которой к каждой строке накапливается сумма предыдущих: 100, 250, 400 и т. д.

  1. В макете добавляем в область строки параметр, например НакопительныйИтог.
  2. Указываем тип значения «Значение набора» и выбираем агрегат «Итог накопительный»: НаборыДанных.Товары.Итог.Количество.ИтогНакопительный.

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

Агрегат «Итог по странице» работает так же, как нарастающий итог, но обнуляется после вывода каждой страницы. Типичное применение — строка «Перенос» в конце страницы многостраничной накладной.

Агрегат «Процент к итогу» возвращает долю значения текущей строки в общей сумме колонки, умноженную на 100. Если сумма колонки равна нулю, возвращается 0.

Например, для колонки Сумма со строками 100, 300 и 100 (итог 500) агрегат вернёт 20, 60 и 20 соответственно. Путь: НаборыДанных.Товары.Итог.Сумма.ПроцентКИтогу. Тип результата — «Число(15,2)», при необходимости точность вывода настраивается форматированием числа.

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

Русский текст в печатных формах часто требуется в косвенном падеже: «в лице генерального директора Иванова Ивана Ивановича», «выдана Петровой Марии Сергеевне». Отдельного поля для этого не нужно — склонение входит в настройки форматирования строки и применяется к любому строковому значению: параметру области, полю представления, полю набора.

Настройка находится на закладке «Строка» конструктора форматирования, в группе «Склонение в падеже», и состоит из трёх частей:

НастройкаНазначение
ПадежПадеж, в который нужно просклонять значение. Если падеж не выбран, склонение не выполняется
как ФИОФлажок. Признак того, что значение — фамилия, имя и отчество; включает режим склонения ФИО
полУточнение рода: «авто», «мужской» или «женский». Учитывается только при установленном флажке «как ФИО»

Доступные падежи:

ПадежЗначение в XML
ИменительныйNominative
РодительныйGenitive
ДательныйDative
ВинительныйAccusative
ТворительныйInstrumental
ПредложныйPrepositional

Значения настройки «пол» в файле выгрузки — Auto, Male, Female. Значение «авто» означает, что род определяется автоматически по самому ФИО.

Требуется вывести «Доверенность выдана Иванова Ивана Ивановича» — фамилию, имя и отчество в родительном падеже.

  1. В таблице параметров области находим параметр с ФИО и двойным кликом по крайней правой колонке открываем настройку форматирования.
  2. Переходим на закладку «Строка» и в группе «Склонение в падеже» выбираем падеж «Родительный».
  3. Устанавливаем флажок «как ФИО».
  4. Если автоматическое определение рода даёт неверный результат (например, для редких или несклоняемых фамилий), задаём пол явно.

Склонение в падеже на закладке «Строка» конструктора форматирования

Склонение выполняется до форматирования ФИО по шаблону, поэтому настройки «Склонение в падеже» и «Вариант вывода ФИО» можно использовать вместе: сначала значение склоняется целиком, затем сокращается до нужного шаблона (например, «Иванова И. И.»). Полный порядок операций форматирования приведён в разделе Форматирование.

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

ПолеТипЧто содержит
НаборыДанных.СистемныеПоля.НомерСтраницыЧислоНомер текущей страницы печатной формы
НаборыДанных.СистемныеПоля.ТекущаяДатаДатаДата и время формирования печатной формы
НаборыДанных.СистемныеПоля.ТекущийПользовательСсылкаПользователь, сформировавший печатную форму (доступно при использовании подсистемы «Пользователи» БСП)

Системные поля используются так же, как обычные: подставляются в параметры областей, в конструктор представления и в правила вывода. Типичные сценарии — нумерация страниц в колонтитуле, отметка «Сформировано <дата>» в подвале и условный вывод области начиная со второй страницы. Пример правила вывода с полем НомерСтраницы разобран в разделе Макет.

К полю ТекущаяДата применимы функции поля даты — например, НаборыДанных.СистемныеПоля.ТекущаяДата.НачалоДня даёт дату формирования без времени.