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

Свойства · Footer

Тип: Булево. Определяет наличие подвала у таблицы. Истина - подвал есть.

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

ТаблицаФормы.Подвал (FormTable.Footer)

ТаблицаФормы (FormTable)

Подвал (Footer)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево.
Определяет наличие подвала у таблицы.
Истина - подвал есть.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Изменение свойства на клиенте требует обращения к серверу.

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

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

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

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

Связать подвал с отдельным реквизитом формы

ПутьКДаннымПодвала указывает на собственный числовой реквизит ИтогКоличества. Значение нужно рассчитывать явно, сама привязка не делает сумму.

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

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

Подготовка

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

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

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

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

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

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


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

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

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

&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)
    ЭтаФорма.ИтогКоличества = ЭтаФорма.Товары.Итог("Количество");
    Сообщить("Реквизит итога формы: " + Строка(ЭтаФорма.ИтогКоличества));
КонецПроцедуры

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

  1. При создании один раз добавляем собственный скаляр ИтогКоличества. Не создавайте его вручную параллельно.

  2. Числовой реквизит заполняем результатом Итог("Количество").

  3. Поле подвала связываем путём без имени колонки: ИтогКоличества — отдельный реквизит формы.

  4. ПриИзменении пересчитывает реквизит, а привязка отображает его значение.

  5. Это альтернатива ручному ТекстПодвала: здесь не назначаем его одновременно с привязкой.

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

  1. На исходных двух товарах реквизит и подвал показывают 4.

  2. После изменения Книги на 5 обработчик сообщает 6; подвал отображает тот же реквизит.

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

Показана граница между вычислением, хранением в форме и отображением подвала.

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

  1. Путь не создаёт реквизит и не запускает суммирование.

  2. ИзменитьРеквизиты выполняется на сервере и ресурсоёмок; здесь это только создание учебной формы.

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

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

Оформить шапку и подвал колонки количества и обновлять итог

Шапка, значения и подвал — отдельные области поля. Сумму вычисляет коллекция, оформление лишь показывает её.

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

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

Подготовка

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

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

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

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

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

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


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

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

    ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Товары");
    Таблица = ЭтаФорма.Элементы.Добавить("ТаблицаТоваров", Тип("ТаблицаФормы"));
    Таблица.ПутьКДанным = "Товары";
    Таблица.Заголовок = "Учебные товары";
    Таблица.Шапка = Истина;
    Таблица.АвтоВводНезаполненного = Ложь;
    Таблица.АвтоВводНовойСтроки = Ложь;
    Для Каждого ИмяКолонки Из СтрРазделить("Код,Наименование,Количество", ",") Цикл
        Колонка = Элементы.Добавить("Товары" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
        Колонка.Вид = ВидПоляФормы.ПолеВвода;
        Колонка.ПутьКДанным = "Товары." + ИмяКолонки;
        Колонка.Заголовок = ИмяКолонки;
    КонецЦикла;
    Таблица.Подвал = Истина;
    Поле = Элементы.ТоварыКоличество;
    Поле.ОтображатьВШапке = Истина;
    Поле.ОтображатьВПодвале = Истина;
    Поле.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложениеЭлемента.Центр;
    Поле.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложениеЭлемента.Право;
    Поле.ЦветТекстаЗаголовка = Новый Цвет(30, 70, 130);
    Поле.ЦветФонаЗаголовка = Новый Цвет(235, 242, 250);
    Поле.ЦветТекстаПодвала = Новый Цвет(25, 80, 45);
    Поле.ЦветФонаПодвала = Новый Цвет(235, 248, 239);
    Поле.ШрифтЗаголовка = Новый Шрифт("Arial", 11, Истина);
    Поле.ШрифтПодвала = Новый Шрифт("Arial", 11, Истина);
    Поле.ТекстПодвала = Строка(ЭтаФорма.Товары.Итог("Количество"));
    Поле.УстановитьДействие("ПриИзменении", "КоличествоПриИзменении");
    Сообщить(Поле.ПолучитьДействие("ПриИзменении") = "КоличествоПриИзменении");
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)
    Элементы.ТоварыКоличество.ТекстПодвала = Строка(ЭтаФорма.Товары.Итог("Количество"));
КонецПроцедуры

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

  1. Подвал включается у таблицы, отображение каждой колонки в нём — отдельно у поля.

  2. Заголовок выравниваем по центру, подвал справа; цвет и шрифт каждой области задаём отдельно.

  3. Начальный итог 4 вычисляет Итог, не ШрифтПодвала и не свойство отображения.

  4. Сервер назначает обработчик и проверяет имя через ПолучитьДействие. Клиентское ПриИзменении имеет параметр Элемент.

  5. После пользовательского изменения пересчитываем текст подвала; при массовом программном изменении нужен отдельный вызов пересчёта.

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

  1. Проверка имени обработчика Истина; первоначальный подвал количества 4.

  2. Измените Книгу с 3 на 5 и завершите ввод: подвал 6. Цвета/выравнивание сами ничего не суммируют.

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

На действующем учебном итоге показаны отдельные области оформления и реальный обработчик изменения.

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

  1. ТекстПодвала — отображение, не сохранённый денежный итог документа.

  2. Не путайте цвет общего заголовка ТаблицаФормы с цветом шапки ПолеФормы.

  3. Нужна проверка контраста в теме клиента; пиксельная идентичность не обещается.

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

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

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

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

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