Форматная строка — содержит описание способа представления значения в строковом виде.
Форматная строка используется для форматирования данных следующих типов:
Форматная строка используется при форматировании значений функцией Формат(), а также во встроенных выражениях функций Шаблон() и ФиксШаблон().
Обобщенный синтаксис форматной строки
Форматная строка содержит обязательное описание типа данных и дополнительные параметры форматирования:
[#]Тип [Параметры]
Имя параметра | Тип | Описание | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
# | Строка | Символ решетки используется для непосредственного форматирования значения во встроенных выражениях функций Шаблон() и ФиксШаблон(). | ||||||||||||
Тип* | Строка | Определяет тип форматируемого значения. Может принимать одно из следующих значений:
Если форматируемое значение имеет тип, отличный от типа, указанного в форматной строке, будет выполнено неявное преобразование типа согласно принятым правилам |
||||||||||||
Параметры | Строка | Дополнительные параметры форматирования. Состав параметров определяется выбранным типом | ||||||||||||
* — обязательный параметр |
Рассмотрим параметры для каждого типа подробнее…
Параметры для типа Дата
Д [Шаблон]
Элемент | Описание | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Шаблон | Определяет предопределенный вариант представления даты. Может принимать следующие значения:
|
|||||||||||||||||||||||||||||||||||||||
* — обязательный параметр |
Пример использования форматной строки 1с 7.7 для форматирования даты:
Сообщить(Формат(ТекущаяДата(), "Д ММММГГ")); //результат: // Июнь 14 г. Сообщить(Шаблон("[ТекущаяДата()#Д MMMMYYYY]")); //результат: // Июнь 2014 г.
Параметры для типа Число
Для числовых значений предусмотрено два варианта представления:
- цифровой прописью:
Ч[(0)][0]Длина[.Точность][>Сдвиг][Точка][Триада]
- символьной прописью:
ЧП[Д][С]
При составлении форматной строки следует соблюдать указанную последовательность параметров. В таблице ниже приведено подробное описание всех параметров:
Параметры цифровой прописи
Элемент | Описание |
---|---|
(0) | Задает заполнение недостающих символов нулями слева
Сообщить(Формат(120, "Ч(0)15.2")); //результат: // 000000000120.00 |
0 | Отключает вывод нулевых значений. Вместо 0 (ноля) выводится пустая строка. Вместо ноля можно задать свой символ представления нулевого значения, например — (прочерк)
Сообщить(Формат(0, "Ч-15.2")); //результат: // - |
Длина* | Целое положительное число, которое определяет общую длину представления значения, включая целую и дробную части, а также все разделители
Сообщить(Формат(120, "Ч(0)10.2")); //результат: // 0000120.00 |
.Точность | Целое положительное число, которое определяет количество знаков после десятичной точки (точность округления числового значения)
Сообщить(Формат(120, "Ч10.3")); //результат: // 120.000 |
>Сдвиг | Целое положительное число, которое определяет сдвиг разрядов представления значения. Например, миллиард можно вывести как тысячи миллионов
Сообщить(Шаблон("[12000000000#Ч15>6 ] млн")); //результат: // 12 000 млн |
Точка | Символ задает вид разделителя целой и дробной части. По умолчанию это . (точка), но можно определить и свой разделитель. В качестве разделителя можно указывать любой нецифровой символ
Сообщить(Формат(120, "Ч10.3`")); //результат: // 120`000 |
Триада | Символ задает вид разделителя триад (группы по 3 цифры) целой части. В качестве разделителя можно указывать любой нецифровой символ
Сообщить(Формат(12000, "Ч10.2= ")); //результат: // 12 000=00 |
* — обязательный параметр |
Параметры символьной прописи
Элемент | Element | Описание |
---|---|---|
П* | S* | Задает представление числа прописью
Сообщить(Формат(1200, "ЧП")); //результат: // Одна тысяча двести |
Д | M | Задает вывод наименования денежной единицы (только рубли)
Сообщить(Формат(1200, "ЧПД")); //результат: // Одна тысяча двести рублей |
С | H | Задает вывод дробной части, т.е. копеек
Сообщить(Формат(1200, "ЧПДС")); //результат: // Одна тысяча двести рублей 00 копеек |
* — обязательный параметр |
Внимание!
Если Вы допустили ошибку в шаблоне, то результатом будет максимально возможное значение!!!
Параметры для типа Строка
С [Длина]
Элемент | Описание |
---|---|
Длина | Ограничивает длину получаемой строки |
* — обязательный параметр |
Пример использования форматной строки 1с 7.7 для форматирования строк:
НазваниеГорода = "Иваново"; Сообщить(Формат(НазваниеГорода, "С6")); //результат: // Иванов Сообщить(Шаблон("[НазваниеГорода#С6]")); //результат: // Иванов
А как сделать формат отрицательного числа, чтобы при выводе оно выходило красным?
Андрей, функция
Формат()
не умеет этого делать. За раскраску текста отвечает ячейка таблицы, в которую Вы выводите полученное значение. Смотрите свойства ячейки таблицы:Контроль = "Забивать+Красным"
Добрый день! В 1с 7.7. при выводе на печать в ТТН программа убирает 0, если он стоит вторым знаком после запятой. Например, 1,70 печатает 1,7. Как это можно исправить? Спасибо.
Наталья, есть два варианта, где форматируется строка:
Если случай первый, найдите в макете нужную ячейку и попробуйте указать следующие варианты:
глФРМ(ПечСумма)
. Только заменитеПечСумма
на имя Вашей переменной.ПечСумма #Ч015.2
Если предложенные варианты не помогли, верните все назад и ищите в коде место, где формируется переменная, указанная в ячейке. Ее нужно будет заменить на такую функцию:
Формат(ПечСумма, "Ч015.2")
Как-то так. Удачи!
Здравствуйте! Конфигурация, думаю, очень нетиповая (я из Беларуси). Нашла в глобальном модуле некую процедуру, которая «форматирует число оставляя после точки минимальное количество знаков». Думаю, что дело в использовании этой функции. Только вот не знаю, как всё изменить. Может быть можно Вам куда-нибудь отправить PrintScreen страницы с этим алгоритмом?
Функция Сокр0(ЧислоСтр) Экспорт
// Функция форматирует число оставляя после точки
// минимальное количество знаков
Стр = СокрЛП(ЧислоСтр);
iТочки = 0;
iЦифры = 0;
i = СтрДлина(Стр);
// Сканировать строку до точки
Пока i>=0 Цикл
// выделить символ
Сим = Сред (Стр, i, 1);
Если (Сим=".") Тогда // Наткнулись на точку
iТочки = i;
Прервать;
КонецЕсли;
Если (Сим"0") И (iЦифры=0) Тогда // Наткнулись на цифру, но впервые
iЦифры = i;
КонецЕсли;
i = i - 1;
КонецЦикла;
Если iТочки > 0 Тогда // Да, точка имеется
// убрать до целой части
Стр = Лев (Стр, ?(iЦифры>iТочки, iЦифры, iТочки-1));
КонецЕсли;
Возврат Стр;
КонецФункции
Наталья, можете просто в макете ТТН для поля сумма убрать Сокр0(). По идее, этого д.б. достаточно, чтобы оставались нули.
Александр, спасибо за поддержку! 🙂 Я пошла другим путем. В счетах у меня все суммы печатаются корректно, поэтому я изменила в макете ТТН форматы по образу и подобию счета. Вроде всё печатается нормально. Еще раз спасибо за потраченное время.