Отступы в 1С:Предприятие — казалось бы, простая задача, которая на практике вызывает вопросы у разработчиков и пользователей. В зависимости от контекста (текстовый документ, управляемая форма, печатная форма или исходный код) способы создания отступов кардинально отличаются. Где-то достаточно нажать Tab, а где-то требуется писать программный код или настраивать свойства объектов.
В этой статье разберём 5 основных способов сделать отступ в 1С 8.3 и 1С 8.2, включая нюансы для разных режимов работы (тонкий клиент, веб-клиент, толстый клиент). Особый акцент сделаем на программное управление отступами в динамически формируемых документах, где стандартные инструменты интерфейса недоступны.
1. Отступы в текстовых документах (Word, PDF, HTML)
Если вы работаете с текстовыми полями в 1С (например, в печатных формах или отчётах), отступы можно задать несколькими способами:
- 📝 Ручной ввод пробелов/табуляции — простейший метод, но неудобный для массового применения. Подходит для разовых правок в
ТекстДокумента. - 🔧 Свойства абзаца — в макетах печатных форм (
.mxlили.ert) можно настроить отступы через параметры абзаца (аналог Microsoft Word). - 💻 Программное форматирование — для динамических документов используйте методы
УстановитьОтступПервойСтроки()илиУстановитьЛевыйОтступ().
Пример кода для программного отступа в текстовом документе:
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку("Пример текста с отступом");
Текст.УстановитьЛевыйОтступ(30); // Отступ 30 мм
Текст.ДобавитьСтроку("Эта строка будет с отступом");
⚠️ Внимание: В веб-клиенте 1С отступы, заданные через ТекстовыйДокумент, могут отображаться некорректно. Для веб используйте HTML-разметку или CSS-свойства в макетах.
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)
При написании кода в 1С отступы используются для:
- 📜 Читаемости кода — стандартный отступ 4 пробела (или табуляция).
- 🔄 Условных операторов — автоматические отступы в конструкциях
Если...ТогдаилиЦикл. - 🛠️ Шаблонов кода — настройка в конфигураторе (
Сервис → Параметры → Редактор текстов).
Пример корректного форматирования кода с отступами:
Процедура ПримерОтступов()
Если Условие1 Тогда
// Отступ 4 пробела для тела условия
Сообщить("Выполнено условие 1");
ИначеЕсли Условие2 Тогда
Сообщить("Выполнено условие 2");
КонецЕсли;
КонецПроцедуры
В конфигураторе 1С нажмите Ctrl+Alt+L для автоматического форматирования кода с правильными отступами.
5. Отступы в табличных документах
В объектах типа ТабличныйДокумент отступы настраиваются через:
- 📊 Свойства ячеек —
ОтступТекстаСлева,ОтступТекстаСверху. - 🔍 Объединённые ячейки — отступы внутри объединённых областей.
- 📌 Привязка к данным — динамическое изменение отступов в зависимости от значений.
Пример кода для настройки отступа в табличном документе:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ВывестиСтроку("Заголовок");
ТабДок.Область(1,1).ОтступТекстаСлева = 20; // Отступ 20 мм
6. Типичные ошибки и их решения
При работе с отступами в 1С пользователи часто сталкиваются с проблемами:
- 🚫 Отступы не сохраняются — проверьте права доступа к макету или форме.
- 🖥️ Разное отображение в клиентах — тестируйте в тонком и веб-клиенте отдельно.
- 📏 Несоответствие единиц измерения — в макетах используйте миллиметры, в формах — пиксели.
Решение для ошибки "Отступы сбрасываются при обновлении":
// Сохраняем отступы в реквизит формы
Процедура ПриСозданииНаСервере(Отказ)
ОтступыПользователя = ПолучаемОтступыИзХранилища(); // Ваша функция
Для Каждого Элемент Из ЭлементыФормы Цикл
Если ОтступыПользователя.Содержит(Элемент.Имя) Тогда
Элемент.ОтступСлева = ОтступыПользователя[Элемент.Имя];
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Для критичных отступов (например, в печатных формах документов) всегда используйте программную фиксацию значений, а не только визуальные настройки макета.
7. Отступы в отчётах и СКД
В системе компоновки данных (СКД) отступы настраиваются:
- 📈 Через свойства полей — параметр
Отступв настройках колонки. - 🔧 В пользовательских полях — добавление пробелов или HTML-тегов (
). - 🖼️ В макетах оформления — через CSS-свойства (для вывода в HTML).
Пример добавления отступа в СКД:
// В обработчике ПриКомпоновкеРезультата
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
Для Каждого Строка Из ДанныеРасшифровки.Выборка Цикл
Строка.Текст = " " + Строка.Текст; // Добавляем 4 пробела
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: В отчётах с большим объёмом данных программные отступы (добавление пробелов) могут значительно увеличить размер итогового файла (PDF/Excel).
FAQ: Частые вопросы по отступам в 1С
Как сделать отступ в печатной форме для конкретной строки?
Используйте метод УстановитьЛевыйОтступ() для объекта ТекстовыйДокумент или настройте отступ непосредственно в макете (.mxl) через свойство <ОтступСлева> для нужной ячейки. Пример:
Макет.Область("Строка1").ОтступСлева = 15;
Почему отступы в веб-клиенте отображаются не так, как в тонком?
Веб-клиент 1С использует HTML/CSS для рендеринга форм, где пиксели и миллиметры могут интерпретироваться по-разному. Решение:
- Используйте относительные единицы (проценты).
- Тестируйте отображение в разных браузерах.
- Для критических случаев создайте отдельные макеты под веб.
Можно ли сделать отступ в таблице значений?
В самой ТаблицаЗначений отступов нет, но вы можете:
- Добавить столбец с пробелами (
" "). - Использовать
ТекстовыйДокументдля вывода таблицы с отступами. - Настроить отображение через
ПолеHTMLДокумента.
Как убрать автоматические отступы в конфигураторе?
Автоматические отступы включаются в Сервис → Параметры → Редактор текстов. Чтобы отключить:
- Снимите галочку
Автоматически форматировать код. - Используйте горячие клавиши
Shift+Tabдля удаления отступов.
Где хранятся настройки отступов для печатных форм?
Настройки хранятся:
- В файлах макетов (
.mxl,.ert) — для статических отступов. - В модулях объектов — для динамических отступов (код на встроенном языке).
- В базе данных — если отступы сохраняются в справочниках или регистрах.
Для резервного копирования экспортируйте макеты через Файл → Сохранить данные как....