---
name: runner-core
description: >-
  Базовый рабочий процесс для написания и запуска BSL-скриптов Runner
  для взаимодействия с 1С:Предприятие 8.3. Используй для осмотра UI,
  управления контекстом формы, принятия решений с учетом навыков,
  построения минимальных шагов и выбора методов Runner, таких как
  Подключить, Здесь, ПолучитьЭлементыАктивногоОкна, ПолучитьИзмененияОкна,
  Коммандос, Нажать, ВнестиЗначение, Выбрать и средства чтения таблиц.
---

# Ядро Runner

Используйте этот навык для любой задачи, которая пишет или запускает Runner-скрипты для приложения 1C в этом репозитории.

## Протокол принятия решений

1. Сначала осмотри текущее состояние формы.
2. После осмотра определи, какие навыки применимы к текущей задаче, текущей форме или текущему бизнес-объекту, и используй наиболее подходящий.
3. Если подходящего навыка нет, переходи к общим рассуждениям об UI.
4. Используй элементы управления для проверки предварительных условий и получения точных ID, заголовков и ссылок.

## Когда использовать

- Когда нужно осмотреть UI приложения через Runner
- Когда нужно переходить между формами или навигационными ссылками
- Когда нужно читать значения, таблицы или табличные документы
- Когда нужно безопасно и пошагово заполнять или очищать поля, выбирать значения или нажимать элементы управления

## Базовый рабочий процесс

1. Начинай каждый скрипт с вызова метода `Подключить`.
2. Используй `ПолучитьГлавноеМеню` для навигации верхнего уровня или `ПолучитьЭлементыАктивногоОкна` для текущей формы.
3. Используй только элементы управления, заголовки и навигационные ссылки, которые уже известны из состояния приложения.
4. Перед взаимодействием с формой, установи контекст выполнения через `Здесь`.
5. Когда несколько известных элементов управления могут достичь одной цели, предпочитай стандартный механизм, определенный наиболее подходящим навыком, а не случайно более заметной кнопке.
6. Рассматривай каждое действие, изменяющее состояние, как потенциально меняющее другие поля, значения по умолчанию и доступность элементов управления, а не только целевой элемент.
7. После каждого такого действия останови шаг и осмотри результат через `ПолучитьИзмененияОкна`.
8. Скрипты должны быть минимально достаточными. В большинстве случаев, записывай в `tester/` одно надежное действие, изменяющее состояние, затем осматривайте результат и продолжай.

## Выбор методов Runner

### Обнаружение и чтение

Используй эти методы, чтобы понять текущее состояние перед действием:

- `ПолучитьГлавноеМеню`
- `ПолучитьЭлементыАктивногоОкна`
- `ПолучитьИзмененияОкна`
- `Взять`
- `ПолучитьСодержимоеТаблицы`
- `ПолучитьСодержимоеТабличногоДокумента`
- `ПолучитьСнимок`

### Контекст формы и навигация

Используй эти методы, чтобы безопасно перемещаться по UI:

- `Здесь`
- `Коммандос`
- `Дождаться`
- `Закрыть`
- `ЗакрытьВсё`

### Ввод данных и выбор

Используй эти методы после подтверждения, что целевой элемент управления существует:

- `Нажать`
- `ВнестиЗначение`
- `Очистить`
- `Выбрать`
- `Далее`

### Навигация по таблицам и ожидание

Используй эти методы для перехода к строкам таблиц, иерархическим уровням и веткам дерева:

- `КСтроке`
- `ПерейтиКПервойСтроке`
- `ПерейтиКПоследнейСтроке`
- `ПерейтиКСледующейСтроке`
- `ПерейтиКПредыдущейСтроке`
- `ПерейтиНаУровеньНиже`
- `ПерейтиНаУровеньВыше`
- `РаскрытьСтрокуДерева`
- `СвернутьСтрокуДерева`

После перехода по строкам, используй `ПолучитьИзмененияОкна`, если нужно понять текущее состояние и другие изменения на форме.

## Важные ограничения

- Не угадывай ID элементов, имена кнопок, заголовки форм или навигационные ссылки.
- Не объединяй несколько вызовов `ВнестиЗначение` в один скрипт только потому, что поля выглядят независимыми. Изменение значения поля формы, может запустить обработчик, логика которого может изменить форму и её поля и элементы.
- `Коммандос` допустим только тогда, как чётко известно, что навигационная ссылка существует в приложении.
- `КСтроке` предназначен для точной навигации к строке по известному значению колонки (или колонок). Не используй `КСтроке` для произвольного поиска. Используй стандартное поле поиска или фильтр у списка.
- `ПолучитьСодержимоеТаблицы` читает до 100 строк. Сужай набор результатов перед чтением больших списков. Если всё-таки нужно получить более 100 строк, попробуй экспортировать таблицу в табличный документ, а затем использовать `ПолучитьСодержимоеТабличногоДокумента` для получения данных в файле Microsoft Excel.
- `Выбрать` может открыть промежуточный диалог выбора типа данных. Рассматривай это как смену формы и осмотрите ее перед продолжением.
- Используй `ПолучитьЭлементыАктивногоОкна` только в случае, когда тебе нужно полностью изучить форму. Предпочитай `ПолучитьИзмененияОкна`, если ты с формой уже работаешь и тебе нужно видеть только изменения. Таким способом ты существенно сэкономишь объём информации для анализа.
- Используй `ПолучитьСнимок` только когда дерево элементов управления недостаточно объясняет текущее состояние UI.

## Ссылки

- Точное описание сигнатуры методов, нюансы и примеры: `@references/api-methods.md`
