§ 6.6. Настройки списка: поля, отбор, порядок

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

1. Четыре настройки

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

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

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

Колонки решают, что показать из строки. Настройки списка решают, какие строки вообще будут и в каком порядке.

2. За списком стоит запрос

Проще всего увидеть настройки, если вспомнить, что за списком стоит запрос: список его выполняет и показывает результат. Вот примерно то, что получается, когда основная таблица — товары, отбор пуст, а порядок задан по наименованию:

ВЫБРАТЬ
    Товары.Код,
    Товары.Наименование,
    Товары.Артикул
ИЗ
    Справочник.Товары КАК Товары
УПОРЯДОЧИТЬ ПО
    Товары.Наименование

▶ Выполнить в песочнице

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

3. Произвольный запрос

Когда стандартного запроса не хватает, у списка есть флажок произвольного запроса: с ним разработчик пишет текст сам.

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

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

4. Поля: откуда их больше, чем реквизитов

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

колонкаоткуда поле
Наименованиереквизит самой записи
Артикулреквизит самой записи
ЕдиницаИзмеренияссылка на другую запись
наименование единицыполе связанной записи через запрос

Отсюда правило чтения: увидели в списке колонку, которой нет среди реквизитов объекта, — ищите её в полях списка, а если и там нет, то в тексте произвольного запроса.

5. Настройки разработчика и настройки пользователя

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

кто настроилгде живётна кого действует
разработчикв форме, в настройках спискана всех
пользовательв его пользовательских настройкахна него одного

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

Поэтому жалоба «у меня в списке нет этого товара» имеет два адреса: сначала смотрят настройки пользователя, потом настройки списка в форме.

6. Что это значит при чтении чужой формы

Три частые находки и куда с ними идти.

что видногде искать причину
список показывает не все записиотбор в настройках списка или у пользователя
колонки, которых нет у объектаполя списка или текст запроса
непривычный порядок строкпорядок в настройках списка

Ни одна из причин не лежит в дереве объекта — все они в форме. Это и отличает разбор списка от разбора карточки: там мы шли от записи, здесь идём от запроса.

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

Настроим свой список и сравним с тем, что может сделать пользователь.

  1. Откройте форму списка «Товаров» и найдите в свойствах реквизита «Список» настройки. Посмотрите, что задано сейчас.

  2. Задайте порядок по наименованию. Обновите конфигурацию и откройте список: строки идут по алфавиту.

Здесь будет снимок экрананастройки динамического списка с заданным порядком по наименованию
  1. Поставьте отбор: показывать только товары, не помеченные на удаление. Проверьте в Предприятии.

  2. В Предприятии добавьте свой отбор по артикулу и убедитесь, что он сужает список ещё сильнее. Снимите его.

  3. Уберите отбор и порядок в Конфигураторе, оставив колонку «Артикул»: база серии должна остаться такой, какой мы её собрали.

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

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


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

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

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

Упражнения

По образцу. Задайте форме списка «Контрагентов» порядок по наименованию и проверьте в Предприятии.

Своё: сформулируйте отбор. Как бы вы настроили список товаров, чтобы кладовщик видел только товары одной группы? Где это задать — в форме или у пользователя, и почему.

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

Обратный ход. В списке товаров видна колонка «Единица» с наименованием единицы, хотя у товара хранится ссылка. Как это сделано?

На чтение. В чужой форме список показывает документы только за последний месяц, а в свойствах списка отбор пуст. Где искать причину?

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