ТестируемаяТаблицаФормы.СнятьВыделениеВсехСтрок

Методы · DeselectAllRows

Эмулирует снятие выделения всех строк в таблице. Если таблица находится в режиме редактирования или в режиме добавления, генерируется исключение.

Синтаксис

СнятьВыделениеВсехСтрок()
Полное описание, параметры и ограничения

ТестируемаяТаблицаФормы.СнятьВыделениеВсехСтрок (TestedFormTable.DeselectAllRows)

ТестируемаяТаблицаФормы (TestedFormTable)

СнятьВыделениеВсехСтрок (DeselectAllRows)

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

Синтаксис:
СнятьВыделениеВсехСтрок()
Описание:

Эмулирует снятие выделения всех строк в таблице.
Если таблица находится в режиме редактирования или в режиме добавления, генерируется исключение.

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

Тонкий клиент, толстый клиент.

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

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

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

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

Добавить, скопировать и удалить только строки собственной формы

Полный UI-сценарий добавляет учебный карандаш, копирует его в папку и удаляет созданные строки. Существующие три строки должны сохраниться.

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

Полный клиентский модуль формы обработки в менеджере тестов, запущенном с /TESTMANAGER. Это не модуль тестируемой таблицы.

Подготовка

  1. Создайте собственную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Первый урок содержит полный модуль отдельной внешней обработки УчебнаяТаблицаТестирования; её данные только в памяти.

  2. Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.

  3. В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.

  4. Перед каждым тестом закройте и заново откройте таблицу в тестируемом клиенте. Исходно в ней A-01/Книга/3, B-02/Ручка/1, C-00/Бумага/2, без ранее установленной сортировки и редактирования.

  5. Каждый тест ищет точный учебный заголовок и таблицу ТаблицаТоваров внутри этой формы. Не заменяйте селекторы на * или первый найденный элемент рабочего приложения.

  6. Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
    Приложение.УстановитьСоединение();
    ИсходныйЛимит = Неопределено;
    ОшибкаТеста = "";
    Попытка
        Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная таблица guide-owned-ui-2026", , 10);
        Таблица = Форма.ПолучитьОбъект(Тип("ТестируемаяТаблицаФормы"), , "ТаблицаТоваров", 10);
        ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
        Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
        Таблица.Активизировать();
        Таблица.ДобавитьСтроку();
        ПолеКода = Таблица.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ТоварыКод", 10);
        ПолеНазвания = Таблица.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ТоварыНаименование", 10);
        ПолеКоличества = Таблица.ПолучитьОбъект(Тип("ТестируемоеПолеФормы"), , "ТоварыКоличество", 10);
        ПолеКода.Активизировать();
        ПолеКода.ВвестиТекст("D-03");
        ПолеНазвания.Активизировать();
        ПолеНазвания.ВвестиТекст("Карандаш");
        ПолеКоличества.Активизировать();
        ПолеКоличества.ВвестиТекст("4");
        Таблица.ЗакончитьРедактированиеСтроки(Ложь);
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКод") = "D-03");
        Таблица.СкопироватьСтроку();
        ПолеКода.Активизировать();
        ПолеКода.ВвестиТекст("E-04");
        ПолеНазвания.Активизировать();
        ПолеНазвания.ВвестиТекст("Папка");
        Таблица.ЗакончитьРедактированиеСтроки(Ложь);
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКод") = "E-04");
        Если Таблица.ПолучитьТекстЯчейки("ТоварыКод") <> "E-04" Тогда
            ВызватьИсключение "Перед удалением ожидалась созданная здесь Папка E-04";
        КонецЕсли;
        Таблица.УдалитьСтроку();
        Таблица.ПерейтиКПервойСтроке();
        ОписаниеКарандаша = Новый Соответствие;
        ОписаниеКарандаша.Вставить("Код", "D-03");
        Если Не Таблица.ПерейтиКСтроке(ОписаниеКарандаша, НаправлениеПереходаКСтроке.Вниз) Тогда
            ВызватьИсключение "Созданный здесь Карандаш не найден; дальнейшего удаления нет";
        КонецЕсли;
        Если Таблица.ПолучитьТекстЯчейки("ТоварыКод") <> "D-03" Тогда
            ВызватьИсключение "Удалять разрешено только созданный здесь Карандаш D-03";
        КонецЕсли;
        Таблица.УдалитьСтроку();
        Если Таблица.ТекущийРежимРедактирование() Тогда
            Таблица.ЗакончитьРедактированиеСтроки();
        КонецЕсли;
        Таблица.ВыделитьВсеСтроки();
        Сообщить(Таблица.ПолучитьВыделенныеСтроки().Количество() = 3);
        Таблица.СнятьВыделениеВсехСтрок();
        Таблица.ПерейтиКПервойСтроке();
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКод") = "A-01");
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКоличество") = "3");
    Исключение
        ОшибкаТеста = ОписаниеОшибки();
    КонецПопытки;
    ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
    Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
        ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
    КонецЕсли;
    Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры

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

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

  1. Сначала открываем собственную таблицу в отдельном клиенте тестирования. Подключаемся только к 127.0.0.1:15380, ищем точный заголовок и внутреннее имя таблицы с таймаутами 10 секунд.

  2. Новая строка получает собственный уникальный код D-03. Заполняем все три визуальные колонки, а не вызываем серверную запись товара.

  3. СкопироватьСтроку имитирует F9; в платформе этот метод доступен с 8.3.25. Копии даём новый код E-04 и имя Папка, чтобы не искать два одинаковых кода.

  4. Перед каждым удалением проверяем текущий код именно созданной строки. При несовпадении прекращаем, не удаляя первый попавшийся элемент.

  5. После удаления Папки ищем Карандаш по заголовку Код. Исходные A-01/B-02/C-00 не удаляются.

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

  7. Итоговое число проверяем через выделение всех трёх оставшихся строк и сразу снимаем выделение. Наличие трёх строк само по себе не доказывает их идентичность, поэтому дополнительно проверяется первая Книга.

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

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

  1. Пять контрольных Истина: свои новые коды, в конце три исходные строки и первая A-01/Книга/3.

  2. Вручную сверяйте также B-02/Ручка/1 и C-00/Бумага/2. После нового открытия таблицы всегда восстановлены три исходные строки.

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

