§ 6.5. Форма списка: где живёт динамический список

Создайте справочнику «Товары» форму списка и посмотрите на её реквизиты. Основной там один — «Список», выделенный полужирным, и тип у него динамический список; другие реквизиты форме тоже можно завести, но конструктор их не создаёт. Ответ рядом: в своей форме список живёт в основном реквизите — там же, где в карточке живёт «Объект». Всё остальное в форме списка построено вокруг него.

1. Основной реквизит формы списка

Разница между двумя формами одного справочника видна в одной строке.

форма элементаформа списка
основной реквизит«Объект»«Список»
типобъект справочникадинамический список
о чём формаоб одной записио множестве записей
что записываетэту записьничего

Это то самое различие, которое мы вывели ещё в разговоре об основном реквизите: тип основного реквизита говорит, о чём форма. Здесь оно перестаёт быть теоретическим — вот две формы, и разница между ними ровно в этой строке.

В карточке основной реквизит — сама запись. В форме списка — правило, по которому записи достают из базы.

2. Что собрал конструктор

Кроме реквизита конструктор кладёт в форму и остальное — то, из чего список состоит.

что появилосьзачем
реквизит «Список»правило, по которому берутся строки
таблица с путём «Список»показывает строки на экране
колонки «Код», «Наименование»показывают поля запроса
командная панель таблицысоздать, скопировать, пометить на удаление, найти

Колонок в списке меньше, чем реквизитов у товара: артикула и единицы среди них нет. Конструктор кладёт колонки по тем полям, что описывают запись коротко, — для справочника это код и наименование. Нужные колонки добавляют сами; как именно, разберём в практике.

3. Кнопки списка действуют на записи

В форме элемента кнопки записывают и проводят. В форме списка записывать нечего, поэтому и кнопки другие — они работают с записями базы.

кнопкачто делает
создатьоткрывает форму элемента для новой записи
скопироватьсоздаёт новую запись по образцу текущей
пометить на удалениеставит пометку у текущей записи
найтиищет по строкам списка

Заметьте: ни одна из них не меняет сам список — они меняют записи, а список потом показывает новое. Это прямое следствие того, что строки ему не принадлежат.

4. Иерархия: список с вложенностью

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

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

В дереве, впрочем, формы может и не быть вовсе — и список всё равно откроется.

5. Своя форма списка или автоформа

Форма списка живёт по тем же правилам, что и все остальные: пока своей нет, платформа строит её сама.

в дереве объектачто откроется
ветка «Формы» пустаавтоформа списка
форма есть, назначена основнойона
форма есть, но не назначена основнойпо двойному щелчку — автоформа; саму форму можно открыть командой

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

6. Что читать в чужой форме списка

Разбор такой формы короче, чем карточки, и начинается с того же вопроса.

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

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

7. В Конфигураторе и в Предприятии

Соберём свою форму списка и добавим в неё колонку.

  1. Откройте справочник «Товары» и создайте конструктором форму списка. Назначьте её основной.

  2. Посмотрите реквизиты: строка «Список», полужирным, тип — динамический список. Разверните её: внутри поля запроса.

Здесь будет снимок экранареквизиты формы списка «Товаров» с раскрытым основным реквизитом «Список»
  1. Найдите в элементах таблицу и её колонки. Посмотрите путь таблицы и путь любой колонки.

  2. Добавьте колонку «Артикул»: разверните реквизит «Список», найдите там поле «Артикул» и перетащите его в таблицу.

  3. Обновите конфигурацию базы данных и откройте список товаров: колонка с артикулами на месте.

  4. Оставьте форму и колонку: дальше будем настраивать сам список.

Главное в одном абзаце

В своей форме списка динамический список живёт в основном реквизите — там же, где в карточке живёт «Объект», только тип у него другой, и потому форма говорит не об одной записи, а о множестве. Конструктор кладёт в форму сам список, таблицу с путём к нему, колонки по полям запроса и командную панель; колонок меньше, чем реквизитов у объекта, и нужные добавляют сами. Кнопки формы списка не записывают её, а работают с записями: создать, скопировать, пометить на удаление, найти, — список потом показывает новое. Иерархический справочник список показывает с вложенностью, и у групп своя форма. Назначают форму списка там же, где форму элемента, — в основных формах объекта, а пока своей нет, работает автоформа. В чужой форме списка читают тип основного реквизита, пути таблицы и колонок, командную панель и настройки списка — в них чаще всего и прячется то, что список показывает не всё.


Список показывает не всё, что есть в базе, и не только то, что хранится в записи: колонок бывает больше, строки отобраны, порядок задан. Где всё это настраивается?

Контрольные вопросы

  1. Где в своей форме списка живёт динамический список?
  2. Чем основной реквизит формы списка отличается от основного реквизита формы элемента?
  3. Что кладёт в форму конструктор формы списка?
  4. Почему колонок в списке меньше, чем реквизитов у объекта?
  5. Что делают кнопки формы списка и почему среди них нет записи?
  6. Как список показывает иерархический справочник?
  7. Где назначают форму списка основной?

Упражнения

По образцу. Создайте форму списка справочнику «Контрагенты», назначьте основной и добавьте колонку «ИНН».

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

Ловушка: «форму сделал, а список прежний». Разработчик собрал форму списка, добавил колонку, а в Предприятии колонки нет. Что он забыл?

Обратный ход. В чужой форме списка у основного реквизита тип «динамический список», а кнопки «Создать» нет — хотя у остальных форм она есть. Какие объяснения возможны?

На чтение. В форме списка две таблицы: у одной путь «Список», у другой — «ОтобранныеСтроки», без «Список.». Что за вторая таблица и где живут её строки?

Ответы — в конце части.