1C
June 15, 2021

Заметки по ОФ

Формы 1С81: Элементы управления

Табличное поле

Подсветка текущей строки табличного поля

Подсвечивать текущую строку можно в событии вывода текущей строки. Когда текущая строка меняется, событие вывода строки не вызывается. Единственный метод сменить оформление строки – вызывать событие обновление формы. Немного накладно по скорости, но работает. В примере подсвечиваются три колонки текущей строки серым цветом.

Процедура СправочникСписокПриВыводеСтроки (Элемент, ОформлениеСтроки, ДанныеСтроки)

Если ДанныеСтроки = Неопределено ИЛИ ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ДанныеСтроки.Ссылка Тогда

ЦветФона = WebЦвета.СеребристоСерый;

ОформлениеСтроки.Ячейки.Наименование.ЦветФона = ЦветФона;

ОформлениеСтроки.Ячейки.Код.ЦветФона = ЦветФона;

ОформлениеСтроки.Ячейки.Картинка.ЦветФона = ЦветФона;

КонецЕсли;

КонецПроцедуры

Процедура СправочникСписокПриАктивизацииСтроки (Элемент)

Обновить ();

КонецПроцедуры

Иерархический просмотр списков в табличном поле

Если в списке отображается дерево справочника, то управлять иерархическим просмотром нужно с использованием свойств «Дерево» и «Иерархический просмотр».

Допустим, у нас есть кнопка «Дерево» в панели «Командная панель».

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

Процедура КоманднаяПанельДерево(Кнопка)

Если ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр Тогда

ЭлементыФормы.ТаблицаНоменклатуры.Дерево = ложь;

Иначе

ЭлементыФормы.ТаблицаНоменклатуры.Дерево = истина;

КонецЕсли;

ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр = НЕ ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр;

КонецПроцедуры

Процедура ОбновлениеОтображения()

ЭлементыФормы.КоманднаяПанель.Кнопки.Дерево.Пометка = ЭлементыФормы.ТаблицаНоменклатуры.ИерархическийПросмотр;

КонецПроцедуры

Событие ПриИзменении возникает после того, как данные в поле были изменены.

Схематично форму в оперативной памяти можно представить следующим образом:

На данной схеме слева пунктиром выделена форма. 3 плоскости соответствуют закладкам редактора: Диалог, Модуль, Реквизиты. Последняя закладка стрелками вынесена вперед, т.к. она имеет ключевое значение. Эта закладка содержит основной реквизит формы СправочникОбъект, который указывает на объект, предназначенный для работы с таблицами информационной базы. Справа пунктиром обведен СправочникОбъект, который считывает из базы элемент справочника целиком и предоставляет доступ к редактированию загруженных данных. Поля на форме через свойство Данные привязаны к источникам данных, которыми являются поля основного реквизита формы.

При открытии формы элемента справочника в оперативной памяти создается СправочникОбъект, который считывает из базы весь элемент справочника со всеми табличными частями. Далее создается форма, поля которой подключены к полям объекта и позволяют пользователю изменять данные. При нажатии на кнопку Записать вызывается метод объекта СправочникОбъект.Записать() и данные сохраняются в таблицы информационной базы.

В общем случае схема обычной формы в оперативной памяти имеет следующий вид:

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

В процессе написания кода в модуле формы можно обращаться к объекту формы. Для этого существует системная переменная ЭтаФорма, на схеме форма выделена пунктиром слева. Через точку от нее можно обращаться к методам и свойствам формы, реквизитам формы, к методам и свойствам подчиненных объектов и т.д. Одним из важнейших свойств формы является реквизит СправочникОбъект, который предоставляет доступ к загруженным данным. На схеме СправочникОбъект выделен пунктиром справа.

В процессе написания программного кода для обработки данных формы следует обращаться не к полям на форме, а к их источникам данных.

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

  • При обращении к методам и свойствам формы ЭтаФорма можно не писать
  • При обращении к методам и свойствам основного реквизита формы СправочникОбъект, его также можно не писать.

Так, программный код может быть записан короче:

Процедура НаименованиеПриИзменении(Элемент)

Наименование = СокрЛП(Наименование);

КонецПроцедуры

Для того чтобы обратиться к элементам управления формы, у объекта ЭтаФорма имеется соответствующее свойство ЭлементыФормы, которое предоставляет доступ к коллекции элементов управления формы.

Основные причины обращения к элементам управления при написании программного кода:

  • Изменение настроек элементов управления. Например: Видимость, Доступность и прочие
  • Получение данных элементов управления, у которых отсутствуют источники данных. Например, ПолеТабличногоДокумента и ПолеТекстовогоДокумента не имеют свойства Данные, и для получения данных необходимо обращаться к полям напрямую.
  • Определение текущей строки табличного поля.

При этом в процессе работы с данными следует придерживаться правила, что если у поля имеется источник данных, то для получения данных необходимо обращаться именно к нему.