Подготовлен реальный UI-сценарий изменения и удаления строго собственных строк памяти.

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

  1. УдалитьСтроку на рабочем списке может удалить или изменить реальные данные. Fixture и точные селекторы обязательны.

  2. Если появилось модальное подтверждение, не нажимайте произвольную кнопку в активном окне; сначала определите, что именно просит ваш клиент.

  3. Проверки Истина должны быть просмотрены; отсутствие исключения не делает сценарий автоматически успешным.

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

Найти строку Ручки и управлять выделением

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

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

Полный клиентский модуль формы обработки в менеджере тестов, запущенном с /TESTMANAGER. Это не модуль тестируемой таблицы.

Подготовка

  1. Создайте собственную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Первый урок содержит полный модуль отдельной внешней обработки УчебнаяТаблицаТестирования; её данные только в памяти.

  2. Запустите два отдельных тонких клиента собственной учебной базы: тестируемый с /TESTCLIENT -TPort15380, менеджер с /TESTMANAGER. Порт 15380 — собственный учебный; убедитесь, что на нём не работает другой клиент. Не подключайте менеджер к рабочей базе/чужому приложению.

  3. В тестируемом клиенте вручную откройте собственную обработку из первого урока. В менеджере создайте другую внешнюю обработку с командой ВыполнитьПример; полный код одного теста вставьте в её модуль формы.

  4. Перед каждым тестом закройте и заново откройте таблицу в тестируемом клиенте. Исходно в ней A-01/Книга/3, B-02/Ручка/1, C-00/Бумага/2, без ранее установленной сортировки и редактирования.

  5. Каждый тест ищет точный учебный заголовок и таблицу ТаблицаТоваров внутри этой формы. Не заменяйте селекторы на * или первый найденный элемент рабочего приложения.

  6. Это код штатного механизма тестирования 1С, не браузерная проверка HTML. В данном окружении выполнение UI-тестов в настоящей 1С не подтверждено.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Приложение = Новый ТестируемоеПриложение("127.0.0.1", 15380);
    Приложение.УстановитьСоединение();
    ИсходныйЛимит = Неопределено;
    ОшибкаТеста = "";
    Попытка
        Форма = Приложение.ПолучитьОбъект(Тип("ТестируемаяФорма"), "Учебная таблица guide-owned-ui-2026", , 10);
        Таблица = Форма.ПолучитьОбъект(Тип("ТестируемаяТаблицаФормы"), , "ТаблицаТоваров", 10);
        ИсходныйЛимит = Приложение.ПолучитьМаксимальноеВремяВыполненияДействия();
        Приложение.УстановитьМаксимальноеВремяВыполненияДействия(10);
        Таблица.Активизировать();
        Таблица.ПерейтиКПервойСтроке();
        ОписаниеРучки = Новый Соответствие;
        ОписаниеРучки.Вставить("Код", "B-02");
        Перешли = Таблица.ПерейтиКСтроке(ОписаниеРучки, НаправлениеПереходаКСтроке.Вниз, Ложь);
        Если Не Перешли Тогда
            ВызватьИсключение "Собственная строка B-02 не найдена";
        КонецЕсли;
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыНаименование") = "Ручка");
        Если Таблица.ТекущийРежимРедактирование() Тогда
            Таблица.ЗакончитьРедактированиеСтроки();
        КонецЕсли;
        Таблица.ВыделитьВсеСтроки();
        Сообщить(Таблица.ПолучитьВыделенныеСтроки().Количество() = 3);
        Таблица.СнятьВыделениеВсехСтрок();
        Сообщить(Таблица.ПолучитьВыделенныеСтроки().Количество() = 0);
        Таблица.ВыделитьСтроку(ОписаниеРучки);
        Сообщить(Таблица.ПолучитьВыделенныеСтроки().Количество() = 1);
        Таблица.СнятьВыделениеСтроки(ОписаниеРучки);
        Сообщить(Таблица.ПолучитьВыделенныеСтроки().Количество() = 0);
        Таблица.ПерейтиКПоследнейСтроке();
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКод") = "C-00");
        Таблица.ПерейтиКПредыдущейСтроке();
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКод") = "B-02");
        Таблица.ПерейтиКСледующейСтроке();
        Сообщить(Таблица.ПолучитьТекстЯчейки("ТоварыКод") = "C-00");
    Исключение
        ОшибкаТеста = ОписаниеОшибки();
    КонецПопытки;
    ОшибкиЗавершения = ЗавершитьСобственныйУчебныйТест(Приложение, ИсходныйЛимит);
    Если Не ПустаяСтрока(ОшибкаТеста) Или Не ПустаяСтрока(ОшибкиЗавершения) Тогда
        ВызватьИсключение "Ошибка учебного UI-теста: " + ОшибкаТеста + " " + ОшибкиЗавершения;
    КонецЕсли;
    Сообщить("Сценарий завершён без исключения. Отдельно сверяйте контрольные Истина и видимые данные учебного клиента");
