Клавиша Tab, порядок обхода полей и отступы в коде 1С 8.3
Содержание
Табуляция в 1С включена всегда: клавиша Tab переводит курсор на следующее поле формы, Shift+Tab — на предыдущее. Настраивать приходится не саму клавишу, а три вещи: порядок, в котором курсор обходит поля, ширину табуляции в редакторе модулей конфигуратора и символ табуляции в коде (Символы.Таб).
Типичная ситуация: оператор вводит сотню документов поступления в день и жалуется, что после поля «Контрагент» курсор прыгает в «Комментарий», а не в «Договор». Это лечится в конфигураторе за пять минут — если знать, где у управляемой и у обычной формы задаётся порядок обхода. Ниже — по каждому случаю.
Что называют табуляцией в 1С и где она работает
Под словом «табуляция» в 1С понимают разные вещи. От того, что именно нужно, зависит, куда идти.
| Что нужно | Где настраивается | Кто делает |
|---|---|---|
🔢 Порядок перехода по полям клавишей Tab | Редактор формы в конфигураторе | Разработчик |
⏭️ Чтобы Tab пропускал ненужное поле | Свойство поля «Пропускать при вводе» | Разработчик |
| 📐 Ширина отступа в модулях, табы или пробелы | Сервис → Параметры в конфигураторе | Каждый разработчик у себя |
| 🔣 Символ табуляции в строке, выгрузка TSV | Встроенный язык, Символы.Таб | Разработчик |
| 🗂️ Формы во вкладках вместо отдельных окон | Сервис и настройки → Параметры в режиме 1С:Предприятие | Пользователь |
Первые четыре пункта — работа в конфигураторе. Последний пользователь меняет сам, без прав администратора.
Как включить вкладки и переход по полям в режиме 1С:Предприятие
У пользователя без конфигуратора две доступные настройки, связанные с табуляцией.
Формы во вкладках
В интерфейсе «Такси» формы по умолчанию открываются закладками внутри главного окна. Если у вас документы открываются отдельными окнами, переключите режим:
- Откройте меню с тремя полосками (главное меню) в левом верхнем углу.
- Выберите
Сервис и настройки → Параметры. - В поле «Режим открытия форм» выберите «В закладках».
- Нажмите «Применить» и перезапустите сеанс, если формы не перестроились сразу.
Между открытыми вкладками переключаются клавишами Ctrl+Tab (вперёд) и Ctrl+Shift+Tab (назад). Это удобнее, чем тянуться к мыши при сверке двух документов.
Переход по полям
Внутри формы Tab работает без настроек. Если курсор обходит поля «не туда», пользователь это не исправит: порядок зашит в форму. Варианты такие:
- 🧑💻 типовая конфигурация без изменений — порядок задали разработчики фирмы 1С, менять его стоит только через расширение;
- 🛠️ доработанная конфигурация — просите программиста поправить порядок элементов формы;
- 🔄 после обновления порядок «сломался» — значит, в форму добавили новые поля, и их нужно расставить заново.
Курсор в поле с выпадающим списком или выбором из справочника тоже уходит дальше по Tab. Если открылся список выбора — сначала закройте его Esc, потом жмите Tab.
Настройка табуляции в конфигураторе: порядок обхода и ширина отступа
Здесь два разных места: порядок обхода настраивают в редакторе формы, ширину табуляции — в параметрах самого конфигуратора.
Порядок обхода в управляемой форме
В управляемой форме нет отдельной таблицы «порядка обхода». Курсор идёт по дереву элементов сверху вниз — так, как они стоят на вкладке «Элементы» редактора формы. Чтобы изменить порядок:
- Откройте форму в конфигураторе (двойной щелчок по форме в дереве объекта).
- В левой верхней панели перейдите на вкладку «Элементы».
- Выделите поле и двигайте его кнопками со стрелками вверх и вниз на командной панели дерева или перетащите мышью.
- Если поле лежит внутри группы, двигается вся группа целиком: сначала курсор обойдёт все поля одной группы, потом перейдёт к следующей.
- Сохраните форму и проверьте результат в режиме 1С:Предприятие (
F5— запуск отладки).
Внешний вид формы при этом меняется тоже: управляемая форма строится из того же дерева. Если нужно, чтобы поле стояло справа, а обходилось первым, используйте группы с горизонтальной группировкой: внутри такой группы курсор идёт слева направо.
Порядок обхода в обычной форме
В обычных формах (толстый клиент, старые конфигурации) элементы размещаются на форме координатами, и порядок обхода хранится отдельно.
- Откройте обычную форму в редакторе.
- Откройте палитру свойств самой формы и найдите флажок «Автоматический порядок обхода».
- При включённом флажке платформа сама обходит поля слева направо и сверху вниз. Снимите флажок, чтобы задать порядок вручную.
- В меню
Формавыберите команду настройки порядка обхода — на элементах появятся номера. - Щёлкайте по элементам в нужной последовательности, номера перестроятся.
Если в конфигурации включена поддержка поставщика, изменение формы снимает её с поддержки или требует включить возможность изменения. При следующем обновлении придётся сравнивать и объединять форму вручную. Для типовых конфигураций надёжнее менять форму через расширение.
Ширина табуляции в редакторе модулей
Второй смысл «настройки табуляции в конфигураторе» — как редактор кода вставляет отступ. Настройка находится в Сервис → Параметры, вкладка «Тексты» (в разных версиях платформы группа настроек может называться немного иначе). Там задаются:
- 📏 ширина табуляции — сколько позиций занимает один символ табуляции на экране, обычно 4;
- ↔️ отступ — на сколько сдвигается строка при автоотступе;
- 🔀 чем заполнять отступ: символами табуляции или пробелами.
Стандарт разработки типовых конфигураций — отступы символом табуляции. Если в команде у одного разработчика пробелы, а у другого табы, при сравнении и объединении конфигураций появятся сотни «изменённых» строк, где поменялись только отступы. Договоритесь об одном варианте и выставьте его у всех.
Свойства полей, которые управляют переходом по Tab
Порядок обхода — половина дела. Вторая половина — какие поля курсор вообще посещает.
Пропускать при вводе
У поля управляемой и обычной формы есть свойство «Пропускать при вводе». Если оно включено, Tab проскакивает поле, хотя щёлкнуть в него мышью можно. Удобно для полей, которые заполняются редко: «Комментарий», «Ответственный», «Подразделение».
Где найти: выделите элемент формы, откройте палитру свойств (Alt+Enter), найдите свойство по названию — в палитре есть поиск.
Только просмотр и доступность
- 👁️ «Только просмотр» — поле видно, значение не меняется; курсор по
Tabв такое поле обычно заходит, можно скопировать значение; - 🚫 «Доступность» выключена — поле серое, курсор его пропускает;
- 🙈 «Видимость» выключена — поле не участвует в обходе вовсе.
Поле с курсором при открытии
Чтобы форма открывалась сразу на нужном поле, у элемента управляемой формы включите свойство «Активизировать по умолчанию». Тогда после открытия документа оператор сразу печатает в это поле и дальше идёт по Tab.
Программное управление табуляцией: примеры кода
Из кода можно переставить курсор, отключить поле от обхода и работать с самим символом табуляции.
Установить курсор и пропуск поля
Код в модуле управляемой формы:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Курсор сразу в поле «Контрагент»
ТекущийЭлемент = Элементы.Контрагент;
КонецПроцедуры
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Поле «Комментарий» не участвует в обходе по Tab
Элементы.Комментарий.ПропускатьПриВводе = Истина;
КонецПроцедуры
Тот же приём работает в обработчике ПриИзменении: после выбора контрагента можно передать фокус в «Договор» строкой ТекущийЭлемент = Элементы.Договор;. Так оператор не делает лишнее нажатие.
Символ табуляции в строке
Символ табуляции во встроенном языке — Символы.Таб. Он нужен, когда выгружаете данные в текстовый файл, который потом открывают в Excel: столбцы, разделённые табуляцией, Excel раскладывает по ячейкам при вставке через буфер обмена.
Запись файла с разделителем-табуляцией:
Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
Для Каждого Строка Из ТаблицаДанных Цикл
Поля = Новый Массив;
Поля.Добавить(СтрЗаменить(Строка.Наименование, Символы.Таб, " "));
Поля.Добавить(Формат(Строка.Количество, "ЧГ=0"));
Поля.Добавить(Формат(Строка.Сумма, "ЧДЦ=2; ЧГ=0"));
Запись.ЗаписатьСтроку(СтрСоединить(Поля, Символы.Таб));
КонецЦикла;
Запись.Закрыть();
Чтение такого файла обратно:
Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
Стр = Чтение.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Поля = СтрРазделить(Стр, Символы.Таб, Истина);
Если Поля.Количество() >= 3 Тогда
Наименование = Поля[0];
Количество = Число(Поля[1]);
Сумма = Число(Поля[2]);
// здесь обработка значений
КонецЕсли;
Стр = Чтение.ПрочитатьСтроку();
КонецЦикла;
Чтение.Закрыть();
Третий параметр СтрРазделить — Истина: пустые значения между двумя табуляциями сохраняются, и столбцы не съезжают. Функции СтрСоединить и СтрРазделить есть в платформе 8.3 начиная с релиза 8.3.6.
СтрЗаменить(..., Символы.Таб, " ") в примере записи — не перестраховка. Если в наименовании товара случайно окажется табуляция (бывает при копировании из почты), строка файла разъедется на лишний столбец.
Чем отличается табуляция в управляемых и обычных формах
| Признак | Управляемая форма | Обычная форма |
|---|---|---|
| Где задан порядок обхода | Порядок элементов в дереве «Элементы» | Отдельная настройка с номерами элементов |
| Автоматический режим | Всегда: обход по дереву | Флажок «Автоматический порядок обхода» |
| Как поменять порядок | Переместить элемент или группу в дереве | Снять флажок и расставить номера |
| Влияет ли на внешний вид | Да, форма строится из дерева | Нет, координаты отдельно |
| Пропуск поля | «Пропускать при вводе» | «Пропускать при вводе» |
| Где работает | Тонкий, веб- и толстый клиент | Только толстый клиент |
Практический вывод: в управляемой форме порядок обхода и раскладка связаны. Нельзя поставить поле в правый верхний угол и при этом сделать его пятым по Tab, не прибегая к группам. В обычной форме это делается свободно, но порядок легко «забыть» при добавлении нового поля: оно получает номер в конце списка.
Горячие клавиши для табуляции и отступов
В режиме 1С:Предприятие
| Клавиши | Действие |
|---|---|
Tab | Следующее поле формы |
Shift+Tab | Предыдущее поле |
Ctrl+Tab | Следующая открытая вкладка или окно |
Ctrl+Shift+Tab | Предыдущая вкладка или окно |
F4 | Открыть выбор значения в поле |
Esc | Закрыть выпадающий список, затем форму |
В редакторе модулей конфигуратора
| Клавиши | Действие |
|---|---|
Tab при выделенном блоке | Сдвинуть строки вправо на один отступ |
Shift+Tab при выделенном блоке | Сдвинуть строки влево |
Alt+Shift+F | Отформатировать выделенный фрагмент: расставить отступы по вложенности |
Ctrl+/ (на цифровой клавиатуре) | Закомментировать строки |
Ctrl+Shift+/ (на цифровой клавиатуре) | Раскомментировать строки |
Alt+Shift+F выручает, когда код вставили из браузера или мессенджера: там отступы часто приходят пробелами разной длины. Выделите процедуру целиком, нажмите сочетание — отступы выровняются по вложенности конструкций Если, Для, Пока.
Типичные проблемы с табуляцией и как их исправить
Если ничего из этого не подошло, проверьте, не перехватывает ли клавишу сама форма: в модуле может быть обработчик, который при изменении поля переводит фокус через ТекущийЭлемент. Поиск по модулю формы (Ctrl+F) по слову ТекущийЭлемент быстро покажет такие места.