Добавляет поле в коллекцию.
Синтаксис
Добавить(<ПутьКДанным>, <Имя>)Полное описание, параметры и ограничения
ПоляПостроителяОтчета.Добавить (ReportBuilderFields.Add)
ПоляПостроителяОтчета (ReportBuilderFields)
Добавить (Add)
Доступен, начиная с версии 8.0.
Синтаксис:
Добавить(<ПутьКДанным>, <Имя>)
Параметры:
<ПутьКДанным> (обязательный)
Тип: Строка.
Путь к данным поля.
<Имя> (необязательный)
Тип: Строка.
Имя поля.
Возвращаемое значение:
Тип: ПолеПостроителяОтчета.
Описание:
Добавляет поле в коллекцию.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Вывести три учебных товара через ПостроительОтчета
Отчёт строится из своей ТаблицаЗначений. Нет запроса к справочникам и нет внешних зависимостей старого кода.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Учебная внешняя обработка с пустой управляемой основной формой. Создайте команду УчебныйПример, кнопку команды и назначьте действие УчебныйПример.
Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.
Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.
ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.
&НаКлиенте
Процедура УчебныйПример(Команда)
ТабДок = СформироватьУчебныйОтчет();
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры
&НаСервере
Функция СформироватьУчебныйОтчет()
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Образцы = Новый Массив;
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
Для Каждого Образец Из Образцы Цикл
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
КонецЦикла;
Описание = Новый ОписаниеИсточникаДанных(Данные);
Для Каждого Колонка Из Описание.Колонки Цикл
Колонка.Поле = Истина;
Колонка.Отбор = Истина;
Колонка.Порядок = Истина;
Колонка.Измерение = Колонка.Имя = "Категория";
КонецЦикла;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Описание;
Построитель.АвтоДетальныеЗаписи = Ложь;
Построитель.ВыводитьДетальныеЗаписи = Истина;
Построитель.ВыводитьЗаголовокОтчета = Истина;
Построитель.ВыводитьОбщиеИтоги = Ложь;
Построитель.ВыводитьПодвалОтчета = Ложь;
Построитель.ВыводитьПодвалТаблицы = Ложь;
Построитель.ВыводитьШапкуТаблицы = Истина;
Построитель.ОтображатьСостояние = Ложь;
Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
Поля = Построитель.ВыбранныеПоля;
Поля.Очистить();
Поля.Добавить("Наименование", "Товар");
Поля.Добавить("Количество", "Количество");
Поля.Добавить("Цена", "Цена");
Поля.Добавить("Сумма", "Сумма");
Сообщить(Данные.Количество() = 3);
Сообщить(Данные.Итог("Сумма") = 860);
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(ТабДок);
Возврат ТабДок;
КонецФункции
Разбор по шагам
Сначала создаём свои три строки и вычисляем Сумма = Количество × Цена.
ОписаниеИсточникаДанных оборачивает готовую таблицу. Колонки описания задают доступность выбора, отбора, порядка и измерений.
ВыбранныеПоля явно содержит четыре выводимых поля: категория не выводится в этой задаче.
ИсточникДанных установлен, поэтому ПолучитьЗапрос не вызывается: этот метод для такого режима недоступен по справке.
Вывести формирует ТабличныйДокумент на сервере. Клиент только показывает его, не печатает.
Как проверить результат
Проверки исходных трёх строк и суммы 860 — Истина.
В отчёте Книга 3/250/750, Ручка 1/50/50, Коробка 2/30/60.
Заголовок учебный, в рабочей базе не создаются новые товары.
Ожидаемый результат
Полноценный старый отчёт из локальной таблицы с вычисленным ресурсом и явным набором полей.
На что обратить внимание
ЗаполнитьНастройки автоматически заполняет настройки из текста запроса; его не используем для этого табличного источника.
ТаблицаЗначений формируется на сервере: нельзя переносить её создание в тонкий клиент без изменения архитектуры.
Наличие этого API не делает его тождественным СКД.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Управлять колонками отчёта, не меняя исходную таблицу
ПутьКДанным указывает исходное поле, Имя — имя настройки, Представление — подпись. Проверяем все девять методов выбора полей.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Учебная внешняя обработка с пустой управляемой основной формой. Создайте команду УчебныйПример, кнопку команды и назначьте действие УчебныйПример.
Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.
Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.
ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.
&НаКлиенте
Процедура УчебныйПример(Команда)
ТабДок = СформироватьУчебныйОтчет();
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры
&НаСервере
Функция СформироватьУчебныйОтчет()
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Образцы = Новый Массив;
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
Для Каждого Образец Из Образцы Цикл
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
КонецЦикла;
Описание = Новый ОписаниеИсточникаДанных(Данные);
Для Каждого Колонка Из Описание.Колонки Цикл
Колонка.Поле = Истина;
Колонка.Отбор = Истина;
Колонка.Порядок = Истина;
Колонка.Измерение = Колонка.Имя = "Категория";
КонецЦикла;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Описание;
Построитель.АвтоДетальныеЗаписи = Ложь;
Построитель.ВыводитьДетальныеЗаписи = Истина;
Построитель.ВыводитьЗаголовокОтчета = Истина;
Построитель.ВыводитьОбщиеИтоги = Ложь;
Построитель.ВыводитьПодвалОтчета = Ложь;
Построитель.ВыводитьПодвалТаблицы = Ложь;
Построитель.ВыводитьШапкуТаблицы = Истина;
Построитель.ОтображатьСостояние = Ложь;
Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
Поля = Построитель.ВыбранныеПоля;
Поля.Очистить();
Товар = Поля.Добавить("Наименование", "Товар");
Товар.Представление = "Учебный товар";
Сумма = Поля.Добавить("Сумма", "УчебнаяСумма");
Сумма.Представление = "Стоимость, руб.";
Количество = Поля.Вставить("Количество", "УчебноеКоличество", 1);
Количество.Представление = "Количество, шт.";
Сообщить(Поля.Найти("УчебнаяСумма") = Сумма);
Сообщить(Поля.Индекс(Количество) = 1);
Поля.Сдвинуть(Количество, 1);
Сообщить(Поля.Получить(2).Имя = "УчебноеКоличество");
Поля.Сдвинуть(Количество, -1);
Проба = Поля.Добавить("Цена", "УдаляемаяЦена");
Поля.Удалить(Проба);
Сообщить(Поля.Количество() = 3);
Сообщить(Товар.ПутьКДанным = "Наименование");
Сообщить(Данные.Колонки.Количество() = 5);
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(ТабДок);
Возврат ТабДок;
КонецФункции
Разбор по шагам
Очищаем только выбранные поля собственного нового построителя. Исходная таблица с пятью колонками не очищается.
Для Товара источник Наименование, имя настройки Товар, подпись Учебный товар — три разных понятия.
Вставить получает путь, имя и позицию последним параметром; это не сигнатура Вставить у массива.
Найти ищет Имя настройки. Индекс/Получить работают с позицией. Сдвигаем количество и возвращаем исходный порядок.
Временную цену удаляем из выбранных полей, не из исходных данных. Итог: Товар, Количество, Стоимость.
Как проверить результат
Шесть проверок Истина.
В отчёте три колонки: Учебный товар, Количество, шт., Стоимость, руб.
Исходная таблица всё ещё содержит Категория/Наименование/Количество/Цена/Сумма.
Ожидаемый результат
Полностью разобран выводимый набор полей и его порядок на конкретном отчёте.
На что обратить внимание
Удаление выбранного поля не удаляет данные таблицы или реквизит конфигурации.
Имя настройки не всегда совпадает с ПутьКДанным; искать по неправильному имени нельзя.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.