Наборы
Наборы - это коллекции с данными конкретного объекта (и общих запросов) сформированные в момент подготовки печатной формы по конкретному объекту. Для печатных форм с признаком “Это реестр”, набор данных аналогичен всем данным полученным из запросов. Данные наборов могут быть сформированы из результатов запросов или из результата выполнения алгоритма.

Вид закладки “Наборы”
Форма закладки “Наборы” разделена на две части:
- в левой части расположен список наборов
- в правой части расположен список полей текущего активного набора
Проще всего думать о наборе так: запрос даёт таблицу, а набор решает, в каком виде эта таблица попадёт в макет — целиком строками, одной строкой или свёрнутой в перечисление через точку с запятой. И он же позволяет дописать к таблице поля, которых в запросе не было: представление из нескольких колонок, собственную нумерацию, доп. реквизит, вычисленное значение.
Порядок работы обычно такой:
- Проверьте состав наборов — они создаются из запросов сами и синхронизируются при изменении запросов.
- Задайте вид набора — от него зависит, как поле пишется в макете и в какие области его можно вывести.
- Добавьте недостающие поля — представления, нумераторы, доп. реквизиты, вычисляемые.
- Свяжите наборы между собой на закладке Соединения, если данные приходят из разных таблиц.
- Переходите к Макету — там поля наборов подставляются в параметры областей.
Список наборов
Заголовок раздела «Список наборов»По умолчанию список наборов создается на основании данных закладки “Запросы”. В дальнейшем при изменении состава запросов данные наборов синхронизируются. То есть добавление или удаление запроса приводит к изменению наборов. Однако, если из запроса удалено поле, которое используется в макете (наборе, соединениях, параметрах) поле в наборе не будет удалено автоматически. Изменится пиктограмма связи поля и цвет текста (на красный).
Рассмотрим подробно колонки таблицы “Наборы”
| Колонка | Значок | Описание |
|---|---|---|
| Печать | Признак доступности набора для использования в параметрах печатной формы | |
| Имя набора | Пользовательское представление набора | |
| Источник данных | Имя источника данных (имя запроса или алгоритма) | |
| Вид набора | Способ формирования коллекции данных набора для использования в печатной форме | |
| Алгоритм | Признак наличия алгоритма обработки набора данных. Подсказка колонки — «Есть алгоритм обработки набора данных» |
Источник данных
Заголовок раздела «Источник данных»Источником данных для набора (как упоминалось выше) может выступать результат запроса или произвольный алгоритм (источник = pw_Алгоритм).
Таблицы сформированные при помощи алгоритма (без запроса в основе) должны быть подготовлены полностью в самом коде. Поля набора при этом необходимо добавить вручную. Если в таком наборе будет присутствовать поле “Ссылка”, конструктор будет рассматривать это поле как ключевое, для отбора при подготовке данных конкретной печатной формы (по каждой ссылке).
Обработка набора
Заголовок раздела «Обработка набора»Набор данных можно создать из источника Произвольный алгоритм. При этом в алгоритме входящий параметр ДанныеЗапроса должен быть сформирован полностью. Например:
ДанныеЗапроса = Новый ТаблицаЗначений;ДанныеЗапроса.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"));
Для Индекс = 1 По 100 Цикл СтрокаТаблицы = ДанныеЗапроса.Добавить(); СтрокаТаблицы.НомерСтроки = Индекс;КонецЦикла;Кроме того, наборы созданные из запросов, могут быть доработаны произвольным алгоритмом. Для задания кода алгоритма, необходимо перейти в окно редактора кода и задать алгоритм обработки.
Алгоритм выполняется сразу после запроса — до расчёта дополнительных полей набора и до разделения данных по объектам печати (полный порядок — в разделе Очередность подготовки полей). В алгоритме доступны переменные:
| Переменная | Тип | Назначение |
|---|---|---|
ЭтотМакет | ОбработкаОбъект.pw_Исполнитель | Объект исполнителя печатной формы |
ДанныеЗапроса | ТаблицаЗначений | Результат выполнения запроса по всем печатаемым объектам. Таблицу можно изменять и полностью пересобирать: добавлять и удалять колонки, фильтровать и дополнять строки — дополнительные поля набора рассчитаются по итоговой таблице |
НаборыДанных | Структура | Таблицы данных ранее подготовленных наборов, ключ — имя набора |
ДополнительныеСвойства | Структура | Коллекция для данных, передаваемых между алгоритмами и событиями |
Тот же перечень выводится подсказкой над полем алгоритма в редакторе кода.
Если в процессе обработки набора были добавлены колонки во входящий параметр ДанныеЗапроса программа может автоматически обновить поля, для этого над полем алгоритма располагается кнопка Обновить поля. Программа разберет текст алгоритма и найдет места, где был выполнен код ДанныеЗапроса.Колонки.Добавить() и автоматически добавит требуемые поля в набор.
Вид набора
Заголовок раздела «Вид набора»Все наборы по умолчанию имеют вид “Многострочная коллекция”, то есть по сути таблица. Вывод в печатную форму многострочных коллекций возможен только в виде таблицы. При этом, если нам необходимо добавить значение отдельного реквизита в шапку или другую область (не являющуюся таблицей) необходимо изменить вид набора.
Набор данных может иметь следующий вид:
- первая строка
- последняя строка
- многострочная коллекция
- соединение строк (через ”;“)
Первая, последняя строка
Заголовок раздела «Первая, последняя строка»Рассмотрим пример. Запрос реквизитов шапки документа выглядит следующим образом:
ВЫБРАТЬ Т.Ссылка КАК Ссылка, Т.Номер КАК Номер, Т.Дата КАК ДатаИЗ Документ.МойДокумент КАК ТГДЕ Т.Ссылка В (&МассивОбъектов)Если пользователь выбрал 3 документа для формирования печатных форм, то результат выполнения данного запроса будет иметь следующий вид:
| Ссылка | Номер | Дата |
|---|---|---|
| Мой документ № 1 от 01.01.2023 | 1 | 01.01.2023 |
| Мой документ № 2 от 02.01.2023 | 2 | 02.01.2023 |
| Мой документ № 3 от 03.01.2023 | 3 | 03.01.2023 |
Для каждого документа, в приведенной таблице, существует только одна строка с данными. Чтобы использовать реквизиты данной строки необходимо преобразовать данные из “горизонтального” вида в “вертикальный”. Для этого необходимо изменить вид набора.
В приведённом примере неважно, первая или последняя строка будет использована для набора. В любом случае строка будет преобразована в структуру вида:
- Ссылка: Мой документ № 1 от 01.01.2023
- Номер: 1
- Дата: 01.01.2023
Такой набор данных будет доступен в областях со способом вывода “Без повторений” или “Перенос строки”. Поля данных при выборе в параметрах макета будут иметь путь НаборыДанных.ИмяНабора.ИмяПоля, например: НаборыДанных.Шапка.Организация. В приведенном примере этот путь означат, что будут считаны (и выведены) данные из поля Организация первой (или последней) строки набора Шапка.
Соединение строк
Заголовок раздела «Соединение строк»В некоторых случаях необходимо “свернуть” таблицу в одну строку.
Например. У нас есть запрос Товары
| Ссылка | Номенклатура | Количество |
|---|---|---|
| Мой документ № 1 от 01.01.2023 | Товар 1 | 10 |
| Мой документ № 1 от 01.01.2023 | Товар 2 | 10 |
Допустим нам необходимо вывести в шапке документа в одну строку всю номенклатуру из табличной части. В таком случае мы можем использовать вид набора “Соединение строк”. В этом случае набор будет свёрнут по ссылке и преобразован в вертикальную структуру (для документа № 1):
- Ссылка: Мой документ № 1 от 01.01.2023
- Номенклатура: Товар 1; Товар 2
- Количество: 10; 10
Поле “Количество” мы можем удалить, эти данные нас не интересуют.
Многострочная коллекция
Заголовок раздела «Многострочная коллекция»Многострочная коллекция нужна для вывода табличных частей или когда набор содержит несколько строк на одну печатную форму. Подробнее о том, как реализовать вывод области для каждой строки многострочной коллекции читайте в разделе Настройка макета. Если для области указан набор (источник данных), тогда путь к значению поля из строки набора будет иметь вид НаборыДанных.[ИмяНабора].Строка.[ИмяПоля]. А для итога по числовой колонке набора — НаборыДанных.[ИмяНабора].Итог.[ИмяПоля].[Агрегат].
Поля набора
Заголовок раздела «Поля набора»При активизации строки набора, в правой части отображается таблица полей набора. Рассмотрим подробнее колонки таблицы:
| Колонка | Значок | Описание |
|---|---|---|
| Связь | Вид связи поля с данными макета — значения разобраны в разделе Связь полей | |
| Печать | Признак простого типа поля, рекомендуется к использованию в печатной форме | |
| Имя поля | Имя поля для идентификации пользователем | |
| Тип поля | Тип поля, определяет источник получения данных для поля | |
| Тип данных | Представление типа данных значения поля | |
| Доп. реквизиты | Признак возможного наличия доп. реквизитов или свойств (подсистема «Свойства» БСП 1С). Подсказка колонки — «Есть дополнительные реквизиты или сведения» | |
| Контактная информация | Признак возможного наличия контактной информации (подсистема «Контактная информация» БСП 1С). Подсказка колонки — «Есть контактная информация» |
Над табличной частью располагается командная панель. По умолчанию в ней находятся команды управления табличной частью. Дополнительно добавлены команды:
Кнопки добавления полей подписей не имеют — команда узнаётся по значку и по подсказке, которая всплывает при наведении. В таблице ниже подсказка приведена дословно: по ней команду можно найти поиском и назвать в обращении в поддержку.
| Значок | Подсказка кнопки | Что делает |
|---|---|---|
| Добавить поле набора данных конструктор | Добавляет поле представления | |
| Добавить поле набора данных нумератора | Добавляет поле нумератора | |
| Добавить поле набора данных вычисляемое | Добавляет вычисляемое поле | |
| Добавить поле набора данных из алгоритма | Добавляет поле алгоритма | |
| Добавить поле доп. реквизита или сведения | Добавляет поле свойства | |
| Добавить поле контактной информации | Добавляет поле конт. информации | |
| Обновить — Из запроса | Обновляет поля набора из существующего запроса | |
| Обновить — Из набора | Обновляет поля набора из существующего набора | |
| Обновить — Наличие связей | Пересчитывает значок связи полей набора в макете | |
| Обновить — Наличие свойств и конт. инф. | Обновляет признак наличия доп. реквизитов и контактной информации полей набора (или всех наборов) | |
| Вывести информацию о местах использования поля набора данных | Выводит в сообщения подробности о связи поля с другими данными макета |
Типы полей набора
Заголовок раздела «Типы полей набора»Поле источника
Заголовок раздела «Поле источника»По умолчанию, наборы созданные на основании запроса автоматически обновляются полями из запроса. Для таких полей устанавливается тип “Поле источника”. Изменить что-либо для данного поля невозможно, поскольку оно унаследовано из запроса.
Пользователю доступны следующие пути к полям набора:
| Путь к данным | Описание |
|---|---|
НаборыДанных.[Набор].[Поле] | Поле набора с видом «Первая строка», «Последняя строка» или «Соединение строк» |
НаборыДанных.[Набор].Строка.[Поле] | Поле строки многострочной коллекции — при условии, что этот набор указан для области в колонке «Набор» |
НаборыДанных.[Набор].Итог.[Поле].[Агрегат] | Итог по числовой колонке многострочной коллекции |
НаборыДанных.[Набор].КоличествоСтрок | Количество строк многострочной коллекции |
НаборыДанных.[Набор].[Соединение].[Поле] | Поле правого набора, полученное через соединение |
НаборыДанных.[Набор].[ПолеДаты].[ФункцияДаты] | Значение поля с типом «Дата», преобразованное функцией — например НачалоМесяца. В алгоритмах недоступно |
НаборыДанных.СистемныеПоля.[Поле] | Системное поле, которое программа заполняет сама: номер страницы, текущая дата, текущий пользователь |
Полный разбор путей, функций поля даты, агрегатов и системных полей — в главе Доступные поля. Выбирать путь руками обычно не нужно: он подставляется, когда поле выбрано в дереве доступных полей.
Поле алгоритма
Заголовок раздела «Поле алгоритма»Если набор создан на основе произвольного алгоритма или имеет алгоритм обработки доступно создание полей с типом “Поле алгоритма”. Для данного поля разработчик должен указать имя и тип данных поля.
Поле представления
Заголовок раздела «Поле представления»В некоторых случаях нам необходимо произвести соединение значений различных колонок в одно поле. Например чтобы вывести поле с наименованием организации, ИНН, КПП и адресом. Подобное поле можно создать в запросе. Но намного удобнее реализовать это в поле набора данных при помощи специального конструктора представления.

