Перейти к основному содержимому

Элемент проекта вида «Структура» для описания данных в интерфейсе

Чтобы описать данные, которые нужно показывать и редактировать в интерфейсе, можно использовать элементы проекта вида Структура (подробнее).

Структура в проекте это описание типа, имеющего фиксированный набор полей.

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

Есть форма, которая показывает список сотрудников: ФИО, возраст и город. Эта информация о сотрудниках не хранится в базе данных приложения — она получается или вычисляется некоторым образом.

примечание

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

Форма содержит произвольный список, который состоит из элементов, описанных в проекте как МояСтрокаСписка. То есть МояСтрокаСписка — это три поля ввода, расположенные горизонтально.

Чтобы описать данные, которые содержатся в одной строке списка, в проект добавлена структура ДанныеСотрудника. То есть «Булатов И. В.», «32» и «Мурманск» — это данные одного экземпляра, имеющего тип ДанныеСотрудника. Произвольный список, находящийся в форме, содержит массив таких экземпляров в своем свойстве Источник.

Форма и список

Форма выглядит следующим образом:

ВидЭлемента: КомпонентИнтерфейса
ОбластьВидимости: ВПодсистеме
Ид: 490ac0b2-b4e9-42e7-99a7-07b318bbe261
Имя: МояФорма
Наследует:
Тип: Стд::Интерфейс::Форма
ВключатьВАвтоИнтерфейс: Истина
Содержимое:
Тип: ФиксированнаяГруппа
Содержимое:
-
Тип: ПроизвольныйСписок<ИсточникДанныхМассив<ДанныеСотрудника>
Имя: СписокСотрудников
ТипКомпонентаСтроки: МояСтрокаСписка
КонтейнерСтрок:
Тип: ФиксированнаяГруппа
-
Тип: Кнопка
Заголовок: Записать

Здесь два важных момента:

  • Компонент элемента списка — это компонент интерфейса с именем МояСтрокаСписка. Он связывает данные и элементы интерфейса, в которых эти данные показываются и редактируются;
  • Тип источника данных списка — ИсточникДанныхМассив. Источник будет заполнен данными с помощью встроенного языка.

Структура «ДанныеСотрудника»

Структура ДанныеСотрудника выглядит следующим образом:

ВидЭлемента: Структура
ОбластьВидимости: ВПодсистеме
Ид: 3cc44843-e496-4d2e-8360-50d35ec258a8
Имя: ДанныеСотрудника
Поля:
-
Тип: Строка
Имя: ФИО
-
Тип: Число
Имя: Возраст
-
Тип: Строка
Имя: Город

Она описывает три поля, в которых будут находиться данные для одной строки списка.

Заполнение списка данными

Самый простой способ заполнить список данными — в обработчике события формы ПослеСоздания:

@Обработчик
метод ПослеСоздания()

знч Сотрудник1 = новый ДанныеСотрудника()
Сотрудник1.ФИО = "Булатов И.В."
Сотрудник1.Возраст = 32
Сотрудник1.Город = "Мурманск"
Компоненты.СписокСотрудников.Источник.Данные.Добавить(Сотрудник1)

знч Сотрудник2 = новый ДанныеСотрудника()
Сотрудник2.ФИО = "Громова Н.П."
Сотрудник2.Возраст = 45
Сотрудник2.Город = "Вологда"
Компоненты.СписокСотрудников.Источник.Данные.Добавить(Сотрудник2)

знч Сотрудник3 = новый ДанныеСотрудника()
Сотрудник3.ФИО = "Орлова Е.Н."
Сотрудник3.Возраст = 23
Сотрудник3.Город = "Иваново"
Компоненты.СписокСотрудников.Источник.Данные.Добавить(Сотрудник3)
;

Сначала создается экземпляр типа ДанныеСотрудника (это тип структуры, описанной в проекте). Заполняются его поля: ФИО, Возраст и Город. После этого экземпляр добавляется в массив источника данных списка. И так для каждой строки списка.

В результате параметр ДанныеСтроки, который вы можете использовать для указания свойств компонентов (подробнее), будет иметь тип структуры, то есть ДанныеСотрудника. Это понадобится для связывания данных и интерфейса, которое описано далее.

Связь данных с интерфейсом

Произвольный элемент списка МояСтрокаСписка выглядит следующим образом:

ВидЭлемента: КомпонентИнтерфейса
Ид: d78f5166-ddff-41de-9c84-1f28712dae5c
Имя: МояСтрокаСписка
ОбластьВидимости: ВПодсистеме
Наследует:
Тип: ПроизвольнаяСтрокаСписка<ДанныеСотрудника>
Содержимое:
Тип: ФиксированнаяГруппа
Ориентация: Горизонтальная
Содержимое:
-
Тип: ПолеВвода<Строка>
Имя: ФИО
Значение: =ДанныеСтроки.ФИО
-
Тип: ПолеВвода<Число>
Имя: Возраст
Значение: =ДанныеСтроки.Возраст
-
Тип: ПолеВвода<Строка>
Имя: Город
Значение: =ДанныеСтроки.Город

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

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

метод ЗаписатьРезультат()
для СотрудникОбъект из Компоненты.СписокСотрудников.Источник.Данные
знч Сотрудник = СотрудникОбъект как ДанныеСотрудника
пер ФИОСотрудника = Сотрудник.ФИО
пер ВозрастСотрудника = Сотрудник.Возраст
пер ГородСотрудника = Сотрудник.Город
;
;

См. также