КонецПроцедуры

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

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

  1. Сначала открываем собственную таблицу в отдельном клиенте тестирования. Подключаемся только к 127.0.0.1:15380, ищем точный заголовок и внутреннее имя таблицы с таймаутами 10 секунд.

  2. ОписаниеСтроки — Соответствие с заголовком Код и текстом B-02, не SQL-условие, номер строки или её внутренний идентификатор.

  3. Направление Вниз применяется от текущего положения, поэтому сначала переходим к первой строке. Ложь имитирует обычный выбор, не Ctrl-многовыделение.

  4. ВыделитьВсеСтроки запрещён во время редактирования/добавления. Сначала проверяем режим и завершаем редактирование.

  5. ВыделитьСтроку требует видимой строки. Fixture содержит три видимых строки, не длинный рабочий список с виртуальной загрузкой.

  6. Снять выделение не удаляет строку. Последняя/предыдущая/следующая перемещают курсор по исходному несортированному списку.

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

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

  1. Восемь контрольных Истина; выделение меняется 3→0→1→0.

  2. Количество строк всё ещё 3. Навигация по кодам даёт C-00→B-02→C-00; значения не меняются.

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

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

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

  1. Заголовок колонки и внутреннее имя поля — разные селекторы.

  2. Шаблоны * и ? в тексте описания строки могут выбрать не ту строку; собственные коды здесь точные.

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

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

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

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

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