ТабличныйДокумент.Присоединить

Методы · Join

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

Синтаксис

Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)

Примеры платформы

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

ТабличныйДокумент.Присоединить (SpreadsheetDocument.Join)

ТабличныйДокумент (SpreadsheetDocument)

Присоединить (Join)

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

Синтаксис:
Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)
Параметры:

<Таблица> (обязательный)
Тип: ТабличныйДокумент, ПолеТабличногоДокумента.
Выводимая таблица.

<Уровень> (необязательный)
Тип: Число.
Уровень используется для автоматической группировки колонок табличного документа. Соседние колонки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.

<ИмяГруппы> (необязательный)
Тип: Строка.
Название группы, к которой относятся выводимые колонки.

<Открыта> (необязательный)
Тип: Булево.
Истина - выведенная группа будет открыта; Ложь - группа будет выведена в свернутом виде.
Возвращаемое значение:
Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

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

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

См. также:
ТабличныйДокумент, метод Вывести

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

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

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

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

Автоматически сгруппировать месячные колонки по уровням

Вместо ручного начала каждой группы передаём уровни при Присоединить. Уровень 2 отведён месячным деталям, уровень 1 — итоговой колонке.

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

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

Подготовка

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

  2. На форме создайте команду УчебныйПример и перетащите её на форму как кнопку. В действии команды выберите процедуру УчебныйПример(Команда).

  3. Вставьте весь модуль из примера: УчебныйПример, ПостроитьУчебныйДокумент и УчебнаяТаблица. Серверный вызов возвращает собственный табличный документ клиенту; директивы не удаляйте.

  4. Никакие макеты, документы и справочники конфигурации не нужны. Всё построение — в памяти, без печати, записи файлов и отправки в сервисы.

  5. Показ и ручную проверку выполняйте в тонком клиенте Windows 8.5.1.1343. Каждый урок — отдельная копия формы с пустым модулем до вставки.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = ПостроитьУчебныйДокумент();

    ТабДок.Показать("Учебный документ — без печати и сохранения");
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПостроитьУчебныйДокумент()
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.НачатьАвтогруппировкуКолонок();
    Шапка = Новый ТабличныйДокумент;
    Шапка.Область(1, 1).Текст = "Продажи";
    ТабДок.Вывести(Шапка, 1, "Итоги", Истина);
    Месяцы = Новый Массив;
    Месяцы.Добавить(Новый Структура("Название,Сумма", "Январь", 100));
    Месяцы.Добавить(Новый Структура("Название,Сумма", "Февраль", 200));
    Для Каждого Месяц Из Месяцы Цикл
        Колонка = Новый ТабличныйДокумент;
        Колонка.Область(1, 1).Текст = Месяц.Название + ": " + Строка(Месяц.Сумма);
        ТабДок.Присоединить(Колонка, 2, "Месяцы", Истина);
    КонецЦикла;
    Итог = Новый ТабличныйДокумент;
    Итог.Область(1, 1).Текст = "Итого: 300";
    ТабДок.Присоединить(Итог, 1, "Итоги", Истина);
    ТабДок.ЗакончитьАвтогруппировкуКолонок();
    ТабДок.ИтогиСправа = Истина;
    ТабДок.ОтображатьГруппировки = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    Сообщить(ТабДок.ШиринаТаблицы = 4);
    Сообщить(ТабДок.КоличествоУровнейГруппировокКолонок() > 0);
    Сообщить(ТабДок.Область(1, 4).Текст = "Итого: 300");
    Возврат ТабДок;
КонецФункции

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

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

  2. Две месячные колонки имеют более глубокий уровень 2. Итог с уровнем 1 закрывает детализацию.

  3. ЗакончитьАвтогруппировкуКолонок завершает построение структуры. Проверяем факт появления уровней, не предполагаем одинаковое число маркеров у разных режимов вывода.

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

  1. Три проверки дают Истина.

  2. В показе четыре колонки: Продажи, Январь: 100, Февраль: 200, Итого: 300. Сверните/разверните месячную детализацию.

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

Минимальный горизонтальный пример автоматических групп с подготовленными числами.

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

  1. Уровень — параметр группировки, не номер колонки.

  2. Не смешивайте ручной и автоматический режим в одном упражнении без понимания их границ.

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

Присоединить колонки справа и сгруппировать детали

Вывести располагает новый блок снизу; Присоединить — справа от последнего выведенного блока. Две детальные колонки входят в группу, итог остаётся отдельно.

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

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

Подготовка

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

  2. На форме создайте команду УчебныйПример и перетащите её на форму как кнопку. В действии команды выберите процедуру УчебныйПример(Команда).

  3. Вставьте весь модуль из примера: УчебныйПример, ПостроитьУчебныйДокумент и УчебнаяТаблица. Серверный вызов возвращает собственный табличный документ клиенту; директивы не удаляйте.

  4. Никакие макеты, документы и справочники конфигурации не нужны. Всё построение — в памяти, без печати, записи файлов и отправки в сервисы.

  5. Показ и ручную проверку выполняйте в тонком клиенте Windows 8.5.1.1343. Каждый урок — отдельная копия формы с пустым модулем до вставки.

&НаКлиенте
Процедура УчебныйПример(Команда)
    ТабДок = ПостроитьУчебныйДокумент();

    ТабДок.Показать("Учебный документ — без печати и сохранения");
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПостроитьУчебныйДокумент()
    ТабДок = Новый ТабличныйДокумент;
    Левая = Новый ТабличныйДокумент;
    Левая.Область(1, 1).Текст = "Показатель";
    Левая.Область(2, 1).Текст = "Продажи";
    Детали = Новый ТабличныйДокумент;
    Детали.Область(1, 1).Текст = "Книга";
    Детали.Область(1, 2).Текст = "Ручка";
    Детали.Область(2, 1).Текст = "750";
    Детали.Область(2, 2).Текст = "50";
    Итог = Новый ТабличныйДокумент;
    Итог.Область(1, 1).Текст = "Итого";
    Итог.Область(2, 1).Текст = "800";
    ТабДок.Вывести(Левая);
    ТабДок.НачатьГруппуКолонок("Товарные суммы", Истина);
    ТабДок.Присоединить(Детали);
    ТабДок.ЗакончитьГруппуКолонок();
    ТабДок.Присоединить(Итог);
    ТабДок.ИтогиСправа = Истина;
    ТабДок.ОтображатьГруппировки = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    Сообщить(ТабДок.КоличествоУровнейГруппировокКолонок() = 1);
    Сообщить(ТабДок.Область(2, 4).Текст = "800");
    ТабДок.ПоказатьУровеньГруппировокКолонок(0);
    Возврат ТабДок;
КонецФункции

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

  1. Все три блока по две строки; это делает горизонтальное присоединение наглядным. Итог занимает четвёртую колонку.

  2. Между началом и концом группы присоединяем только две колонки детализации. Колонка Итого присоединяется после закрытия группы.

  3. ИтогиСправа меняет сторону маркера секции. ПоказатьУровеньГруппировокКолонок(0) показывает свернутый уровень.

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

  1. Две проверки дают Истина.

  2. В показе разверните группу сверху: появятся Книга/750 и Ручка/50; Итого/800 уже находится снаружи справа.

  3. У результата четыре колонки, хотя при сворачивании видна только их часть.

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

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

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

  1. Присоединить не пересчитывает 750+50: итог здесь подготовлен явно.

  2. ИтогиСправа не гарантирует сохранение положения маркеров при сохранении документа в файл; в уроке файлов нет.

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

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

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

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

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