Клавиша Tab, порядок обхода полей и отступы в коде 1С 8.3

· 9 мин

Содержание

Табуляция в 1С включена всегда: клавиша Tab переводит курсор на следующее поле формы, Shift+Tab — на предыдущее. Настраивать приходится не саму клавишу, а три вещи: порядок, в котором курсор обходит поля, ширину табуляции в редакторе модулей конфигуратора и символ табуляции в коде (Символы.Таб).

Типичная ситуация: оператор вводит сотню документов поступления в день и жалуется, что после поля «Контрагент» курсор прыгает в «Комментарий», а не в «Договор». Это лечится в конфигураторе за пять минут — если знать, где у управляемой и у обычной формы задаётся порядок обхода. Ниже — по каждому случаю.

Что называют табуляцией в 1С и где она работает

Под словом «табуляция» в 1С понимают разные вещи. От того, что именно нужно, зависит, куда идти.

Что нужноГде настраиваетсяКто делает
🔢 Порядок перехода по полям клавишей TabРедактор формы в конфигуратореРазработчик
⏭️ Чтобы Tab пропускал ненужное полеСвойство поля «Пропускать при вводе»Разработчик
📐 Ширина отступа в модулях, табы или пробелыСервис → Параметры в конфигуратореКаждый разработчик у себя
🔣 Символ табуляции в строке, выгрузка TSVВстроенный язык, Символы.ТабРазработчик
🗂️ Формы во вкладках вместо отдельных оконСервис и настройки → Параметры в режиме 1С:ПредприятиеПользователь

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

Как включить вкладки и переход по полям в режиме 1С:Предприятие

У пользователя без конфигуратора две доступные настройки, связанные с табуляцией.

Формы во вкладках

В интерфейсе «Такси» формы по умолчанию открываются закладками внутри главного окна. Если у вас документы открываются отдельными окнами, переключите режим:

  1. Откройте меню с тремя полосками (главное меню) в левом верхнем углу.
  2. Выберите Сервис и настройки → Параметры.
  3. В поле «Режим открытия форм» выберите «В закладках».
  4. Нажмите «Применить» и перезапустите сеанс, если формы не перестроились сразу.

Между открытыми вкладками переключаются клавишами Ctrl+Tab (вперёд) и Ctrl+Shift+Tab (назад). Это удобнее, чем тянуться к мыши при сверке двух документов.

Переход по полям

Внутри формы Tab работает без настроек. Если курсор обходит поля «не туда», пользователь это не исправит: порядок зашит в форму. Варианты такие:

  • 🧑‍💻 типовая конфигурация без изменений — порядок задали разработчики фирмы 1С, менять его стоит только через расширение;
  • 🛠️ доработанная конфигурация — просите программиста поправить порядок элементов формы;
  • 🔄 после обновления порядок «сломался» — значит, в форму добавили новые поля, и их нужно расставить заново.

Курсор в поле с выпадающим списком или выбором из справочника тоже уходит дальше по Tab. Если открылся список выбора — сначала закройте его Esc, потом жмите Tab.

Настройка табуляции в конфигураторе: порядок обхода и ширина отступа

Здесь два разных места: порядок обхода настраивают в редакторе формы, ширину табуляции — в параметрах самого конфигуратора.

Порядок обхода в управляемой форме

В управляемой форме нет отдельной таблицы «порядка обхода». Курсор идёт по дереву элементов сверху вниз — так, как они стоят на вкладке «Элементы» редактора формы. Чтобы изменить порядок:

  1. Откройте форму в конфигураторе (двойной щелчок по форме в дереве объекта).
  2. В левой верхней панели перейдите на вкладку «Элементы».
  3. Выделите поле и двигайте его кнопками со стрелками вверх и вниз на командной панели дерева или перетащите мышью.
  4. Если поле лежит внутри группы, двигается вся группа целиком: сначала курсор обойдёт все поля одной группы, потом перейдёт к следующей.
  5. Сохраните форму и проверьте результат в режиме 1С:Предприятие (F5 — запуск отладки).

Внешний вид формы при этом меняется тоже: управляемая форма строится из того же дерева. Если нужно, чтобы поле стояло справа, а обходилось первым, используйте группы с горизонтальной группировкой: внутри такой группы курсор идёт слева направо.

Порядок обхода в обычной форме

В обычных формах (толстый клиент, старые конфигурации) элементы размещаются на форме координатами, и порядок обхода хранится отдельно.

  1. Откройте обычную форму в редакторе.
  2. Откройте палитру свойств самой формы и найдите флажок «Автоматический порядок обхода».
  3. При включённом флажке платформа сама обходит поля слева направо и сверху вниз. Снимите флажок, чтобы задать порядок вручную.
  4. В меню Форма выберите команду настройки порядка обхода — на элементах появятся номера.
  5. Щёлкайте по элементам в нужной последовательности, номера перестроятся.

Если в конфигурации включена поддержка поставщика, изменение формы снимает её с поддержки или требует включить возможность изменения. При следующем обновлении придётся сравнивать и объединять форму вручную. Для типовых конфигураций надёжнее менять форму через расширение.

Ширина табуляции в редакторе модулей

Второй смысл «настройки табуляции в конфигураторе» — как редактор кода вставляет отступ. Настройка находится в Сервис → Параметры, вкладка «Тексты» (в разных версиях платформы группа настроек может называться немного иначе). Там задаются:

  • 📏 ширина табуляции — сколько позиций занимает один символ табуляции на экране, обычно 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) по слову ТекущийЭлемент быстро покажет такие места.

Частые вопросы

Можно ли сделать, чтобы Enter работал как Tab?
В большинстве полей ввода управляемой формы Enter после ввода значения и так переводит курсор дальше. В табличной части Enter открывает ячейку на редактирование, Tab переводит к следующей колонке.
Меняет ли порядок обхода типовой формы её обновление?
Да. Если форму меняли в самой конфигурации, при обновлении придётся объединять изменения. Перенос правки в расширение избавляет от этого.
Как вставить символ табуляции в текст макета или строку?
В коде — через Символы.Таб. В тексте макета или в поле ввода символ проще скопировать из Блокнота и вставить: клавиша Tab в поле формы переводит фокус, а не печатает символ.
Какую ширину табуляции выбрать в конфигураторе?
Чаще всего ставят 4. Это значение не меняет код, только его отображение у вас на экране, если отступы сделаны символами табуляции.
Влияет ли порядок обхода на веб-клиент?
Да, управляемая форма обходится одинаково в тонком и веб-клиенте: порядок берётся из дерева элементов.