Внутренний язык программирования 1С 8.3 для начинающих программистов: формат в 1С
Автор уроков и преподаватель школы: Владимир Милькин
При программировании в 1С часто приходится выводить (в те же отчеты) значения различных типов (строки, даты, числа ...). У каждого из значений есть различные представления.
К примеру, одну и ту же дату '01.01.2005' можно представить в виде строки как:
- "01.01.2005"
- "1 января 2005"
- "01.01.05"
Всё это строковые представления одного и того же значения, для формирования которых в 1С используется специальная функция Формат.
Использование функции Формат в 1С
Отключаем группировку разрядов
Пусть нам требуется вывести число 10000.
Если мы напишем:
Сообщить(10000); // выводит 10 000 |
То число 10000 отобразится с пробелами 10 000. Так получается потому, что 1С по умолчанию группирует цифры по 3 штуки (начиная справа) и выводит пробелы между ними.
Чтобы отменить это правило, воспользуемся функцией Формат:
Сообщить(Формат(10000, "ЧГ=0")); // выводит 10000 |
Первый параметр - это само значение, а второй - форматная строка. Её не нужно пытаться запомнить - просто нужно знать, где посмотреть пример или справку по этой функции (здесь или в синтакс-помощнике).
Форматная строка в общем случае состоит из двух частей, разделенных знаком равно. Слева от равно стоит имя задаваемого параметра (смотрим в справке или на примерах), а справа значение этого параметра.
В приведенном выше примере форматная строка "ЧГ=0" имеет параметр ЧГ и значение 0. Такая комбинация отменяет группировку разрядов числа. И, как вы можете убедиться, теперь выводится 10000.
Выводим лидирующие нули
Также частой задачей является вывод лидирующих нулей перед цифрой. К примеру, пусть требуется вывести число 5 с лидирующим впереди нулём то есть в виде "05":
Сообщить(Формат(5, "ЧЦ=2; ЧВН=")); // выводит 05 |
Давайте разберём форматную строку "ЧЦ=2; ЧВН=". Она состоит из двух форматных строк, разделенных точкой с запятой. Разберём каждую из них по отдельности.
Строка "ЧЦ=2" задаёт общее число отображаемых десятичных разрядов целой и дробной частей. Таким образом общее число позиций, которое будет занимать число при выводе будет равно 2.
Строка "ЧВН=", как следует из справки, указывает функции формат, что если число не дотягивает по длине до заявленного (как в нашем случае, ведь мы указали 2 позиции, а 5 занимает только одну), то следует использовать лидирующие нули. Особенность данной форматной строки в том, что она имеет только имя параметра и знак равно, но не имеет значения. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Комбинация двух форматных строк и даёт нужный нам результат "05", вместо "5".
Отлично. Идём дальше.
Меняем разделитель целой и дробной части
Предположим нам требуется выводить дробные числа с разделителем звёздочка вместо точки. То есть, чтобы 25.46 выводилось как "25*46":
Сообщить(Формат(25.46, "ЧРД=*")); // выведет 25*46 |
Разберём форматную строку "ЧРД=*". ЧРД - имя параметра, которое я узнал из справки, * - значение этого параметра, которое и будет являться новым разделителем целой и дробной части вместо точки.
Общее представление даты
А что если мы хотим вывести дату '20050101' в виде "01.01.2005":
Сообщить(Формат('20050101', "ДЛФ=Д")); // выведет 01.01.2005 |
А что если мы хотим вывести дату как "1 января 2005 г.":
Сообщить(Формат('20050101', "ДЛФ=ДД")); // выведет 1 января 2005 г. |
Обе используемые форматные строки "ДЛФ=Д" и "ДЛФ=ДД" имеют один и тот же параметр ДЛФ, но вот значения у него различные. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. В первом случае (сокращенный вариант даты) - Д, а во втором (длинный вариант) ДД.
Представление дня недели даты
Если посмотреть календарь, то выяснится, что 1 января 2005 года было субботой. Вот как можно выводить описание дня недели по его дате:
Сообщить(Формат('20050101', "ДФ=дддд")); // выведет суббота |
Форматная строка представляет из себя параметр ДФ и значение дддд, что и указывает функции Формат вывести длинное представление дня недели (обратите внимание как много букв "д" она содержит).
Представление месяца даты
Описание месяца по дате выводится так:
Сообщить(Формат('20050101', "ДФ=ММММ")); // выведет Январь |
Форматная строка имеет тот же самый параметр ДФ, как и в предыдущем случае. Но вот значение отличается. Теперь оно равно ММММ.