§ 6.5. Форма списка: где живёт динамический список
Создайте справочнику «Товары» форму списка и посмотрите на её реквизиты. Основной там один — «Список», выделенный полужирным, и тип у него динамический список; другие реквизиты форме тоже можно завести, но конструктор их не создаёт. Ответ рядом: в своей форме список живёт в основном реквизите — там же, где в карточке живёт «Объект». Всё остальное в форме списка построено вокруг него.
1. Основной реквизит формы списка
Разница между двумя формами одного справочника видна в одной строке.
| форма элемента | форма списка | |
|---|---|---|
| основной реквизит | «Объект» | «Список» |
| тип | объект справочника | динамический список |
| о чём форма | об одной записи | о множестве записей |
| что записывает | эту запись | ничего |
Это то самое различие, которое мы вывели ещё в разговоре об основном реквизите: тип основного реквизита говорит, о чём форма. Здесь оно перестаёт быть теоретическим — вот две формы, и разница между ними ровно в этой строке.
В карточке основной реквизит — сама запись. В форме списка — правило, по которому записи достают из базы.
2. Что собрал конструктор
Кроме реквизита конструктор кладёт в форму и остальное — то, из чего список состоит.
| что появилось | зачем |
|---|---|
| реквизит «Список» | правило, по которому берутся строки |
| таблица с путём «Список» | показывает строки на экране |
| колонки «Код», «Наименование» | показывают поля запроса |
| командная панель таблицы | создать, скопировать, пометить на удаление, найти |
Колонок в списке меньше, чем реквизитов у товара: артикула и единицы среди них нет. Конструктор кладёт колонки по тем полям, что описывают запись коротко, — для справочника это код и наименование. Нужные колонки добавляют сами; как именно, разберём в практике.
3. Кнопки списка действуют на записи
В форме элемента кнопки записывают и проводят. В форме списка записывать нечего, поэтому и кнопки другие — они работают с записями базы.
| кнопка | что делает |
|---|---|
| создать | открывает форму элемента для новой записи |
| скопировать | создаёт новую запись по образцу текущей |
| пометить на удаление | ставит пометку у текущей записи |
| найти | ищет по строкам списка |
Заметьте: ни одна из них не меняет сам список — они меняют записи, а список потом показывает новое. Это прямое следствие того, что строки ему не принадлежат.
4. Иерархия: список с вложенностью
У «Товаров» есть группы — справочник иерархический. Динамический список умеет показывать такую структуру не плоским перечнем, а с вложенностью: у таблицы для этого есть отображение — список, дерево или иерархический список.
Показывать иерархию список умеет, но не сам по себе: как она выглядит, решает отображение таблицы. Отсюда и знакомая пара форм: у иерархического справочника кроме формы элемента бывает форма группы — о ней мы говорили в разговоре о видах автоформ. Список показывает и группы, и элементы, а открывает для каждого свою форму.
В дереве, впрочем, формы может и не быть вовсе — и список всё равно откроется.
5. Своя форма списка или автоформа
Форма списка живёт по тем же правилам, что и все остальные: пока своей нет, платформа строит её сама.
| в дереве объекта | что откроется |
|---|---|
| ветка «Формы» пуста | автоформа списка |
| форма есть, назначена основной | она |
| форма есть, но не назначена основной | по двойному щелчку — автоформа; саму форму можно открыть командой |
Проверяется это там же, где мы проверяли назначение формы элемента, — в окне редактирования объекта, в строках основных форм. Правило одно на все виды форм. А вот что именно список покажет — какие поля, какие строки, в каком порядке, — решают его настройки, и это следующий разговор.
6. Что читать в чужой форме списка
Разбор такой формы короче, чем карточки, и начинается с того же вопроса.
| что смотрим | что узнаём |
|---|---|
| тип основного реквизита | форма о множестве записей |
| путь таблицы | имя списка |
| пути колонок | какие поля запроса показывают |
| командная панель | что пользователю разрешено делать с записями |
| есть ли отбор в настройках списка | показывают не всё — разговор впереди |
Последняя строка — самая частая находка в чужих формах списков: список показывает не весь справочник, а его часть. Где это задано, разберём в следующем параграфе.
7. В Конфигураторе и в Предприятии
Соберём свою форму списка и добавим в неё колонку.
-
Откройте справочник «Товары» и создайте конструктором форму списка. Назначьте её основной.
-
Посмотрите реквизиты: строка «Список», полужирным, тип — динамический список. Разверните её: внутри поля запроса.
-
Найдите в элементах таблицу и её колонки. Посмотрите путь таблицы и путь любой колонки.
-
Добавьте колонку «Артикул»: разверните реквизит «Список», найдите там поле «Артикул» и перетащите его в таблицу.
-
Обновите конфигурацию базы данных и откройте список товаров: колонка с артикулами на месте.
-
Оставьте форму и колонку: дальше будем настраивать сам список.
Главное в одном абзаце
В своей форме списка динамический список живёт в основном реквизите — там же, где в карточке живёт «Объект», только тип у него другой, и потому форма говорит не об одной записи, а о множестве. Конструктор кладёт в форму сам список, таблицу с путём к нему, колонки по полям запроса и командную панель; колонок меньше, чем реквизитов у объекта, и нужные добавляют сами. Кнопки формы списка не записывают её, а работают с записями: создать, скопировать, пометить на удаление, найти, — список потом показывает новое. Иерархический справочник список показывает с вложенностью, и у групп своя форма. Назначают форму списка там же, где форму элемента, — в основных формах объекта, а пока своей нет, работает автоформа. В чужой форме списка читают тип основного реквизита, пути таблицы и колонок, командную панель и настройки списка — в них чаще всего и прячется то, что список показывает не всё.
Список показывает не всё, что есть в базе, и не только то, что хранится в записи: колонок бывает больше, строки отобраны, порядок задан. Где всё это настраивается?
Контрольные вопросы
- Где в своей форме списка живёт динамический список?
- Чем основной реквизит формы списка отличается от основного реквизита формы элемента?
- Что кладёт в форму конструктор формы списка?
- Почему колонок в списке меньше, чем реквизитов у объекта?
- Что делают кнопки формы списка и почему среди них нет записи?
- Как список показывает иерархический справочник?
- Где назначают форму списка основной?
Упражнения
По образцу. Создайте форму списка справочнику «Контрагенты», назначьте основной и добавьте колонку «ИНН».
Своё: предскажите состав. Не открывая конструктор, скажите, какие колонки он создаст для справочника «Склады» и почему.
Ловушка: «форму сделал, а список прежний». Разработчик собрал форму списка, добавил колонку, а в Предприятии колонки нет. Что он забыл?
Обратный ход. В чужой форме списка у основного реквизита тип «динамический список», а кнопки «Создать» нет — хотя у остальных форм она есть. Какие объяснения возможны?
На чтение. В форме списка две таблицы: у одной путь «Список», у другой — «ОтобранныеСтроки», без «Список.». Что за вторая таблица и где живут её строки?
Ответы — в конце части.