ТабличныйДокумент.ПолучитьКомпактныйДокумент

Методы · GetCompactDocument

Создает на основе текущего и возвращает новый табличный документ, сжатый по горизонтали (используется для адаптации документа к ширине экрана мобильного устройства). После вызова данного метода можно вызвать метод УстановитьРастягиваниеПоГоризонтали для настройки ширины колонок.

Синтаксис

ПолучитьКомпактныйДокумент(<Ширина>, <ИспользованиеШирины>)
Полное описание, параметры и ограничения

ТабличныйДокумент.ПолучитьКомпактныйДокумент (SpreadsheetDocument.GetCompactDocument)

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

ПолучитьКомпактныйДокумент (GetCompactDocument)

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

Синтаксис:
ПолучитьКомпактныйДокумент(<Ширина>, <ИспользованиеШирины>)
Параметры:

<Ширина> (необязательный)
Тип: Число.
Максимальная ширина содержимого табличного документа (в "средних символах").
Если значение не задано, то максимальная ширина рассчитывается автоматически на основе информации об экране устройства пользователя. Если такой информации нет, то используется стандартное значение равное 20.

<ИспользованиеШирины> (необязательный)
Тип: ИспользованиеШириныСжатияТабличногоДокумента.
Задает использование ширины, переданной в качестве первого аргумента.
Описание:

Создает на основе текущего и возвращает новый табличный документ, сжатый по горизонтали (используется для адаптации документа к ширине экрана мобильного устройства).
После вызова данного метода можно вызвать метод УстановитьРастягиваниеПоГоризонтали для настройки ширины колонок.

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

Сервер, толстый клиент.

См. также:
ТабличныйДокумент, метод УстановитьРастягиваниеПоГоризонтали

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

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

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

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

Получить компактную копию для узкого экрана

Создаём новый компактный документ на сервере, а исходную таблицу оставляем без изменения. Ширина задаётся в средних символах, не в пикселях.

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

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

Подготовка

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция УчебнаяТаблица()
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Область(, 1, , 1).ШиринаКолонки = 35;
    ТабДок.Область(, 2, , 2).ШиринаКолонки = 10;
    ТабДок.Область(, 3, , 3).ШиринаКолонки = 14;
    ТабДок.Область(, 4, , 4).ШиринаКолонки = 15;
    Заголовок = ТабДок.Область(1, 1, 1, 4);
    Заголовок.Объединить();
    Заголовок.Текст = "Учебная таблица — данные только в памяти";
    Заголовок.Шрифт = Новый Шрифт("Arial", 12, Истина);
    Заголовок.ЦветФона = Новый Цвет(230, 242, 255);
    Заголовок.ВысотаСтроки = 24;
    ТабДок.Область(2, 1).Текст = "Товар";
    ТабДок.Область(2, 2).Текст = "Количество";
    ТабДок.Область(2, 3).Текст = "Цена";
    ТабДок.Область(2, 4).Текст = "Сумма";
    Товары = Новый Массив;
    Товары.Добавить(Новый Структура("Название,Количество,Цена", "Книга", 3, 250));
    Товары.Добавить(Новый Структура("Название,Количество,Цена", "Ручка", 1, 50));
    НомерСтроки = 3;
    Итого = 0;
    Для Каждого Товар Из Товары Цикл
        ТабДок.Область(НомерСтроки, 1).Текст = Товар.Название;
        Значения = Новый Массив;
        Значения.Добавить(Товар.Количество);
        Значения.Добавить(Товар.Цена);
        Значения.Добавить(Товар.Количество * Товар.Цена);
        Для НомерКолонки = 2 По 4 Цикл
            Ячейка = ТабДок.Область(НомерСтроки, НомерКолонки);
            Ячейка.СодержитЗначение = Истина;
            Ячейка.ТипЗначения = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12, 2));
            Ячейка.Значение = Значения.Получить(НомерКолонки - 2);
            Ячейка.Формат = "ЧДЦ=2; ЧН=0";
        КонецЦикла;
        Итого = Итого + Товар.Количество * Товар.Цена;
        НомерСтроки = НомерСтроки + 1;
    КонецЦикла;
    ПодписьИтога = ТабДок.Область(5, 1, 5, 3);
    ПодписьИтога.Объединить();
    ПодписьИтога.Текст = "Итого";
    Итог = ТабДок.Область(5, 4);
    Итог.СодержитЗначение = Истина;
    Итог.ТипЗначения = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(12, 2));
    Итог.Значение = Итого;
    Итог.Формат = "ЧДЦ=2; ЧН=0";
    Все = ТабДок.Область(2, 1, 5, 4);
    Все.Шрифт = Новый Шрифт("Arial", 10);
    Граница = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1, Ложь);
    Все.Обвести(Граница, Граница, Граница, Граница);
    Возврат ТабДок;
КонецФункции

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

  1. Метод ПолучитьКомпактныйДокумент возвращает другой объект. Исходные координаты и итог контролируем до замены возвращаемого результата.

  2. 40 — максимальная ширина сжатия в средних символах. УстановитьРастягиваниеПоГоризонтали настраивает растягивание уже компактного документа.

  3. Компактное представление может перестроить расположение ячеек. Не ищем итог по старым координатам в новом объекте без проверки.

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

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

  2. В показе компактная версия с обоими товарами и итогом 800. Сравните с первым базовым уроком: изменилось представление, а не данные исходника.

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

Отдельная адаптированная копия без порчи исходной таблицы.

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

  1. Сжатие не является уменьшением шрифта на принтере и не измеряется пикселями.

  2. Алгоритм зависит от структуры/ширины документа; слишком малое ограничение может не дать желаемого преобразования.

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

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

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

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

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