[Alimir_BootModal_Login]

Внутренний язык программирования 1С 8.3 для начинающих программистов: формат в 1С

Автор уроков и преподаватель школы: Владимир Милькин

При программировании в 1С часто приходится выводить (в те же отчеты) значения различных типов (строки, даты, числа ...). У каждого из значений есть различные представления.

К примеру, одну и ту же дату '01.01.2005' можно представить в виде строки как:

  1. "01.01.2005"
  2. "1 января 2005"
  3. "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', "ДФ=ММММ")); // выведет Январь

Форматная строка имеет тот же самый параметр ДФ, как и в предыдущем случае. Но вот значение отличается. Теперь оно равно ММММ.

Пройдите тест

Начать тест

Домашнее задание

Напишите программу, которая:

  1. Выводит 123.45 как "123$45".
  2. Выводит 9 как "009".
  3. Выводит строковое представление текущего дня недели.
  4. Выводит строковое представление текущего месяца.

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

Дополнение

Данный материал рассчитан на начинающих разработчиков. Если он показался вам слишком лёгким - рассмотрите другие примеры использования функции формат в 1С (ссылка).

Для учеников

Уровень сложности уроков идёт снизу вверх. Поэтому старайтесь заниматься последовательно, ничего не пропуская и не откладывая на потом.

Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.

На вопросы учеников — отвечаю по почте,  но прежде загляните в ЧАВО (ссылка) .

С уважением, Владимир Милькин