Расширение поля формы для поля табличного документа.РежимОтображенияВыделения

Свойства · SelectionShowMode

Тип: РежимОтображенияВыделения. Управляет режимом отображения выделения в табличном документе.

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

Расширение поля формы для поля табличного документа.РежимОтображенияВыделения (Form field extension for a spreadsheet document field.SelectionShowMode)

Расширение поля формы для поля табличного документа (Form field extension for a spreadsheet document field)

РежимОтображенияВыделения (SelectionShowMode)

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


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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Поле = Элементы.УчебноеПолеТаблицы;
    Области = Новый Массив;
    Области.Добавить(ЭтаФорма.УчебныйДокумент.Область(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С» и не аффилирован с ней.