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