ТабличныйДокумент.ШиринаТаблицы

Свойства · TableWidth

Тип: Число. Содержит количество колонок в таблице.

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

ТабличныйДокумент.ШиринаТаблицы (SpreadsheetDocument.TableWidth)

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

ШиринаТаблицы (TableWidth)

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

Использование:
Только чтение.
Описание:
Тип: Число.
Содержит количество колонок в таблице.
Доступность:

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

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

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

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

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

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

Ширина измеряется в средних символах документа. Сжатие выполняется над своим экземпляром, после чего сразу отменяется и проверяется восстановление.

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

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

Подготовка

  1. Создайте отдельную внешнюю обработку с новой пустой управляемой основной формой в учебной базе. ПриСозданииНаСервере назначьте одноимённой процедуре.

  2. Вставьте полный модуль на уровне модуля формы. УчебныйДокумент, УчебноеПолеТаблицы и кнопку вручную не создавайте: их добавляет код.

  3. Каждый урок — отдельная копия формы. Таблица содержит только собственную Книгу (3) и Ручку (1); это не печатная форма рабочего документа.

  4. Настольный тонкий/толстый или веб-клиент. Для урока очистки выделения выберите интерфейс Версия 8.5: его поведение выделения отдельно отмечено в справке.

  5. Код не вызывает печать, сохранение файла, сетевой обмен или запись базы. Внешняя кнопка остаётся вне табличного поля и его состояния.

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


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить свою таблицу";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Поле = Элементы.УчебноеПолеТаблицы;
    ШиринаСжатия = Поле.ПолучитьРекомендуемуюШиринуСжатия();
    Если ШиринаСжатия <= 0 Тогда
        Сообщить("Ширина поля пока не рассчитана; повторите после отображения формы");
        Возврат;
    КонецЕсли;
    Документ = ЭтаФорма.УчебныйДокумент;
    ИсходнаяВысота = Документ.ВысотаТаблицы;
    ИсходнаяШирина = Документ.ШиринаТаблицы;
    Документ.ПреобразоватьВКомпактныйДокумент(ШиринаСжатия, ИспользованиеШириныСжатияТабличногоДокумента.СжиматьВсегда);
    Документ.ОтменитьПреобразованиеДокумента();
    Сообщить("Рекомендованная ширина: " + Строка(ШиринаСжатия));
    Сообщить(Документ.ВысотаТаблицы = ИсходнаяВысота);
    Сообщить(Документ.ШиринаТаблицы = ИсходнаяШирина);
    Сообщить(ЭтаФорма.УчебныйДокумент.Область(2, 2).Значение = 3);
    Сообщить(ЭтаФорма.УчебныйДокумент.Область(3, 2).Значение = 1);
КонецПроцедуры

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

  1. Метод поля доступен на клиенте, не на сервере. Он возвращает рекомендованную ширину в средних символах табличного документа.

  2. Не готовая неположительная ширина обрабатывается до преобразования. Сохраняются фактические размеры собственного документа.

  3. ПреобразоватьВКомпактныйДокумент меняет текущий экземпляр, не возвращает новую копию. Результат не присваивается переменной.

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

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

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

  1. После расчёта поля: четыре Истина и положительная рекомендованная ширина.

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

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

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

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

  1. Не вызывайте метод ширины на сервере и не считайте его пикселями.

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

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

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

Таблица остаётся три строки на две колонки. Меняются ограничения и размер элемента формы, не количество строк данных.

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

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

Подготовка

  1. Создайте отдельную внешнюю обработку с новой пустой управляемой основной формой в учебной базе. ПриСозданииНаСервере назначьте одноимённой процедуре.

  2. Вставьте полный модуль на уровне модуля формы. УчебныйДокумент, УчебноеПолеТаблицы и кнопку вручную не создавайте: их добавляет код.

  3. Каждый урок — отдельная копия формы. Таблица содержит только собственную Книгу (3) и Ручку (1); это не печатная форма рабочего документа.

  4. Настольный тонкий/толстый или веб-клиент. Для урока очистки выделения выберите интерфейс Версия 8.5: его поведение выделения отдельно отмечено в справке.

  5. Код не вызывает печать, сохранение файла, сетевой обмен или запись базы. Внешняя кнопка остаётся вне табличного поля и его состояния.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебныйДокумент", Новый ОписаниеТипов("ТабличныйДокумент")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    Документ = Новый ТабличныйДокумент;
    Документ.Область(1, 1).Текст = "Товар";
    Документ.Область(1, 2).Текст = "Количество";
    Документ.Область(2, 1).Текст = "Книга";
    Документ.Область(3, 1).Текст = "Ручка";
    Для НомерСтроки = 2 По 3 Цикл
        Ячейка = Документ.Область(НомерСтроки, 2);
        Ячейка.СодержитЗначение = Истина;
        Ячейка.ТипЗначения = Новый ОписаниеТипов("Число");
        Если НомерСтроки = 2 Тогда
            Ячейка.Значение = 3;
        Иначе
            Ячейка.Значение = 1;
        КонецЕсли;
    КонецЦикла;
    Документ.Область(, 1, , 1).ШиринаКолонки = 25;
    Документ.Область(, 2, , 2).ШиринаКолонки = 12;
    Документ.Область(2, 1, 3, 2).Имя = "УчебныеТовары";
    Документ.ТолькоПросмотр = Истина;
    ЭтаФорма.УчебныйДокумент = Документ;
    Поле = Элементы.Добавить("УчебноеПолеТаблицы", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
    Поле.ПутьКДанным = "УчебныйДокумент";
    Поле.Редактирование = Ложь;
    Поле.РазрешитьНачалоПеретаскивания = Ложь;
    Поле.РазрешитьПеретаскивание = Ложь;
    Поле.АвтоМаксимальнаяВысота = Ложь;
    Поле.АвтоМаксимальнаяШирина = Ложь;
    Поле.Высота = 10;
    Поле.Ширина = 45;
    Поле.МаксимальнаяВысота = 20;
    Поле.МаксимальнаяШирина = 80;
    Поле.РастягиватьПоВертикали = Истина;
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.ВертикальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.ИспользоватьАвтоматически;
    Поле.ГоризонтальнаяПолосаПрокрутки = ИспользованиеПолосыПрокрутки.ИспользоватьАвтоматически;


    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить свою таблицу";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Поле = Элементы.УчебноеПолеТаблицы;
    Если Поле.Высота = 10 Тогда
        Поле.Высота = 16;
    Иначе
        Поле.Высота = 10;
    КонецЕсли;
    Сообщить("Высота поля: " + Строка(Поле.Высота));
    Сообщить(Поле.Ширина = 45);
    Сообщить(ЭтаФорма.УчебныйДокумент.ВысотаТаблицы = 3);
    Сообщить(ЭтаФорма.УчебныйДокумент.ШиринаТаблицы = 2);
    Сообщить(ЭтаФорма.УчебныйДокумент.Область(2, 2).Значение = 3);
    Сообщить(ЭтаФорма.УчебныйДокумент.Область(3, 2).Значение = 1);
КонецПроцедуры

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

  1. Высота задаётся в строках, Ширина в символах. Это размеры элемента, не свойства ВысотаТаблицы/ШиринаТаблицы документа.

  2. Отключение автоматических максимумов делает применимыми явные МаксимальнаяВысота и МаксимальнаяШирина; нулевое значение сняло бы ограничение.

  3. Растягивание разрешает изменение области при изменении формы. Автоматические полосы появляются при нехватке места, а не обязательно на маленькой таблице.

  4. Кнопка меняет только высоту поля. По справке изменение размеров на клиенте требует обращения к серверу.

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

  1. Пять Истина и высота 16/10 при последовательных нажатиях.

  2. Книга 3 и Ручка 1 остаются в таблице, даже если окно сделать меньше.

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

Геометрия элемента отделена от геометрии собственных данных.

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

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

  2. Полосы прокрутки могут не понадобиться трём строкам.

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

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

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

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

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