§ 6.1. Таблица: элемент, который показывает строки

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

1. Чем таблица отличается от поля

Документация делит работу между ними прямо: поле показывает реквизиты нетабличных типов, таблица — табличных.

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

Разница не во внешнем виде, а в том, что стоит за элементом. За полем — значение, за таблицей — набор строк, и у каждой строки свои значения.

Поле показывает значение, таблица — строки. У каждой строки свои значения, и показывают их колонки.

2. Откуда таблица берёт строки

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

путь к даннымчто за нимоткуда строки
Объект.Товарытабличная часть документаиз записи в базе
ОстаткиПоСкладамтаблица значений — реквизит формыих кладёт обработчик
Списокдинамический списокзапрос к базе

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

3. Колонки — это поля внутри таблицы

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

Товары              ← таблица
│  путь: Объект.Товары
├── Товар           ← поле-колонка
├── Количество      ← поле-колонка
├── Цена            ← поле-колонка
└── Сумма           ← поле-колонка

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

4. Текущая строка

Строк в таблице много, а работает пользователь в каждый миг с одной — той, где стоит курсор. Её называют текущей строкой.

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

Для чтения формы понятие это важнее, чем кажется. Когда что-то в форме «само меняется при переходе по строкам», за этим почти всегда стоит текущая строка — и, как правило, обработчик, который отзывается на её смену. Сам обработчик за границей книги, но причину видно без него: значение под таблицей зависит от того, на какой строке курсор.

5. Что таблица разрешает

У таблицы есть свойства, которые решают, что пользователь может сделать со строками.

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

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

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

6. Своя командная панель

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

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

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

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

Посмотрим на две таблицы, которые уже есть в наших формах.

  1. Откройте форму поступления, которую собрали на закладках, и найдите таблицу товаров в структуре элементов. Посмотрите её путь к данным.

  2. Раскройте таблицу: внутри — колонки. Выделите колонку «Количество» и убедитесь, что это поле со своим видом и путём.

Здесь будет снимок экранаструктура элементов формы поступления с раскрытой таблицей товаров и выделенной колонкой
  1. Найдите у таблицы командную панель и свойства изменения состава и порядка строк.

  2. Откройте форму элемента «Товаров» и найдите таблицу остатков по складам. Сравните путь: из одной части, без «Объект.» — данные формы.

  3. Откройте поступление № 12 в Предприятии, встаньте на вторую строку и нажмите удаление строки — не записывая, закройте документ без сохранения. Удалилась именно текущая строка.

Пятый шаг — напоминание о прошлой главе про данные: правка строк, как и правка полей, живёт в копии, пока документ не записан.

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

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


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

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

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

Упражнения

По образцу. Найдите в форме поступления таблицу товаров и выпишите её путь и пути всех колонок.

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

Ловушка: «удалил строку — значит, удалил товар». Кладовщик боится удалять строку в поступлении: «вдруг товар пропадёт из справочника». Что вы ему объясните?

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

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

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