Найти в Дзене

7. Изменение формы объекта

В форме учебного дня мало информации: Добавим номер кабинета, в котором проходит урок, и учителя, который этот урок ведёт. Для этого вернемся в конфигуратор и добавим форму документа для документа УчебныйДень. В дереве конфигурации у вас появится ещё одна форма: А в рабочей области откроется конструктор этой формы: Платформа создала такую же автоматически генерируемую форму, которую будем изменять. Ранее уже для одного из элементов изменяли свойство Формат, а сейчас понадобятся реквизиты формы. Реквизитов у формы может быть много. Среди них всегда есть один самый важный, называемый основной реквизит. Он определяет, какие действия умеет выполнять форма и как она выглядит. Если основной реквизит — это список, то форма будет уметь создавать новые элементы в списке, находить имеющиеся элементы и так далее. Если основной реквизит — это объект, то форма будет уметь записывать данные, если это документ — то ещё и проводить их (т.е.изменять содержание регистров). Если основной реквизит являет

В форме учебного дня мало информации:

Добавим номер кабинета, в котором проходит урок, и учителя, который этот урок ведёт. Для этого вернемся в конфигуратор и добавим форму документа для документа УчебныйДень. В дереве конфигурации у вас появится ещё одна форма:

-2

А в рабочей области откроется конструктор этой формы:

-3

Платформа создала такую же автоматически генерируемую форму, которую будем изменять.

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

Основной реквизит — список
Основной реквизит — список

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

Основной реквизит — объект
Основной реквизит — объект

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

Сейчас есть единственный основной реквизит, называющийся Объект, раскройте его содержимое, нажав мышью на крестик

Состав основного реквизита
Состав основного реквизита

В этом реквизите те же самые стандартные реквизиты, что в объекте конфигурации УчебныйДень: Ссылка, Дата, Проведен и т. д. Они не видны в дереве объектов конфигурации. Далее идёт табличная часть Уроки, которую Вы добавляли, раскройте её

Реквизиты табличной части в форме
Реквизиты табличной части в форме

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

Состав реквизита «Предмет»
Состав реквизита «Предмет»

В этом реквизите хранится ссылка на некоторый элемент справочника Предметы. Значит, в том месте, где есть эта ссылка, можно узнать не только наименование этого элемента (название предмета), но и все остальные его данные. Например, учителя, который преподаёт, и кабинет, в котором проходят занятия. Таким образом нашли то, что нужно показать.

Теперь вопрос: как это показать? Как сделать, чтобы эти данные появились в форме? Достаточно только потянуть реквизит мышью и перетащить его в то место дерева элементов, где он должен находиться. Всё остальное платформа сделает за вас сама.

Перетащите мышью реквизит Кабинет из правой верхней части формы и поместите его после элемента УрокиПредмет в левой верхней части формы документа.

Перетаскивание реквизита «Кабинет»
Перетаскивание реквизита «Кабинет»

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

Если теперь посмотреть на форму, то увидим, что в таблице после колонки Предмет появилась ещё одна колонка:

Новый элемент «УрокиПредметКабинет»
Новый элемент «УрокиПредметКабинет»
Новая колонка в табличной части документа
Новая колонка в табличной части документа

Точно таким же образом перетащите в дерево реквизит Учитель. Поместите его после элемента УрокиПредметКабинет. Если вы случайно промахнулись, можете использовать голубые стрелки вверх и вниз, чтобы перемещать элементы в дереве.

Запустите конфигурацию в режиме отладки и посмотрите, что получилось:

Форма "Учебный день"
Форма "Учебный день"

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

Закройте 1С:Предприятие и вернитесь в конфигуратор.

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

Вызываем контекстное меню у элемента Уроки (это таблица), и выполняем команду Добавить

Добавление элемента в форму
Добавление элемента в форму

В открывшемся окне выбираем элемент Группа — Группа колонок и нажимаем ОК.

Добавление группы
Добавление группы

В дереве элементов появится группа:

-15

В палитре свойств назовем её ГруппаКабинетУчитель. А затем с помощью стрелок вверх или вниз поставим её после реквизита Предмет:

Месторасположение ГруппаКабинетУчитель
Месторасположение ГруппаКабинетУчитель

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

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

