Заметки по ОФ
Формы 1С81: Элементы управления
Табличное поле
Подсветка текущей строки табличного поля
Подсвечивать текущую строку можно в событии вывода текущей строки. Когда текущая строка меняется, событие вывода строки не вызывается. Единственный метод сменить оформление строки – вызывать событие обновление формы. Немного накладно по скорости, но работает. В примере подсвечиваются три колонки текущей строки серым цветом.
Процедура СправочникСписокПриВыводеСтроки (Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки = Неопределено ИЛИ ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ДанныеСтроки.Ссылка Тогда
ЦветФона = WebЦвета.СеребристоСерый;
ОформлениеСтроки.Ячейки.Наименование.ЦветФона = ЦветФона;
ОформлениеСтроки.Ячейки.Код.ЦветФона = ЦветФона;
ОформлениеСтроки.Ячейки.Картинка.ЦветФона = ЦветФона;
КонецЕсли;
КонецПроцедуры
Процедура СправочникСписокПриАктивизацииСтроки (Элемент)
Обновить ();
КонецПроцедуры
Иерархический просмотр списков в табличном поле
Если в списке отображается дерево справочника, то управлять иерархическим просмотром нужно с использованием свойств «Дерево» и «Иерархический просмотр».
Допустим, у нас есть кнопка «Дерево» в панели «Командная панель».
Тогда код будет выглядеть следующим образом:
Процедура КоманднаяПанельДерево(Кнопка)
Если ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр Тогда
ЭлементыФормы.ТаблицаНоменклатуры.Дерево = ложь;
Иначе
ЭлементыФормы.ТаблицаНоменклатуры.Дерево = истина;
КонецЕсли;
ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр = НЕ ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр;
КонецПроцедуры
Процедура ОбновлениеОтображения()
ЭлементыФормы.КоманднаяПанель.Кнопки.Дерево.Пометка = ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр;
КонецПроцедуры
Событие ПриИзменении возникает после того, как данные в поле были изменены.
Схематично форму в оперативной памяти можно представить следующим образом:
На данной схеме слева пунктиром выделена форма. 3 плоскости соответствуют закладкам редактора: Диалог, Модуль, Реквизиты. Последняя закладка стрелками вынесена вперед, т.к. она имеет ключевое значение. Эта закладка содержит основной реквизит формы СправочникОбъект, который указывает на объект, предназначенный для работы с таблицами информационной базы. Справа пунктиром обведен СправочникОбъект, который считывает из базы элемент справочника целиком и предоставляет доступ к редактированию загруженных данных. Поля на форме через свойство Данные привязаны к источникам данных, которыми являются поля основного реквизита формы.
При открытии формы элемента справочника в оперативной памяти создается СправочникОбъект, который считывает из базы весь элемент справочника со всеми табличными частями. Далее создается форма, поля которой подключены к полям объекта и позволяют пользователю изменять данные. При нажатии на кнопку Записать вызывается метод объекта СправочникОбъект.Записать() и данные сохраняются в таблицы информационной базы.
В общем случае схема обычной формы в оперативной памяти имеет следующий вид:
На этой схеме дополнительно отображено, что поля на форме могут быть подключены и к реквизитам основного реквизита формы, и к переменным или таблицам значений в памяти. Кроме того, совсем необязательно, чтобы все реквизиты и табличные части основного реквизита формы были связаны с полями на форме.
В процессе написания кода в модуле формы можно обращаться к объекту формы. Для этого существует системная переменная ЭтаФорма, на схеме форма выделена пунктиром слева. Через точку от нее можно обращаться к методам и свойствам формы, реквизитам формы, к методам и свойствам подчиненных объектов и т.д. Одним из важнейших свойств формы является реквизит СправочникОбъект, который предоставляет доступ к загруженным данным. На схеме СправочникОбъект выделен пунктиром справа.
В процессе написания программного кода для обработки данных формы следует обращаться не к полям на форме, а к их источникам данных.
Платформа при написании кода в модуле формы позволяет использовать сокращенную запись:
- При обращении к методам и свойствам формы ЭтаФорма можно не писать
- При обращении к методам и свойствам основного реквизита формы СправочникОбъект, его также можно не писать.
Так, программный код может быть записан короче:
Процедура НаименованиеПриИзменении(Элемент)
Наименование = СокрЛП(Наименование);
КонецПроцедуры
Для того чтобы обратиться к элементам управления формы, у объекта ЭтаФорма имеется соответствующее свойство ЭлементыФормы, которое предоставляет доступ к коллекции элементов управления формы.
Основные причины обращения к элементам управления при написании программного кода:
- Изменение настроек элементов управления. Например: Видимость, Доступность и прочие
- Получение данных элементов управления, у которых отсутствуют источники данных. Например, ПолеТабличногоДокумента и ПолеТекстовогоДокумента не имеют свойства Данные, и для получения данных необходимо обращаться к полям напрямую.
- Определение текущей строки табличного поля.
При этом в процессе работы с данными следует придерживаться правила, что если у поля имеется источник данных, то для получения данных необходимо обращаться именно к нему.