ТекущиеДанные — свойство таблицы формы, предоставляющее доступ к данным текущей строки. Оно может быть представлено тремя типами данных (в зависимости от источника таблицы формы): ДанныеФормыСтруктура, ДанныеФормыЭлементКоллекции, ДанныеФормыЭлементДерева. По сути, в каждом из этих случаев, текущие данные 1с представляют из себя структуру текущей строки таблицы формы.
Вся информация, представленная в статье, относится только к управляемому приложению.
Так как свойство относится к элементу формы (таблице), данные получаются именно из него, а не из источника. Из этого следует несколько особенностей свойства ТекущиеДанные:
- Доступно только на клиенте. Его нельзя передавать и использовать на сервере. Поэтому правильно будет получить значения нужных полей в клиентской процедуре и передать их в серверную, при необходимости.
&НаКлиенте Процедура ТаблицаНоменклатурыНоменклатураПриИзменении(Элемент) ТекущиеДанные = Элементы.ТаблицаНоменклатуры.ТекущиеДанные; НоменклатураПриИзмененииНаСервере(ТекущиеДанные.Номенклатура); КонецПроцедуры &НаСервере Процедура НоменклатураПриИзмененииНаСервере(Номенклатура) //Серверная обработка изменения строки таблицы КонецПроцедуры
- Содержит данные реквизитов добавленных на форму, а также данные реквизитов с установленным флагом Использовать всегда. Остальные реквизиты отсутствуют в коллекции.
Как видно на картинке, в текущих данных представлены реквизиты Номенклатура и Сумма, добавленные в таблицу и реквизит Количество с установленным флагом Использовать всегда. - В случае, если таблица формы пустая или у нее нет активизированной строки, свойство ТекущиеДанные будет содержать значение Неопределено. Поэтому, перед использованием свойства, имеет смысл делать проверку. Но только в тех случаях, когда таблица действительно может быть пустой или не активизированной. Например событие ПриАктивизацииСтроки вызывается и для пустой таблицы. А вот событие ПриИзменении колонки таблицы, может вызываться только при наличии активизированной строки. Поэтому в проверке не будет смысла.
&НаКлиенте Процедура ТаблицаНоменклатурыПриАктивизацииСтроки(Элемент) Если Элемент.ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; Сообщить(Элемент.ТекущиеДанные.Номенклатура); КонецПроцедуры
- При помощи свойства ТекущиеДанные можно не только читать, но и изменять информацию. Исключение — таблица формы, источником которой является динамический список. В этом случае изменение текущих данных, не приведет к изменению строки таблицы.
&НаКлиенте Процедура ТаблицаНоменклатурыКоличествоПриИзменении(Элемент) ТекущиеДанные = Элементы.ТаблицаНоменклатуры.ТекущиеДанные; ТекущиеДанные.Сумма = ТекущиеДанные.Количество * ТекущиеДанные.Цена; КонецПроцедуры
Варианты получения свойства Текущие данные 1С
В общем случае к свойству ТекущиеДанные можно обратиться через элемент формы к которому оно относится.
Элементы.<ИмяТаблицыФормы>.ТекущиеДанные
Например:
ТекущиеДанные = Элементы.ТаблицаНоменклатуры.ТекущиеДанные;
Но при обращении к текущим данным из обработчика события таблицы формы, можно воспользоваться параметром Элемент. В нем уже содержится таблица формы. В этом случае обращение к текущим данным будет выглядеть следующим образом:
Элемент.ТекущиеДанные
Например:
&НаКлиенте
Процедура ТаблицаНоменклатурыПриИзменении(Элемент)
Если Элемент.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
//Код обрабатывающий событие
КонецПроцедуры
Такое обращение к текущим данным не получится реализовать в обработчиках событий колонок таблицы формы. Так как в параметр Элемент там передается ПолеФормы, относящееся к колонке.
Спасибо за статью! Благодаря Вам пришло большее осознавание по обращению к текущим данным таблицы формы, а что самое главное, теперь понятно как применяется «ИспользоватьВсегда» для реквизитов формы!