Поиск в палитре свойств
Поиск в палитре свойств

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

Итак, в добавленной группе элементы расположены вертикально. Перенесем в неё несколько элементов. Выделяем в дереве (удерживая клавишу Ctrl) элементы УрокиПредметКабинет и УрокиПредметУчитель:

Выделение нескольких элементов
Выделение нескольких элементов

После выделения элементов перетаскиваем их в группу ГруппаКабинетУчитель:

Колонки, размещённые вертикально
Колонки, размещённые вертикально

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

Реквизиты, расположенные вертикально
Реквизиты, расположенные вертикально

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

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

Смена мест элементов «УрокиПредметУчитель» и «УрокиПредметКабинет»
Смена мест элементов «УрокиПредметУчитель» и «УрокиПредметКабинет»

Открываем свойства группы ГруппаКабинетУчитель и задаем для нее группировку — В ячейке:

Группировка «В ячейке»
Группировка «В ячейке»

В нижней части формы это будет выглядеть следующим образом:

Эскиз формы
Эскиз формы

Теперь, чтобы учитель и кабинет не мешали вам видеть названия предметов, изменим их цвет. Выделяем оба этих элемента и находим в палитре свойство ЦветТекста:

-24

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

Таблица уроков
Таблица уроков

Сделаем ещё одно изменение. Чтобы понять, зачем оно нужно, попробуем в ячейку Домашнее задание ввести какой-нибудь длинный текст.

Текст домашнего задания
Текст домашнего задания

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

Редактирование закончено
Редактирование закончено

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

Текст во всплывающей подсказке
Текст во всплывающей подсказке

Закройте 1С:Предприятие, не сохраняйте этот документ. Вернитесь в конфигуратор. Будем обращаться не к форме, а к дереву объектов конфигурации: Документы - документ УчебныйДень - табличная часть "Уроки" - реквизит ДомашнееЗадание. Там можно будет задать свойства отображения данных, которые будут реализовываться в любой форме, где появится реквизит "ДомашнееЗадание".

Итак, выделяем в дереве конфигурации реквизит ДомашнееЗадание и находим в палитре два свойства: Многострочный режим и Расширенное редактирование. Они расположены рядом, и поиском можно не пользоваться. Устанавливаем оба этих флажка:

Установление двух галок реквизиту "ДомашнееЗадание" в палитре свойств
Установление двух галок реквизиту "ДомашнееЗадание" в палитре свойств

Галка Многострочный режим позволяет редактировать текст не в одной строке, а в нескольких.

Галка Расширенное редактирование позволяет переносить текст на новую строку, начинать новые строки, использовать символы табуляции и так далее.

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

В процессе ввода, чтобы перейти на новую строку, нажимаем сочетание клавиш Shift+Enter:

Ввод нескольких строк текста
Ввод нескольких строк текста

Введите длинное домашнее задание, которое показывается не в две строки, в три:

Показ длинного текста в три строки
Показ длинного текста в три строки

А если вы решите его отредактировать, то оно будет показано не в одну строку, как раньше, а в несколько:

Редактируемое длинное домашнее задание
Редактируемое длинное домашнее задание

После того, как реквизит ДомашнееЗадание стал многострочным, автоматически раздвинулись все строки в табличной части документа (и те, где написан текст, и пустые строки тоже):

Увеличенная высота всех строк
Увеличенная высота всех строк

Сделаем, чтобы раздвигалась только та строка, в которой что-то написано. А пустые строки пусть будут тонкими. Чтобы это поправить, возвращаемся в конфигуратор, открываем свойства элемента формы УрокиДомашнееЗадание. С помощью строки поиска находим свойство АвтоВысотаЯчейки и устанавливаем галку:

Изменения свойства высоты строк на элементе "УрокиДомашнееЗадание"
Изменения свойства высоты строк на элементе "УрокиДомашнееЗадание"

Запускаем "1С:Предприятие в режиме отладки" и откройте документ:

-35

Подробнее про сочетания клавиш для работы с полем ввода вы можете прочитать во встроенной справке: Главное меню — Справка — Содержание справки — Сочетания клавиш (Конфигуратор) — Поле ввода:

Сочетания клавиш
Сочетания клавиш