ТабличноеПоле.ТекущиеДанные

Свойства · CurrentData

Содержит данные текущей строки табличного поля.

Полное описание, параметры и ограничения

ТабличноеПоле.ТекущиеДанные (TableBox.CurrentData)

ТабличноеПоле (TableBox)

ТекущиеДанные (CurrentData)

Доступен, начиная с версии 8.0.

Использование:
Только чтение.
Описание:
Содержит данные текущей строки табличного поля.
Доступность:

Толстый клиент.

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

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Получить оформление собственной строки

ОформлениеСтроки содержит данные выбранной строки и настройки цвета. Автоматическая отметка незаполненного значения не является запретом записи.

Где и как запускать

Модуль новой обычной формы внешней обработки. Только толстый клиент, обычные формы; не серверный модуль и не управляемая форма.

Подготовка

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

  2. В редакторе формы добавьте табличное поле ТаблицаТоваров, свойство Данные свяжите с реквизитом Товары. Добавьте обычную кнопку УчебнаяКоманда, её действие свяжите с процедурой УчебнаяКоманда. ПриОткрытии свяжите с одноимённым событием формы.

  3. Каждый урок — отдельный полный модуль этой учебной формы. Он заново создаёт в памяти Книгу (3) и Ручку (1), а СоздатьКолонки удаляет прежние колонки только своего табличного поля. Не вставляйте код в рабочую форму с настроенными колонками.

  4. Откройте форму, затем нажмите учебную кнопку. Изменения данных и оформления относятся только к реквизиту внешней обработки в памяти. Здесь нет Записать, обращения к рабочим данным или проверки интерфейса реальной УТ 10.3.

Процедура ПриОткрытии()
    Товары = Новый ТаблицаЗначений;
    Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
    Книга = Товары.Добавить();
    Книга.Код = "A-01";
    Книга.Наименование = "Книга";
    Книга.Количество = 3;
    Книга.Выбран = Ложь;
    Ручка = Товары.Добавить();
    Ручка.Код = "B-02";
    Ручка.Наименование = "Ручка";
    Ручка.Количество = 1;
    Ручка.Выбран = Ложь;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
    Таблица.СоздатьКолонки();
    Таблица.АвтоВводНовойСтроки = Ложь;
    Если Товары.Количество() <> 2 Тогда
        ВызватьИсключение "Ожидались два собственных учебных товара";
    КонецЕсли;
    Таблица.ТекущаяСтрока = Товары[0];
    Колонка = Таблица.Колонки.Найти("Количество");
    Если Колонка = Неопределено Тогда
        ВызватьИсключение "В своей таблице не найдена колонка количества";
    КонецЕсли;
    Колонка.АвтоОтметкаНезаполненного = Истина;
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
    Текущая = Таблица.ТекущаяСтрока;
    Если Текущая = Неопределено Тогда
        Сообщить("Выберите собственную книгу или ручку");
        Возврат;
    КонецЕсли;
    Оформление = Таблица.ОформлениеСтроки(Текущая);
    Если Оформление = Неопределено Тогда
        ВызватьИсключение "Не получено оформление собственной строки";
    КонецЕсли;
    Оформление.ЦветТекста = Новый Цвет(24, 40, 60);
    Оформление.ЦветФона = Новый Цвет(235, 244, 255);
    Оформление.Шрифт = Новый Шрифт(Оформление.Шрифт, , 12, Ложь);
    Сообщить(Оформление.ДанныеСтроки = Таблица.ТекущиеДанные);
    Сообщить("Тип коллекции ячеек: " + Строка(ТипЗнч(Оформление.Ячейки)));
    Сообщить(Товары.Количество() = 2 И Товары.Итог("Количество") = 4);
КонецПроцедуры

Разбор по шагам

  1. АвтоОтметкаНезаполненного задаёт автоматическое подчёркивание незаполненного значения, не проверку внешних прав.

  2. Сначала проверяем текущую строку, затем полученный объект оформления.

  3. Оформление.ДанныеСтроки связывает его с данными конкретной строки. Ячейки — отдельная коллекция, не таблица товаров.

  4. Шрифт заменяется новым значением, не изменением его неизменяемых свойств.

  5. Оформление может пересчитываться при перерисовке. Для устойчивого бизнес-оформления нужен отдельный обработчик ПриВыводеСтроки; этот урок проверяет объект оформления текущей строки.

Как проверить результат

  1. Два сравнения Истина и диагностический тип ячеек.

  2. Количество товаров 2 и общий итог 4 не изменились.

Ожидаемый результат

Оформление строки отделено от данных и бизнес-проверок.

