ПолеФормы.Таблица

Свойства · Table

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

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

ПолеФормы.Таблица (FormField.Table)

ПолеФормы (FormField)

Таблица (Table)

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

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

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент.

Использование в версии:

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

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

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

Проверить, что поле действительно размещено в собственной таблице

Конкретный созданный элемент ТоварыКоличество должен быть ребёнком ТаблицаТоваров. Проверка помогает обнаружить ошибочную привязку или размещение поля вне таблицы.

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

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

Подготовка

  1. В учебной базе: Файл → Новый → Внешняя обработка. Создайте управляемую форму и назначьте её основной. Дайте обработке имя УчебнаяТаблица.

  2. Не добавляйте вручную реквизит Товары и одноимённые элементы: код создаст их при открытии. Модуль формы для этой задачи должен быть пустым.

  3. В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Сохраните отдельную учебную EPF и откройте через Файл → Открыть.

  4. Данные Книга/Ручка создаются в памяти формы. Справочники, документы и регистры вашей конфигурации не читаются и не записываются.

  5. Проверяйте в настольном тонком/толстом или веб-клиенте 8.5.1.1343, не в мобильном приложении. Для каждого урока отдельная учебная форма с пустым модулем.

  6. Изменение учебных строк остаётся только в открытой форме. При её новом открытии снова создаются Книга/3 и Ручка/1. Настройки таблицы не являются правами доступа к данным.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Товары", Новый ОписаниеТипов("ТаблицаЗначений")));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Строка"), "Товары", "Код"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Наименование", Новый ОписаниеТипов("Строка"), "Товары", "Название"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)), "Товары", "Количество"));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)));

    СтрокаТовара = Данные.Добавить();
    СтрокаТовара.Код = "A-01";
    СтрокаТовара.Наименование = "Книга";
    СтрокаТовара.Количество = 3;
    СтрокаТовара = Данные.Добавить();
    СтрокаТовара.Код = "B-02";
    СтрокаТовара.Наименование = "Ручка";
    СтрокаТовара.Количество = 1;

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

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

  1. Элемент создан программно с явным родителем ТаблицаТоваров в подготовленном модуле.

  2. Имя относится к UI, ПутьКДанным связывает его с колонкой реквизита.

  3. Родитель проверяет непосредственное размещение; Таблица указывает таблицу, которой принадлежит поле.

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

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

  1. Пять логических проверок Истина.

  2. Ни одна проверка не добавляет товары, не получает ссылку базы и не меняет количество.

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

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

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

  1. Поле вне таблицы не обязано иметь тот же контракт размещения.

  2. Имена UI и реквизитов намеренно различаются. Не находите строки данных через коллекцию элементов формы.

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

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

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

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

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