§ 7.1. Команда: действие, которое форма предлагает сделать

Откройте карточку товара и прочитайте, что написано на кнопках сверху: «Записать и закрыть», «Записать», «Ещё». Ни одной из них мы не задавали — форма собрана из полей и групп, про кнопки речи не было. И всё-таки они есть, и каждая что-то делает. Всё, что форма умеет делать, описано у неё отдельно от того, что она показывает, — списком команд.

1. Два списка у одной формы

У формы две стороны, и в редакторе у каждой свой список.

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

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

Реквизиты и элементы говорят, о чём форма. Команды говорят, что в ней можно сделать.

2. Команда — описание действия, а не само действие

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

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

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

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

3. Команда и кнопка — разные вещи

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

команды формы
├── Записать
└── ОбновитьЦены

структура элементов
├── КоманднаяПанель
│   ├── кнопка → Записать
│   └── кнопка → ОбновитьЦены
└── поля
командакнопка
что этоописанное действиеэлемент формы
где живётв списке команд формыв структуре элементов
сколькооднасколько угодно на одну команду
видна линетда

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

Команда — что можно сделать. Кнопка — где это предложено. Кнопка без команды ничего не делает, команда без кнопки — действие, о котором человеку не сказали.

4. За командой стоит обработчик

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

что видит пользовательчто за этим
вызвал команду — кнопкой или с клавиатурыплатформа нашла её описание
ждётвыполняется процедура из свойства «действие»
видит результатто, что сделала процедура

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

У стандартных команд платформы такого вопроса не возникает: что делает «Записать», знает сама платформа.

5. Команды, которых никто не задавал

Вернёмся к кнопкам из начала разговора. Мы их не заводили, а они есть — это та же автогенерация, что строила нам формы целиком.

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

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

Но прежде чем заводить свои, стоит научиться читать чужие.

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

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

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

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

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

Посмотрим на обе стороны формы — и убедимся, что кнопки берутся из команд.

  1. Откройте форму элемента «Товаров», которую собирали, и найдите список команд формы. Перепишите, что в нём есть.
Здесь будет снимок экранаредактор формы элемента «Товаров» с открытым списком команд
  1. Найдите в структуре элементов командную панель формы — верхний ряд кнопок — и сами кнопки. Для любой кнопки посмотрите, с какой командой она связана.

  2. Откройте в Предприятии карточку любого товара и сверьте: у каждой кнопки сверху есть своя строка в списке команд.

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

  4. Верните заголовок как был.

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

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


Команд в форме обычно несколько, и появились они по-разному: одни платформа завела сама, другие живут у объекта и достались всем его формам, третьи заведены прямо здесь. Как различить эти три источника и зачем читателю чужой формы это знать?

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

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

Упражнения

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

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

Ловушка: «удалил кнопку — удалил действие». Разработчик убрал кнопку из командной панели и уверен, что команды больше нет. В чём он ошибается и как проверить?

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

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

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