На что обратить внимание

  1. Не обещается постоянное сохранение оформления между перерисовками.

  2. АвтоОтметкаНезаполненного не заменяет явную проверку допустимого количества.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

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

ТекущаяСтрока для таблицы значений — объект строки, не номер 0. Находим колонку количества и проверяем текущую книгу.

Где и как запускать

Модуль новой обычной формы внешней обработки. Только толстый клиент, обычные формы; не серверный модуль и не управляемая форма.

Подготовка

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

  2. В редакторе формы добавьте табличное поле ТаблицаТоваров, свойство Данные свяжите с реквизитом Товары. Добавьте обычную кнопку УчебнаяКоманда, её действие свяжите с процедурой УчебнаяКоманда. ПриОткрытии свяжите с одноимённым событием формы.

  3. Каждый урок — отдельный полный модуль этой учебной формы. Он заново создаёт в памяти Книгу (3) и Ручку (1), а СоздатьКолонки удаляет прежние колонки только своего табличного поля. Не вставляйте код в рабочую форму с настроенными колонками.

  4. Откройте форму, затем нажмите учебную кнопку. Изменения данных и оформления относятся только к реквизиту внешней обработки в памяти. Здесь нет Записать, обращения к рабочим данным или проверки интерфейса реальной УТ 10.3.

Процедура ПриОткрытии()
    Товары = Новый ТаблицаЗначений;
    Товары.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Товары.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Товары.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    Товары.Колонки.Добавить("Выбран", Новый ОписаниеТипов("Булево"));
    Книга = Товары.Добавить();
    Книга.Код = "A-01";
    Книга.Наименование = "Книга";
    Книга.Количество = 3;
    Книга.Выбран = Ложь;
    Ручка = Товары.Добавить();
    Ручка.Код = "B-02";
    Ручка.Наименование = "Ручка";
    Ручка.Количество = 1;
    Ручка.Выбран = Ложь;
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
    Таблица.СоздатьКолонки();
    Таблица.АвтоВводНовойСтроки = Ложь;
    Если Товары.Количество() <> 2 Тогда
        ВызватьИсключение "Ожидались два собственных учебных товара";
    КонецЕсли;
    Таблица.ТекущаяСтрока = Товары[0];
    Колонка = Таблица.Колонки.Найти("Количество");
    Если Колонка = Неопределено Тогда
        ВызватьИсключение "В своей таблице не найдена колонка количества";
    КонецЕсли;
    Таблица.ТекущаяКолонка = Колонка;
    Таблица.РежимВыбора = Ложь;
    Таблица.Подсказка = "Собственная учебная книга и ручка";
КонецПроцедуры

Процедура УчебнаяКоманда(Кнопка)
    Таблица = ЭтаФорма.ЭлементыФормы.ТаблицаТоваров;
    Текущая = Таблица.ТекущаяСтрока;
    Если Текущая = Неопределено Тогда
        Сообщить("Сначала выберите собственную строку");
        Возврат;
    КонецЕсли;
    Данные = Таблица.ДанныеСтроки(Текущая);
    Если Данные = Неопределено Тогда
        ВызватьИсключение "Не получены данные выбранной учебной строки";
    КонецЕсли;
    Сообщить(Данные = Таблица.ТекущиеДанные);
    Сообщить(Данные.Наименование + ": " + Строка(Данные.Количество));
    Сообщить(Таблица.ТекущаяКолонка.Имя = "Количество");
    Сообщить(Таблица.ПроверитьСтроку(Текущая));
    Сообщить("Способ выделения строки: " + Строка(Таблица.РежимВыделенияСтроки));
КонецПроцедуры

Разбор по шагам

  1. СоздатьКолонки формирует колонки по четырём полям собственной таблицы значений.

  2. Колонка Количество ищется и проверяется перед назначением ТекущаяКолонка.

  3. ТекущаяСтрока назначается объектом Товары[0]. Это не переносимая модель для динамического списка: там тип идентификатора может быть другим.

  4. ДанныеСтроки и ТекущиеДанные дают данные текущей строки. До доступа к полям оба случая отсутствия обработаны.

  5. ПроверитьСтроку проверяет соответствие отбору табличного поля, не существование SQL-записи. Отбора в собственной форме нет.

Как проверить результат

  1. Сразу после открытия выбрана Книга: выводится количество 3 и три сравнения Истина.

  2. Выберите Ручку: выводится количество 1. Выделение строки диагностируется, не изменяется присваиванием.

Ожидаемый результат

Проверен доступ к собственной текущей строке и колонке.

На что обратить внимание

  1. РежимВыделенияСтроки только для чтения.

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

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.