Конструктор представления
В конструкторе представления можно использовать поля из вышестоящих наборов. При этом можно задать префикс, который будет предшествовать значению поля. А также настроить форматирование значения поля.
При этом, если значение поля в момент формирования печатной формы будет пустым, префикс не будет выведен. В приведенном примере, если КПП не указан, то префикс ”, КПП ” не будет добавлен в результирующую строку.
Поле нумератора
Заголовок раздела «Поле нумератора»В некоторых случаях необходимо выполнить собственную нумерацию строк табличной части. Например, допустим у нас есть таблица:
| № | ВидНоменклатуры | Номенклатура | Количество |
|---|---|---|---|
| 1 | Чайники | Tefal | 1 |
| 2 | Чайники | Brown | 1 |
| 3 | Чайники | Siemens | 1 |
| 4 | Кофеварки | Tefal | 1 |
| 5 | Кофеварки | Siemens | 1 |
Нам необходимо добавить колонку с номером внутри вида. Добавим поле нумератора “НомерПоВиду” с настройкой

Конструктор нумератора
В результате таблица будет иметь вид
| № | НомерПоВиду | ВидНоменклатуры | Номенклатура | Количество |
|---|---|---|---|---|
| 1 | 1 | Чайники | Tefal | 1 |
| 2 | 2 | Чайники | Brown | 1 |
| 3 | 3 | Чайники | Siemens | 1 |
| 4 | 1 | Кофеварки | Tefal | 1 |
| 5 | 2 | Кофеварки | Siemens | 1 |
Вычисляемое поле
Заголовок раздела «Вычисляемое поле»Поле с произвольным алгоритмом в виде программного кода. Алгоритм выполняется для каждой строки набора после расчёта полей доп. реквизитов и контактной информации, поэтому их значения в строке уже доступны. Результат присваивается переменной Результат:
Результат = Окр(СтрокаНабора.Сумма * 20 / 100, 2);В алгоритме доступны переменные:
| Переменная | Тип | Назначение |
|---|---|---|
ЭтотМакет | ОбработкаОбъект.pw_Исполнитель | Объект исполнителя печатной формы |
СтрокаНабора | СтрокаТаблицыЗначений | Строка набора, для которой вычисляется значение. Доступны поля запроса, поля алгоритма набора, доп. реквизиты и контактная информация; значения других вычисляемых полей могут быть ещё не рассчитаны |
ДополнительныеСвойства | Структура | Коллекция для данных, передаваемых между алгоритмами и событиями |
Поле свойства
Заголовок раздела «Поле свойства»При наличии подсистемы “Свойства” (БСП 1С) можно добавить поле из данных реквизитов или свойств по значению определенного поля. Например: у справочника “Контрагенты” есть доп. реквизит “Это подрядчик”. Данное поле мы можем добавить путем доработки запроса. Но для этого надо знать как хранятся данные в подсистеме, а также учитывать некоторые нюансы. При этом конструктор позволяет просто встать на поле набора с типом данных “СправочникСсылка.Контрагенты” и добавить поле из свойств. Выбрать требуемый доп. реквизит (или свойство) и программа автоматически добавит поле “Контрагент_ЭтоПодрядчик”. При формировании печатной формы значение будет считано автоматически.
Поле конт. информации
Заголовок раздела «Поле конт. информации»При наличии подсистемы “Контактная информация” (БСП 1С) можно добавить поле с определенным видом контактной информации по значению определенного поля. Например: у справочника “Организации” есть контактная информация с видом “Юридический адрес”. Данное поле мы можем добавить путем доработки запроса. Но для этого надо знать как хранятся данные в подсистеме, а также учитывать что хранение может быть с историей. При этом конструктор позволяет просто встать на поле набора данных с типом “СправочникСсылка.Организации” и добавить поле с видом конт. информации “Юридический адрес”. Программа автоматически добавит новое поле “Организация_ЮридическийАдрес”. При формировании печатной формы значение будет считано автоматически.
Кроме того, есть возможность указать привязку получения данных контактной информации к определенному периоду, указав в настройке “Период” поле для получения данных, на какую дату требуется получение данных.
Очередность подготовки полей
Заголовок раздела «Очередность подготовки полей»Набор готовится по шагам, и порядок здесь важен: каждый шаг видит только то, что рассчитано до него.
- Запрос — выполняется по всем печатаемым объектам сразу.
- Произвольный алгоритм набора — может пересобрать таблицу целиком; дополнительные поля рассчитаются по его результату.
- Поля набора — по очередям:
- поле доп. реквизита (1я очередь)
- поле конт. информации (2я очередь)
- вычисляемое поле (3я очередь)
- поле нумератора (4я очередь)
- поле представления (5я очередь)
- Разделение данных по объектам печати и применение вида набора.
Связь полей
Заголовок раздела «Связь полей»При записи, а также в процессе редактирования макета программа анализирует использование полей набора в различных местах макета. Например: в вышеописанных примерах мы видели:
- поле “Контрагент” является владельцем для поля “Контрагент_ЭтоПодрядчик”
- поле “ВидНоменклатуры” используется в поле нумератора “НомерПоВиду”
Для данных, и других связанных полей программа подскажет что они используются в макете. А по кнопке вывода информации о связи (в командной панели), вы можете посмотреть подробную информацию о том, где используется данное поле.
Программа отличает следующие статусы связи полей
| Значок | Статус | Описание |
|---|---|---|
| Неизвестно | Статус связи неизвестен. Устанавливается для добавленных полей до первой записи или изменения данных других закладок макета | |
| Не используется | Поле связано с источником, НЕ используется в макете | |
| Используется | Поле связано с источником и используется в макете | |
| Нет источника | Поле НЕ связано с источником, используется в макете | |
| Нет источника, не используется | Поле НЕ связано с источником, НЕ используется в макете. Как правило такие поля автоматически удаляются из наборов |