8

Приложение В: Структура форматной строки

Форматная строка — содержит описание способа представления значения в строковом виде.

Форматная строка используется для форматирования данных следующих типов:

Форматная строка используется при форматировании значений функцией Формат(), а также во встроенных выражениях функций Шаблон() и ФиксШаблон().

Обобщенный синтаксис форматной строки

Форматная строка содержит обязательное описание типа данных и дополнительные параметры форматирования:

[#]Тип [Параметры]
Имя параметра Тип Описание
# Строка Символ решетки используется для  непосредственного форматирования значения во встроенных выражениях функций Шаблон() и ФиксШаблон().
Тип* Строка Определяет тип форматируемого значения. Может принимать одно из следующих значений:

Значение Value Описание
Д D форматировать как дату
Ч N форматировать как число
С S форматировать как строку

Если форматируемое значение имеет тип, отличный от типа, указанного в форматной строке, будет выполнено неявное преобразование типа согласно принятым правилам

Параметры Строка Дополнительные параметры форматирования. Состав параметров определяется выбранным типом
* — обязательный параметр

Рассмотрим параметры для каждого типа подробнее…

Параметры для типа Дата

Д [Шаблон]
Элемент Описание
Шаблон Определяет предопределенный вариант представления даты. Может принимать следующие значения:

Шаблон Результат Пояснение
ДДММГГ
DDMMYY
01.01.11 Представление даты в формате: день . месяц . двухзначное обозначение года
ДДММГГГГ
DDMMYYYY
01.01.2011 Представление даты в формате: день . месяц . четырехзначное обозначение года
ДДММММГГГГ
DDMMMMYYYY
1 Января 2011 г. Представление даты в формате: день + месяц прописью + четырехзначное обозначение года. День месяца представлен без ведущих нолей
(0)ДДММММГГГГ
(0)DDMMMMYYYY
01 Января 2011 г. Представление даты в формате: день + месяц прописью + четырехзначное обозначение года. День месяца представлен с ведущими нолями
ММММГГ
MMMMYYYY
Январь 2011 г. Представление даты в формате: месяц прописью + двухзначное обозначение года
ММММГГГГ
MMMMYYYY
Январь 2011 г. Представление даты в формате: месяц прописью + четырехзначное обозначение года
ММММ
MMMM
Январь Представление даты в формате: месяц прописью
ККККГГ
QQQQYY
1 Квартал 11 г. Представление даты в формате: номер квартала прописью + двухзначное представление года
ККККГГГГ
QQQQYYYY
1 Квартал 2011 г. Представление даты в формате: номер квартала прописью + четырехзначное представление года
КККК
QQQQ
1 Квартал Представление даты в формате: номер квартала прописью
ГГГГММДД
YYYYMMDD
20110101 Представление даты в формате: четырехзначное обозначение года + месяц + день
HHHH
WWWW
Суббота Представление даты в формате: день недели прописью. Наименования дней недели берутся из файла прописи
* — обязательный параметр

Пример использования форматной строки 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. А как сделать формат отрицательного числа, чтобы при выводе оно выходило красным?

    • Андрей, функция Формат() не умеет этого делать. За раскраску текста отвечает ячейка таблицы, в которую Вы выводите полученное значение. Смотрите свойства ячейки таблицы: Контроль = "Забивать+Красным"

  2. Добрый день! В 1с 7.7. при выводе на печать в ТТН программа убирает 0, если он стоит вторым знаком после запятой. Например, 1,70 печатает 1,7. Как это можно исправить? Спасибо.

    • Наталья, есть два варианта, где форматируется строка:

      1. В макете печатной формы ТТН
      2. Непосредственно в коде

      Если случай первый, найдите в макете нужную ячейку и попробуйте указать следующие варианты:

      1. Если конфигурация типовая, замените текст в ячейке на следующий: глФРМ(ПечСумма). Только замените ПечСумма на имя Вашей переменной.
      2. Если конфигурация нетиповая, попробуйте указать формат непосредственно в ячейке сразу после имени переменной. Например, так: ПечСумма #Ч015.2

      Если предложенные варианты не помогли, верните все назад и ищите в коде место, где формируется переменная, указанная в ячейке. Ее нужно будет заменить на такую функцию: Формат(ПечСумма, "Ч015.2")
      Как-то так. Удачи!

  3. Здравствуйте! Конфигурация, думаю, очень нетиповая (я из Беларуси). Нашла в глобальном модуле некую процедуру, которая «форматирует число оставляя после точки минимальное количество знаков». Думаю, что дело в использовании этой функции. Только вот не знаю, как всё изменить. Может быть можно Вам куда-нибудь отправить PrintScreen страницы с этим алгоритмом?

  4. Функция Сокр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));
    КонецЕсли;

    Возврат Стр;
    КонецФункции

  5. Наталья, можете просто в макете ТТН для поля сумма убрать Сокр0(). По идее, этого д.б. достаточно, чтобы оставались нули.

  6. Александр, спасибо за поддержку! 🙂 Я пошла другим путем. В счетах у меня все суммы печатаются корректно, поэтому я изменила в макете ТТН форматы по образу и подобию счета. Вроде всё печатается нормально. Еще раз спасибо за потраченное время.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *