ОбластьЯчеекТабличногоДокумента.Верх

Свойства · Top

Тип: Число. Предназначено для определения координат области. Содержит номер первой строки области.

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

ОбластьЯчеекТабличногоДокумента.Верх (SpreadsheetDocumentRange.Top)

ОбластьЯчеекТабличногоДокумента (SpreadsheetDocumentRange)

Верх (Top)

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

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

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

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

Доступен, начиная с версии 8.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).Имя = "УчебныеТовары";
    Документ.ТолькоПросмотр = Истина;
    ЭтаФорма.УчебныйДокумент = Документ;
    Поле = Элементы.Добавить("УчебноеПолеТаблицы", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
    Поле.ПутьКДанным = "УчебныйДокумент";
    Поле.Редактирование = Ложь;
    Поле.РазрешитьНачалоПеретаскивания = Ложь;
    Поле.РазрешитьПеретаскивание = Ложь;
    Поле.ОтображатьСетку = Истина;
    Поле.ОтображатьЗаголовки = Истина;
    Поле.ОтображатьГруппировки = Истина;
    Поле.ОтображатьИменаСтрокИКолонок = Истина;
    Поле.ОтображатьИменаЯчеек = Истина;
    Поле.ЧерноБелыйПросмотр = Ложь;
    Поле.ЦветРамки = Новый Цвет(180, 195, 210);
    Поле.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Обычный;


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

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

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

  1. Режимы относятся к отображению поля. УчебныеТовары — собственная именованная область, созданная до привязки поля.

  2. После переключения область снова ищется по имени и проверяется на отсутствие. Координаты остаются 2..3.

  3. Группировки в этой маленькой таблице не созданы. ОтображатьГруппировки лишь разрешает их вывод и не создаёт группы само.

  4. ЧерноБелыйПросмотр меняет просмотр, не преобразует и не записывает файл. Изменение свойств на клиенте может обращаться к серверу.

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

  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).Имя = "УчебныеТовары";
    Документ.ТолькоПросмотр = Истина;
    ЭтаФорма.УчебныйДокумент = Документ;
    Поле = Элементы.Добавить("УчебноеПолеТаблицы", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
    Поле.ПутьКДанным = "УчебныйДокумент";
    Поле.Редактирование = Ложь;
    Поле.РазрешитьНачалоПеретаскивания = Ложь;
    Поле.РазрешитьПеретаскивание = Ложь;
    Поле.РежимОтображенияВыделения = РежимОтображенияВыделения.Всегда;
    Поле.РежимОтображенияВыделенияРисунков = РежимОтображенияВыделенияРисунков.НеОтображать;
    Поле.РежимОтображенияКнопкиДействийЯчейки = РежимОтображенияКнопкиДействийЯчейки.НеОтображать;
    Поле.РежимОтображенияПанелиМножественногоВыделения = РежимОтображенияПанелиМножественногоВыделенияТабличногоДокумента.ОтображатьПриМножественномВыделении;


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

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

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

  1. Массив содержит собственные ячейки книги и количества ручки. Они не объединяются в одну прямоугольную область кодом.

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

  3. Количество проверяется до [0], типы проверены до обращения к координатам. Рисунок тоже может быть текущей областью в другом документе.

  4. Режимы выделения, кнопки действий и панели множественного выделения регулируют UI. Последний режим особенно важен для интерфейса 8.5.

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

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

  1. Четыре Истина и диагностический тип курсоров. Текущая область начинается в строке 2, колонке 1.

  2. Числа 3/1 не изменены; код не расшифровывает и не открывает рабочие объекты.

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

Выделение и текущая область проверены на собственной геометрии.

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

  1. Не вызывайте .Верх у текущего рисунка без проверки типа.

  2. Само выделение не является правкой или записью ячеек.

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

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

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

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

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