Отступы в 1С:Предприятие — казалось бы, простая задача, которая на практике вызывает вопросы у разработчиков и пользователей. В зависимости от контекста (текстовый документ, управляемая форма, печатная форма или исходный код) способы создания отступов кардинально отличаются. Где-то достаточно нажать Tab, а где-то требуется писать программный код или настраивать свойства объектов.

В этой статье разберём 5 основных способов сделать отступ в 1С 8.3 и 1С 8.2, включая нюансы для разных режимов работы (тонкий клиент, веб-клиент, толстый клиент). Особый акцент сделаем на программное управление отступами в динамически формируемых документах, где стандартные инструменты интерфейса недоступны.

1. Отступы в текстовых документах (Word, PDF, HTML)

Если вы работаете с текстовыми полями в (например, в печатных формах или отчётах), отступы можно задать несколькими способами:

  • 📝 Ручной ввод пробелов/табуляции — простейший метод, но неудобный для массового применения. Подходит для разовых правок в ТекстДокумента.
  • 🔧 Свойства абзаца — в макетах печатных форм (.mxl или .ert) можно настроить отступы через параметры абзаца (аналог Microsoft Word).
  • 💻 Программное форматирование — для динамических документов используйте методы УстановитьОтступПервойСтроки() или УстановитьЛевыйОтступ().

Пример кода для программного отступа в текстовом документе:

Текст = Новый ТекстовыйДокумент;

Текст.ДобавитьСтроку("Пример текста с отступом");

Текст.УстановитьЛевыйОтступ(30); // Отступ 30 мм

Текст.ДобавитьСтроку("Эта строка будет с отступом");

⚠️ Внимание: В веб-клиенте отступы, заданные через ТекстовыйДокумент, могут отображаться некорректно. Для веб используйте HTML-разметку или CSS-свойства в макетах.
📊 Какой клиент 1С вы используете чаще?
Толстый клиент
Тонкий клиент
Веб-клиент
Мобильное приложение

2. Отступы в управляемых формах

В управляемых формах отступы настраиваются через свойства элементов или контейнеров. Ключевые инструменты:

  • 🎨 Свойство ОтступСлева/ОтступСверху — задаёт фиксированный отступ элемента от границ контейнера (в пикселях).
  • 📏 Группировки и панели — используйте ГруппаФормы с настройкой Отступы для массового применения.
  • 🔄 Динамические отступы — изменяйте свойства элементов программно в обработчиках событий (например, ПриИзменении).

Пример динамического изменения отступа кнопки:

Процедура Кнопка1ПриИзменении(Элемент)

ЭлементыФормы.Кнопка2.ОтступСлева = 50; // Сдвигаем кнопку вправо на 50 пикселей

КонецПроцедуры

Свойство Описание Пример значения
ОтступСлева Отступ элемента от левой границы контейнера 20 (пиксели)
ОтступСверху Отступ от верхней границы 10
ОтступСправа Отступ от правой границы (для выравнивания) 15
Отступы (для группы) Массовая настройка отступов для всех элементов группы "10, 5, 10, 5" (лево, верх, право, низ)

Проверьте свойства контейнера (группы формы)|Установите отступы для отдельных элементов|Используйте пиксели, а не миллиметры|Тестируйте отображение в разных клиентах (тонкий/веб)|-->

3. Отступы в макетах печатных форм

В макетах (.mxl или .ert) отступы настраиваются через:

  • 📄 Свойства ячеек таблицы — отступы внутри ячейки (аналог Excel).
  • 🖼️ Позиционирование объектов — координаты X и Y для текста, линий, картинок.
  • 🔗 Привязка к данным — динамические отступы через выражения (например, =Если(Условие; 10; 0)).

Пример настройки отступа в макете .mxl:

<Ячейка>

<ОтступСлева>15</ОтступСлева>

<Текст>Пример текста</Текст>

</Ячейка>

⚠️ Внимание: В макетах 1С:Комплексная автоматизация и 1С:ERP отступы могут сбрасываться при обновлении конфигурации. Фиксируйте настройки в отдельных обработках.

4. Отступы в программном коде (1C:Enterprise)

При написании кода в отступы используются для:

  • 📜 Читаемости кода — стандартный отступ 4 пробела (или табуляция).
  • 🔄 Условных операторов — автоматические отступы в конструкциях Если...Тогда или Цикл.
  • 🛠️ Шаблонов кода — настройка в конфигураторе (Сервис → Параметры → Редактор текстов).

Пример корректного форматирования кода с отступами:

