В экосистеме 1С: Предприятие существует мощный механизм, позволяющий управлять отображением данных без написания громоздкого программного кода. Этот инструмент называется форматная строка. Она представляет собой специальный текстовый шаблон, который система интерпретирует для преобразования значений различных типов данных в человекочитаемый вид. Использование этого подхода является стандартом качественной разработки и позволяет гибко настраивать внешний вид отчетов, печатных форм и элементов интерфейса.
Основная ценность данного механизма заключается в его универсальности. Разработчику не нужно писать отдельные функции для форматирования даты, числа или булевого значения в каждом конкретном случае. Достаточно один раз изучить синтаксис модификаторов и применять их в свойствах объектов метаданных или в коде. Это существенно ускоряет процесс создания конфигураций и упрощает их дальнейшую поддержку.
⚠️ Внимание: Неправильно составленная форматная строка не вызовет ошибку выполнения программы, но приведет к некорректному отображению данных (например, даты будут выглядеть как числа), что трудно отследить при тестировании.
Синтаксис и базовые принципы построения
Структура форматной строки в 1С подчиняется строгим правилам, нарушение которых делает шаблон нерабочим. Она всегда начинается с ключевого слова БФ (или БФ=), что расшифровывается как "Без Формулы" или "Без Форматирования" в контексте выражений, но в данном случае служит маркером начала описания. После этого следует список параметров, разделенных точкой с запятой. Каждый параметр имеет вид Имя=Значение.
Параметры могут задавать контекст локализации, порядок следования полей и конкретные настройки для каждого поля. Система анализирует строку слева направо, применяя настройки последовательно. Если какой-то параметр не указан, используется значение по умолчанию, заданное в конфигурации или системных настройках пользователя.
⚠️ Внимание: Регистр букв в именах параметров (например, ДФ для даты или ЧДЦ для числа) имеет критическое значение. Написание
дфвместоДФприведет к игнорированию параметра.
Рассмотрим простейший пример, который задает формат для даты:
БФ=ДФ="ДД.ММ.ГГГГ"
В данном случае мы явно указываем системе, что день, месяц и год должны отображаться в двухзначном и четырехзначном формате соответственно. Использование кавычек обязательно, если значение параметра содержит специальные символы или пробелы.
Работа с датами и временем
Форматирование временных меток является одной из самых востребованных задач в прикладном программировании. Для управления отображением дат используется модификатор ДФ (Дата Формат). Внутри кавычек этого модификатора можно использовать различные символы-заполнители, которые система заменит на реальные значения из объекта типа Date.
Наиболее распространенные спецификаторы включают ДД для дня, ММ для месяца и ГГГГ для года. Также доступны сокращенные варианты, такие как Д (день без ведущего нуля) или М. Для работы с временем используются символы ЧЧ (часы), ММ (минуты) и СС (секунды). Важно не путатьMinutes и Months, так как контекст обычно понятен из положения в строке.
Система также поддерживает текстовое представление месяцев и дней недели. Например, использование МФ выведет полное название месяца ("Январь"), а МС — сокращенное ("Янв"). Это особенно полезно при формировании заголовковperiodic отчетов или печатных накладных, где требуется строгое соответствие деловому стилю.
Для отображения даты в формате "1 января 2026 г." используйте строку: БФ=ДФ="ДД МФ ГГГГ 'г'". Одинарные кавычки внутри строки позволяют выводить статический текст.
Если необходимо отобразить только время, игнорируя дату, достаточно указать соответствующие спецификаторы времени. Однако стоит помнить, что тип данных остается датой, и арифметические операции над ним будут учитывать полную структуру значения, включая скрытую часть даты.
Настройка отображения чисел и валют
Числовые данные требуют особого подхода к форматированию, особенно в финансовых приложениях. Основным инструментом здесь выступает модификатор ЧФ (Число Формат). Он позволяет контролировать количество знаков после запятой, использование разделителей групп разрядов и отображение знака числа.
Ключевым параметром является ЧДЦ (Число Дробных Знаков). Установив его значение в 2, вы гарантируете, что число всегда будет иметь два знака после запятой, даже если они нулевые. Это критически важно для отображения сумм в валютах, где отсутствие копеек может вызвать вопросы у бухгалтерии.
Для управления разделителями используется параметр ЧРГ (Число Разделитель Групп). В русской локали по умолчанию используется пробел, но при необходимости его можно изменить или отключить. Также доступен параметр ЧВ (Число Вид), который определяет, как отображать отрицательные числа: со знаком минус, в скобках или цветом.
| Параметр | Описание | Пример значения |
|---|---|---|
ЧДЦ |
Количество знаков после запятой | ЧДЦ=2 |
ЧРГ |
Разделитель групп разрядов | ЧРГ=" " (пробел) |
ЧВ |
Способ отображения знака | ЧВ=ЧислоВид.ВСКобках |
ЧН |
Заполнение нулями слева | ЧН=5 (всегда 5 знаков) |
При работе с валютами часто возникает необходимость отображать символ денежной единицы. Это делается через параметр ЧЕ (Число Единица). Вы можете жестко задать символ, например руб. или $, либо использовать предустановленные константы системы. Это избавляет от необходимости конкатенировать строки в коде отчета.
⚠️ Внимание: При изменении региональных настроек операционной системы пользователя символы разделителей (запятая или точка) могут измениться автоматически. Форматная строка должна учитывать этот фактор или явно задавать разделитель дробной части.
☑️ Проверка числового формата
Форматирование булевых значений и перечислений
Хотя булевы значения (Истина/Ложь) кажутся простыми, в пользовательском интерфейсе их часто требуется представлять в более понятном виде, например, "Да/Нет", "Оплачено/Не оплачено" или с помощью графических образов. Для этого предназначен модификатор БФ (Булево Формат), который работает аналогично другим типам.
Вы можете задать отдельные строки для значения Истина и Ложь. Это позволяет адаптировать текст под конкретную бизнес-логику документа. Например, в документе "Реализация" поле "Проведен" может отображаться как "Активен", а в задаче — как "Выполнено".
Для типов данных Перечисление система по умолчанию выводит синоним значения. Однако, если требуется специфическое отображение, можно использовать форматную строку с модификатором СФ (Строка Формат) или явное преобразование в коде. Часто разработчики комбинируют форматные строки с условным оформлением для выделения цветом определенных статусов.
Интересной возможностью является использование специальных символов или коротких кодов вместо полных слов. Это экономит место в узких колонках табличных документов. Например, статус "В работе" можно сократить до маркера или первой буквы, если контекст позволяет пользователю однозначно понять значение.
Использование в табличных документах и СКД
Наиболее мощное применение форматные строки находят в системе компоновки данных (СКД). Здесь они позволяют задавать оформление целых полей вывода на уровне схемы запроса или настроек отчета. Это означает, что один и тот же запрос может выдавать данные в разных форматах в зависимости от выбранной пользователем настройки отображения.
В табличных документах форматная строка присваивается свойству Формат области или ячейки. Это особенно удобно при динамическом формировании отчетов, когда структура макета заранее неизвестна. Вы можете передавать формат как параметр в процедуру вывода, делая код универсальным.
При использовании в СКД важно помнить о приоритетах. Формат, заданный непосредственно в поле вывода макета, может переопределить формат, заданный в выражении поля. Это дает гибкость, но требует внимательности при отладке, если данные отображаются не так, как ожидалось.
Секрет динамического форматирования
Вы можете передавать форматную строку как параметр в запрос СКД. Это позволяет пользователю выбирать формат отображения (например, с валютой или без) через интерфейс настроек отчета без изменения кода.
Для сложных отчетов, где в одной колонке могут находиться данные разных типов (например, итоговая строка содержит текст, а остальные — числа), используется условное оформление в связке с форматными строками. Это позволяет применять разные шаблоны форматирования к разным строкам одной и той же колонки.
Частые ошибки и рекомендации по оптимизации
Одной из распространенных ошибок является избыточность. Разработчики часто указывают параметры, которые уже установлены по умолчанию в конфигурации. Это не вызывает ошибок, но делает строку громоздкой и трудной для чтения. Рекомендуется использовать краткие формы записи там, где это возможно.
Другая проблема — игнорирование локали. Жестко заданные разделители (например, точка вместо запятой) могут привести к тому, что на компьютере пользователя с английской локалью число будет воспринято некорректно или отображено странно. Всегда проверяйте поведение отчетов на системах с разными региональными настройками.
При отладке сложных форматов полезно выводить саму форматную строку в отладчик или сообщение пользователю, чтобы убедиться в отсутствии опечаток. Лишний пробел внутри кавычек или пропущенная точка с запятой могут полностью изменить результат работы.
Оптимальная форматная строка должна быть минимально необходимой, явно задавать только отличия от стандарта и учитывать региональные настройки пользователя.
Следует также избегать хардкодинга форматных строк внутри программного кода, если они могут быть вынесены в свойства метаданных или параметры СКД. Это упрощает изменение логики отображения в будущем без необходимости перекомпиляции модулей.
Можно ли использовать форматную строку для типа "Строка"?
Да, для строкового типа существует модификатор СФ (Строка Формат). Он позволяет задавать длину вывода, выравнивание (по левому или правому краю) и способ обрезки длинных строк. Например, СФ=ССтр=10; СВыр=Право обрежет строку до 10 символов и выровняет её по правому краю.
Как отобразить текущую дату в заголовке отчета?
Для этого не нужна сложная логика. В параметре макета или в свойстве заголовка таблицы укажите форматную строку для даты: БФ=ДФ="ДД.ММ.ГГГГ". Если дата берется из системного времени, она автоматически подставится в указанном формате при генерации отчета.
Что делать, если форматная строка игнорируется?
Проверьте три вещи: правильность ключевого слова в начале (БФ=), отсутствие лишних пробелов вокруг знаков равенства и соответствие типов данных. Если вы применяете формат числа к строковой переменной, система просто проигнорирует настройки числа.
Можно ли переносить форматную строку на новую строку в коде?
В коде 1С строковые литералы нельзя разрывать без специальных символов конкатенации. Если форматная строка получилась очень длинной, используйте оператор + для соединения частей, но следите, чтобы разрыв не приходился на середину ключевого параметра или значения в кавычках.