Наборы

Содержание
  1. Список наборов
    1. Источник данных
    2. Обработка набора
    3. Вид набора
      1. Первая, последняя строка
      2. Соединение строк
      3. Многострочная коллекция
  2. Поля набора
    1. Типы полей набора
      1. Поле источника
      2. Поле алгоритма
      3. Поле представления
      4. Поле нумератора
      5. Вычисляемое поле
      6. Поле свойства
      7. Поле конт. информации
      8. Очередность подготовки полей
    2. Связь полей

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


Вид закладки "Наборы"

Форма закладки “Наборы” разделена на две части:

  • в левой части расположен список наборов
  • в правой части расположен список полей текущего активного набора

Список наборов

По умолчанию список наборов создается на основании данных закладки “Запросы”. В дальнейшем при изменении состава запросов данные наборов синхронизируются. То есть добавление или удаление запроса приводит к изменению наборов. Однако, если из запроса удалено поле, которое используется в макете (наборе, соединениях, параметрах) поле в наборе не будет удалено автоматически. Изменится пиктограмма связи поля и цвет текста (на красный).

Рассмотрим подробно колонки таблицы “Наборы”

КолонкаОписание
Признак доступности набора для использования в параметрах печатной формы
Имя набораПользовательское представление набора
Источник данныхИмя источника данных (имя запроса или алгоритма)
Вид набораСпособ формирования коллекции данных набора для использования в печатной форме
Признак наличия алгоритма обработки набора данных

Источник данных

Источником данных для набора (как упоминалось выше) может выступать результат запроса или произвольный алгоритм (источник = pw_Алгоритм).

Таблицы сформированные при помощи алгоритма (без запроса в основе) должны быть подготовлены полностью в самом коде. Поля набора при этом необходимо добавить вручную. Если в таком наборе будет присутствовать поле “Ссылка”, конструктор будет рассматривать данное полекак ключевое, для отбора при подготовке данных конкретной печатной формы (по каждой ссылке).

Обработка набора

Набор данных можно создать из источника Произвольный алгоритм. При этом в алгоритме входящий параметр ДанныеЗапроса должен быть сформирован полностью. Например:

ДанныеЗапроса = Новый ТаблицаЗначений;
ДанныеЗапроса.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"));

Для Индекс = 1 По 100 Цикл
  СтрокаТаблицы = ДанныеЗапроса.Добавить();
  СтрокаТаблицы.НомерСтроки = Индекс;
КонецЦикла;

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

Если в процессе обработки набора были добавлены колонки во входящий параметр ДанныеЗапроса программа может автоматически обновить поля, для этого над полем алгоритма располагается кнопка Обновить поля. Программа разберет текст алгоритма и найдет места, где был выполнен код ДанныеЗапроса.Колонки.Добавить() и автоматически добавит требуемые поля в набор.

Вид набора

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

Набор данных может иметь следующий вид:

  • первая строка
  • последняя строка
  • многострочная коллекция
  • соединение строк (через “;”)

Первая, последняя строка

Рассмотрим пример. Запрос реквизитов шапки документа выглядит следующим образом:

ВЫБРАТЬ
  Т.Ссылка КАК Ссылка,
  Т.Номер КАК Номер,
  Т.Дата КАК Дата
ИЗ
  Документ.МойДокумент КАК Т
ГДЕ
  Т.Ссылка В (&МассивСсылок)

Если пользователь выбрал 3 документа для формирования печатных форм, то результат выполнения данного запроса будет иметь следующий вид:

СсылкаНомерДата
Мой документ № 1 от 01.01.2023101.01.2023
Мой документ № 2 от 02.01.2023202.01.2023
Мой документ № 3 от 03.01.2023303.01.2023

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

В приведенном примере нет значения первая или последняя строка будет использована для набора. В любом случае строка будет преобразована в структуру вида:

  • Ссылка: Мой документ № 1 от 01.01.2023
  • Номер: 1
  • Дата: 01.01.2023

Такой набор данных будет доступен в областях со спобом вывода “Без повторений” или “Перенос строки”.

Соединение строк

В некоторых случаях необходимо выполнить “сворчивание” таблицы в одну строку.

Например. У нас есть запрос Товары

СсылкаНоменклатураКоличество
Мой документ № 1 от 01.01.2023Товар 110
Мой документ № 1 от 01.01.2023Товар 210

Допустим нам необходимо вывести в шапке документа в одну строку всю номенклатуру из табличной части. В таком случае мы можем использовать вид набора “Соединение строк”. В этом случае в набор будет “свернут” по ссылке и преобразован в вертикальную структуру (для документа № 1):

  • Ссылка: Мой документ № 1 от 01.01.2023
  • Номенклатура: Товар 1; Товар 2
  • Количество: 10; 10

Поле “Количество” мы можем удалить, эти данные нас не интересуют.

Многострочная коллекция

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

Поля набора

При активизации строки набора, в правой части отображается таблица полей набора. Рассмотрим подробнее колонки таблицы:

КолонкаОписание
Вид связи поля с данными макета
Признак простого типа поля, рекомендуется к использованию в печатной форме
Имя поляИмя поля для идентификации пользователем
Тип поляТип поля, определяет источник получения данных для поля
Тип данныхПредставление типа данных значения поля
Признак возможного наличия доп. реквизитов или свойств (подсистема “Свойства” БСП 1С)
Признак возможного наличия контактной информации (подсистема “Контактная информация” БСП 1С)

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

КомандаОписание
Добавить в набор поле с типом “Поле представления”
Добавить в набор поле с типом “Поле нумератора”
Добавить в набор поле с типом “Вычисляемое поле”
Добавить в набор поле с типом “Поле алгоритма”
Добавить в набор поле с типом “Поле свойства”
Добавить в набор поле с типом “Поле конт. инф.”
Обновить - Из запросаОбновить поля набора из существующего запроса
Обновить - Из набораОбновить поля набора из существующего набора
Обновить - Наличие связейОбновить пиктограмму наличия связей полей наборов в макете
Обновить - Наличие свойств и конт. инф.Обновить признак наличия доп. реквизитов (свойств) и контактной информации полей набора (или всех наборов)
Вывести в поле сообщения подробную информацию о связи поля с другими данными макета

Типы полей набора

Поле источника

По умолчанию, наборы созданные на основании запроса автоматически обновляются полями из запроса. Для таких полей устанавливается тип “Поле источника”. Изменить что-либо для данного поля невозможно, поскольку оно унаследовано из запроса.

Поле алгоритма

Если набор создан на основе произвольного алгоритма или имеет алгоритм обработки доступно создание полей с типом “Поле алгоритма”. Для данного поля разработчик должен указать имя и тип данных поля.

Поле представления

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


Конструктор представления

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

При этом, если значение поля в момент формирования печатной формы будет пустым, префикс не будет выведен. В приведенном примере, если КПП не указан, то префикс “, КПП “ не будет добавлен с результирующую строку.

Поле нумератора

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

ВидНоменклатурыНоменклатураКоличество
1ЧайникиTefal1
2ЧайникиBrown1
3ЧайникиSiemens1
4КофеваркиTefal1
5КофеваркиSiemens1

Нам необходимо добавить колонку с номером внутри вида. Добавим поле нумератора “НомерПоВиду” с настройкой


Конструктор нумератора

В результате таблица будет иметь вид

НомерПоВидуВидНоменклатурыНоменклатураКоличество
11ЧайникиTefal1
22ЧайникиBrown1
33ЧайникиSiemens1
41КофеваркиTefal1
52КофеваркиSiemens1

Вычисляемое поле

Поле с произвольным алгоритмом в виде программного кода.

Поле свойства

При наличии подсистемы “Свойства” (БСП 1С) можно добавить поле из данных реквизитов или свойств по значению определенного поля. Например: у справочника “Контрагенты” есть доп. реквизит “Это подрядчик”. Данное поле мы можем добавить путем доработки запроса. Но для этого надо знать как хранятся данные в подсистеме, а также учитывать некоторые нюансы. При этом конструктор позволяет просто встать на поле набора с типом данных “СправочникСсылка.Контрагенты” и добавить поле из свойств. Выбрать требуемый доп. реквизит (или свойство) и программа автоматически добавит поле “Контрагент_ЭтоПодрядчик”. При формировании печатной формы значение будет считано автоматически.

Поле конт. информации

При наличии подсистемы “Контактная информация” (БСП 1С) можно добавить поле с определенным видом контактной информации по значению определенного поля. Например: у справочника “Организации” есть контактная информация с видом “Юридический адрес”. Данное поле мы можем добавить путем доработки запроса. Но для этого надо знать как хранятся данные в подсистеме, а также учитывать что хранение может быть с историей. При этом конструктор позволяет просто встать на поле набора данных с типом “СправочникСсылка.Организации” и добавить поле с видом конт. информации “Юридический адрес”. Программа автоматически добавить новое поле “Организация_ЮридическийАдрес”. При формировании печатной формы значение будет считано автоматически.

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

Очередность подготовки полей

  • поле доп. реквизита (1я очередь)
  • поле конт. информации (2я очередь)
  • вычисляемое поле (3я очередь)
  • поле нумератора (4я очередь)
  • поле конструктора (5я очередь)

Связь полей

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

  • поле “Контрагент” является владельцем для поля “Контрагент_ЭтоПодрядчик”*
  • поле “ВидНоменклатуры” используется в поле нумератора “НомерПоВиду”

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

Программа отличает следующие статусы связи полей

ПиктограммаОписание
Статус связи неизвестен. Устанавливается для добавленных полей до первой записи или изменения данных других закладок макета
Поле связано с источником, НЕ используется в макете
Поле связано с источником и используется в макете
Поле НЕ связано с источником, используется в макете
Поле НЕ связано с источником, НЕ используется в макете. Как правило такие поля автоматически удаляются из наборов