Процедура ПримерОтступов()

Если Условие1 Тогда

// Отступ 4 пробела для тела условия

Сообщить("Выполнено условие 1");

ИначеЕсли Условие2 Тогда

Сообщить("Выполнено условие 2");

КонецЕсли;

КонецПроцедуры

💡

В конфигураторе 1С нажмите Ctrl+Alt+L для автоматического форматирования кода с правильными отступами.

5. Отступы в табличных документах

В объектах типа ТабличныйДокумент отступы настраиваются через:

  • 📊 Свойства ячеекОтступТекстаСлева, ОтступТекстаСверху.
  • 🔍 Объединённые ячейки — отступы внутри объединённых областей.
  • 📌 Привязка к данным — динамическое изменение отступов в зависимости от значений.

Пример кода для настройки отступа в табличном документе:

ТабДок = Новый ТабличныйДокумент;

ТабДок.ВывестиСтроку("Заголовок");

ТабДок.Область(1,1).ОтступТекстаСлева = 20; // Отступ 20 мм

6. Типичные ошибки и их решения

При работе с отступами в пользователи часто сталкиваются с проблемами:

  • 🚫 Отступы не сохраняются — проверьте права доступа к макету или форме.
  • 🖥️ Разное отображение в клиентах — тестируйте в тонком и веб-клиенте отдельно.
  • 📏 Несоответствие единиц измерения — в макетах используйте миллиметры, в формах — пиксели.

Решение для ошибки "Отступы сбрасываются при обновлении":

// Сохраняем отступы в реквизит формы

Процедура ПриСозданииНаСервере(Отказ)

ОтступыПользователя = ПолучаемОтступыИзХранилища(); // Ваша функция

Для Каждого Элемент Из ЭлементыФормы Цикл

Если ОтступыПользователя.Содержит(Элемент.Имя) Тогда

Элемент.ОтступСлева = ОтступыПользователя[Элемент.Имя];

КонецЕсли;

КонецЦикла;

КонецПроцедуры

💡

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

7. Отступы в отчётах и СКД

В системе компоновки данных (СКД) отступы настраиваются:

  • 📈 Через свойства полей — параметр Отступ в настройках колонки.
  • 🔧 В пользовательских полях — добавление пробелов или HTML-тегов (&nbsp;).
  • 🖼️ В макетах оформления — через CSS-свойства (для вывода в HTML).

Пример добавления отступа в СКД:

// В обработчике ПриКомпоновкеРезультата

Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)

Для Каждого Строка Из ДанныеРасшифровки.Выборка Цикл

Строка.Текст = " " + Строка.Текст; // Добавляем 4 пробела

КонецЦикла;

КонецПроцедуры

⚠️ Внимание: В отчётах с большим объёмом данных программные отступы (добавление пробелов) могут значительно увеличить размер итогового файла (PDF/Excel).

FAQ: Частые вопросы по отступам в 1С

Как сделать отступ в печатной форме для конкретной строки?

Используйте метод УстановитьЛевыйОтступ() для объекта ТекстовыйДокумент или настройте отступ непосредственно в макете (.mxl) через свойство <ОтступСлева> для нужной ячейки. Пример:

Макет.Область("Строка1").ОтступСлева = 15;
Почему отступы в веб-клиенте отображаются не так, как в тонком?

Веб-клиент использует HTML/CSS для рендеринга форм, где пиксели и миллиметры могут интерпретироваться по-разному. Решение:

  • Используйте относительные единицы (проценты).
  • Тестируйте отображение в разных браузерах.
  • Для критических случаев создайте отдельные макеты под веб.
Можно ли сделать отступ в таблице значений?

В самой ТаблицаЗначений отступов нет, но вы можете:

  • Добавить столбец с пробелами (" ").
  • Использовать ТекстовыйДокумент для вывода таблицы с отступами.
  • Настроить отображение через ПолеHTMLДокумента.
Как убрать автоматические отступы в конфигураторе?

Автоматические отступы включаются в Сервис → Параметры → Редактор текстов. Чтобы отключить:

  1. Снимите галочку Автоматически форматировать код.
  2. Используйте горячие клавиши Shift+Tab для удаления отступов.
Где хранятся настройки отступов для печатных форм?

Настройки хранятся:

  • В файлах макетов (.mxl, .ert) — для статических отступов.
  • В модулях объектов — для динамических отступов (код на встроенном языке).
  • В базе данных — если отступы сохраняются в справочниках или регистрах.

Для резервного копирования экспортируйте макеты через Файл → Сохранить данные как....