Работа с выводом данных в системах 1С:Предприятие требует не только правильной обработки логики, но и грамотного представления информации пользователю. Часто разработчики сталкиваются с необходимостью превратить «сырые» данные базы в читаемый отчет, красивую печатную форму или корректную строку для выгрузки во внешние системы. Именно здесь на первый план выходит понимание того, как форматировать текст в 1С, используя встроенные механизмы платформы.
Основным инструментом для решения этой задачи является встроенная функция Формат(). Она универсальна и позволяет управлять представлением чисел, дат, булевых значений и строк. Неправильное использование строки формата может привести к ошибкам выполнения или некорректному отображению данных в интерфейсе, что критично для пользовательского опыта. В этой статье мы детально разберем синтаксис, параметры и практические примеры применения.
Помимо программной функции, существует понятие визуального форматирования в макетах и элементах форм. Важно различать эти понятия: функция Формат() меняет само значение переменной типа Строка, тогда как свойства элементов формы влияют только на отображение без изменения типа данных. Понимание этой разницы позволит вам писать более эффективный и поддерживаемый код.
Синтаксис и структура функции Формат
Функция Формат() принимает два основных аргумента: значение, которое необходимо преобразовать, и строку формата, описывающую правила преобразования. Синтаксис выглядит следующим образом: Формат(Значение, СтрокаФормата). Первый параметр может быть любого типа, поддерживаемого платформой, а второй параметр всегда является строкой, содержащей специальные описания.
Строка формата состоит из одной или нескольких частей, разделенных точкой с запятой. Каждая часть описывает формат для определенного типа данных или условия. Если вы передаете число, система будет искать описание для чисел; если дату — для дат. Отсутствие нужного описания приведет к использованию формата по умолчанию, что не всегда соответствует требованиям бизнес-логики.
Внутри строки формата используются ключевые слова и параметры, такие как ЧФ=0 (число формат), ДФ=ДД.ММ.ГГГГ (дата формат) или БФ=Да;Нет (булево формат). Правильная комбинация этих параметров позволяет добиться точного соответствия вывода ожиданиям пользователя или требованиям внешнего контрагента при обмене данными.
⚠️ Внимание: Строка формата чувствительна к регистру букв только в именах собственных параметров, но ключевые слова типа ЧФ, ДФ лучше писать в верхнем регистре для единообразия. Ошибка в написании параметра (например,
чфвместоЧФв некоторых версиях платформы) может привести к игнорированию настройки.
Используйте конструктор формата в редакторе кода 1С (помощник F4), чтобы не запоминать все возможные параметры вручную. Это снижает риск опечаток и ускоряет разработку.
Форматирование числовых данных и валют
Числа в 1С могут иметь различную точность и порядок отображения. Часто требуется вывести сумму с двумя знаками после запятой, разделить тысячи пробелами или указать знак валюты. Для этого в строке формата используется параметр ЧФ (Число Формат). Например, шаблон "ЧФ=2" округлит число до двух знаков, а "ЧФ=2; ЧГ= " добавит пробел как разделитель групп разрядов.
При работе с валютами важно учитывать не только символ, но и его положение относительно числа. В русской локали символ рубля обычно ставится после числа, тогда как доллар — перед ним. Платформа 1С автоматически учитывает настройки региональных стандартов, но их можно переопределить явно. Это особенно актуально при формировании документов для международных партнеров.
Рассмотрим пример форматирования большой суммы с разделителями и знаком валюты:
Сумма = 1234567.89;
СтрокаСуммы = Формат(Сумма, "ЧФ=2; ЧГ=; ДС=руб.");
// Результат: 1 234 567,89 руб.
- 🔢 Параметр
ЧФзадает количество знаков после запятой (дробную часть). - 📏 Параметр
ЧГопределяет символ разделителя групп разрядов (пробел, запятая или отсутствие). - 💰 Параметр
ДСдобавляет строковое обозначение валюты или единицы измерения. - 📉 Параметр
ЧНпозволяет задать символ для отображения отрицательных чисел (скобки или минус).
Если числовое значение равно нулю, иногда требуется вывести прочерк или специальный текст вместо «0,00». Это реализуется через условие в строке формата или дополнительную проверку в коде перед вызовом функции. Гибкость настройки позволяет адаптировать вывод под самые строгие требования бухгалтерской отчетности.
Работа с датами и временем
Форматирование дат является одной из самых частых задач при печати документов. Стандартный вывод даты в 1С может выглядеть как 01.01.2026 00:00:00, что избыточно для большинства печатных форм. Параметр ДФ (Дата Формат) позволяет оставить только нужные компоненты: день, месяц, год или время.
Существует множество кодов для составления шаблона даты. Например, ДД означает день с ведущим нулем, ММ — месяц, ГГГГ — четырехзначный год. Комбинируя их с разделителями (точка, слэш, дефис), можно получить любой привычный формат.
Ниже приведена таблица с наиболее часто используемыми кодами форматирования дат:
| Код | Описание | Пример вывода |
|---|---|---|
ДД |
День месяца (01-31) | 05 |
ММ |
Номер месяца (01-12) | 12 |
ГГ |
Двухзначный год | 24 |
ГГГГ |
Четырехзначный год | 2026 |
ВВ |
Название дня недели | Понедельник |
При работе с временными метками часто возникает необходимость отобразить только время или, наоборот, только дату. Разделение этих компонентов осуществляется через пробел или перенос строки в шаблоне. Также можно использовать параметр ЧС для задания формата времени, аналогично параметру ДФ для даты.
⚠️ Внимание: При передаче даты в строку формата убедитесь, что объект даты не равен
Неопределено. Попытка отформатировать неинициализированную дату вызовет ошибку выполнения программы. Всегда проверяйте значение перед форматированием.
Нюансы високосных годов
Функция Формат автоматически учитывает високосные годы при расчете дней. Вам не нужно писать дополнительную логику для проверки количества дней в феврале, система сделает это корректно на основе переданного значения даты.
Строковые шаблоны и подстановка параметров
Помимо функции Формат(), в языке 1С существует мощный механизм строковых шаблонов. Они позволяют вставлять значения переменных прямо в текст, одновременно применяя к ним форматирование. Это значительно упрощает код, делая его более читаемым по сравнению с множественной конкатенацией строк через оператор +.
Строковый шаблон заключается в кавычки и содержит места для подстановки в фигурных скобках. Внутри скобок указывается имя параметра и, при необходимости, строка формата через двоеточие. Синтаксис выглядит так: СтроковыйШаблон("Текст %Параметр1:ЧФ=2%", Параметр1). Это позволяет сразу получить готовую фразу с отформатированным числом.
Преимущество шаблонов заключается в возможности повторного использования одного и того же параметра несколько раз в одной строке без лишних переменных. Кроме того, платформа автоматически преобразует типы данных в строку, если формат не указан явно, используя настройки по умолчанию. Однако для серьезной разработки явное указание формата является стандартом качества.
ТекстДокумента = СтроковыйШаблон(
"Сумма к оплате: %Сумма:ЧФ=2; ДС=руб.% (%СуммаПрописью%)",
Сумма, СуммаПрописью);
- 📝 Шаблоны поддерживают экранирование символов фигурных скобок двойным введением
{{и}}. - ⚙️ Внутри шаблона можно вызывать функции преобразования, например
%Дата:ДФ=ДД.ММ.ГГГГ%. - 🔄 Параметры передаются в функцию
СтроковыйШаблонв порядке их следования в строке.
Использование шаблонов особенно эффективно при генерации текстов писем, комментариев в документах или формировании сложных заголовков отчетов. Это снижает вероятность ошибок, связанных с пропуском пробелов или неверным порядком склеивания частей строки.
Строковые шаблоны — это современный стандарт работы с текстом в 1С. Они заменяют устаревший метод конкатенации и делают код чище и безопаснее.
Визуальное форматирование в макетах и формах
Когда речь заходит о печатных формах, часто используется понятие форматирования в макетах табличного документа. Здесь настройки применяются не к переменной, а к ячейке или области вывода. Свойства ячеек позволяют задать шрифт, выравнивание, цвет фона и формат отображения данных непосредственно в дизайне макета.
В свойствах поля макета существует параметр «Формат», который принимает строку в том же формате, что и функция Формат(). Это позволяет настроить внешний вид числа или даты один раз в макете, не прописывая логику в модуле объекта. Данные выводятся в ячейку «как есть», а движок табличного документа сам применяет визуальные правила.
Однако стоит учитывать разницу между программным и визуальным форматированием. Если вы планируете дальнейшую обработку строки (например, запись в файл или отправку по HTTP), визуальное форматирование макета не повлияет на исходное значение переменной. В таких случаях необходимо предварительно подготовить строку программно.
⚠️ Внимание: Интерфейс таксис (Такси) и обычные формы могут по-разному отображать некоторые элементы форматирования. Всегда проверяйте результат в той конфигурации интерфейса, которая используется у клиента.
Для сложных отчетов часто комбинируют оба подхода: данные подготавливаются в запросе или коде с базовым форматированием, а в макете настраивается финальный вид (шрифты, границы, цвета). Это дает максимальную гибкость при верстке печатных документов.
☑️ Проверка макета перед печатью
Частые ошибки и способы их устранения
Одной из распространенных ошибок является несоответствие типа данных и строки формата. Попытка применить числовой формат к строковой переменной приведет к тому, что форматирование будет проигнорировано, и вы получите исходное значение. Всегда приводите типы данных к ожидаемым перед вызовом функции форматирования.
Другая проблема связана с локалью системы. Символ десятичного разделителя (точка или запятая) зависит от настроек операционной системы пользователя. Если жестко задать разделитель в коде, на компьютерах с другой локалью отчет может выглядеть некорректно. Лучше использовать стандартные параметры формата, которые адаптируются под среду выполнения.
Также разработчики часто забывают экранировать специальные символы внутри строковых шаблонов. Если в тексте нужен символ процента % или фигурная скобка {, их необходимо дублировать. Иначе интерпретатор попытается найти параметр с таким именем и выдаст ошибку подстановки.
Для отладки сложных строк формата удобно использовать обработку «Консоль запросов» или отладчик 1С. Вы можете выполнить функцию Формат() в режиме отладки и сразу увидеть результат в панели переменных. Это экономит время по сравнению с постоянной перезагрузкой формы или перепечаткой документа.
Секрет производительности
Вызов функции Формат внутри циклов с большим количеством итераций может незначительно замедлить работу. Если форматирование статическое, вынесите его за пределы цикла или используйте предзаготовленные строки.
FAQ: Часто задаваемые вопросы
Как убрать лишние нули в конце дробной части числа?
Для этого в строке формата используется символ # вместо 0. Например, шаблон "ЧФ=#.##" выведет число 10.50 как "10.5", а число 10.00 как "10". Символ решетки указывает, что разряд отображается только если он значащий.
Можно ли форматировать перечисления в 1С?
Да, перечисления форматируются как строки. По умолчанию выводится имя элемента перечисления. Если нужно вывести синоним или другое представление, это настраивается в свойствах метаданных или через функцию Представление() перед форматированием.
Почему дата форматируется с временем, хотя я указал только дату?
Проверьте строку формата. Если параметр ДФ не содержит времени, но объект даты имеет ненулевое время, оно может отобразиться, если не задано жесткое ограничение. Убедитесь, что в шаблоне нет кодов времени (ЧЧ, ММ для минут, СС), и при необходимости обнулите время в объекте даты перед передачей.
Как отформатировать число в валюту другого государства?
Используйте параметр ДС для ручного указания символа валюты (например, "ДС=$"). Для автоматического учета курса и формата конкретной валюты необходимо использовать тип данных ДенежнаяСумма, который содержит ссылку на вид валюты, и функция Формат() сама подставит нужный символ и порядок.
Работает ли форматирование в веб-клиенте так же, как в толстом?
Да, функция Формат() и строковые шаблоны работают идентично во всех клиентах платформы 1С:Предприятие (тонкий, толстый, веб). Различия могут быть только в визуальном отображении шрифтов в элементах форм, но не в логике преобразования данных в строку.