Формат 1С


Программирование (и бизнес программы) обычно имеют дело со следующими простыми типами данных: число, строка, дата. Значения этих типов для разных стран, стандартов и просто привычек могут иметь разное представление.

Вероятно самый известный пример, это разное представление времени – в России привычно использовать 9:00 и 21.00, а в англоязычных странах 9am и 9pm. Разница как в логике (12ти часовая система или 24х часовая), так и в написании.

Представление значения называется «формат» и сегодня мы обсудим изменение формата даты и формата числа в 1С.
Использовать форматирование можно как программисту в языке 1С, так и визуально, без программирования, например при создании печатной формы или отчета, при настройке элементов на форме.

 

Что такое форматирование

Число и дата вне зависимости от его представления на экране или на печати – остается самим собой. Форматирование подразумевает собой исключительно преобразование к строковому значению – то есть как он будет «выглядеть» на экране компьютера или на бумаге.

Основные различия форматов 1С представления чисел и дат:

  • Число
    o «.» или «,» для отделения дробной части
    o количество знаков после запятой
    o группировка цифр в числе по 3 (1 000 000, а не 1000000)
  • Дата и время
    o порядок года, месяца, дня
    o символ-разделитель
    o формат 1С времени (12 или 24 часа)
    o детали написания.

Также в формате 1С могут быть указаны дополнительные «удобства», например отрицательные числа выводить красным цветом, или представление «пустого значения» в виде «0» или «не заполнено».

 

Принцип форматирования

Форматирование по умолчанию работает, например, при переводе числа в строку. В некоторых случаях такие настройки могут служить дурную службу там, где программист этого и не ожидает.

Например, при переводе числа в строку оно переводится с учетом группировки цифр (а вы этого ожидаете?):
ЧислоСтрокой = СокрЛП(2400); //будет равно «2 400»

Для точного указания формата в языке 1С есть функция Формат(), с помощью которой возможно указать требуемое представление.
ЧислоСтрокой = Формат(2400, «Настройки»)

В качестве строки «Настройки» нужно указать требуемый формат 1С. Такие настройки указываются в специальном закодированном виде. Рассмотрим наиболее часто используемые настройки:

Формат 1С даты и числа по умолчанию

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

L = КраткоеНаименованиеНужнойСтраны

Пример вывода даты по правилам некоторых стран:
Формат( ТекущаяДата(), «L=ru»)
> 28.03.2012 14:21:32

Формат( ТекущаяДата(), «L=en»)
> 3/28/2012 2:21:24 PM

Формат( ТекущаяДата(), «L=fr»)
> 28/03/2012 14:22:08

Как не трудно заметить, названия стран — интуитивны.

Формат даты в языке 1С

Если настройки по умолчанию Вам недостаточно и хотелось бы самостоятельно указать порядок частей даты и символы их разделения, необходимо использовать настройку:
ДФ = «дмг чмс»

Соответственно «дмг» – это день, месяц и год, а «чмс» — это часы, минуты и секунды. Любую из этих частей возможно пропустить. Порядок следования – любой. Символы, указанные между частями будут использованы как символы разделения.

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

Расшифровка частей даты:

  • д – день
    o маленькая «д»
    o может быть указана от 1 до 4 раз
  • М – месяц
    o большая «М»
    o может быть указана от 1 до 4 раз
  • г – год
    o маленькая «г»
    o может быть указана 1 или 2 или 4 раза
  • ч – часы
    o маленькая «ч» — 12ти часовой формат
    o большая «Ч» — 24х часовой формат
    o может быть указана 1 или 2 раза
  • м – минуты
    o маленькая «м»
    o может быть указана 1 или 2 раза
  • с – секунды
    o маленькая «с»
    o может быть указана 1 или 2 раза
  • вв – отображение AM/PM для 12ти часового формата
  • к – квартал.

Пример вывода даты с указанием правил:
Формат(ТекущаяДата(), "ДФ=""дд.ММ.гггг чч:мм:сс""")
> 28.03.2012 02:44:44

Формат(ТекущаяДата(), "ДФ="" М / д /гггг ч:м:с вв""")
> 3/28/2012 2:44:44 PM

Формат(ТекущаяДата(), "ДФ=""дд/ММ/гггг чч:мм:сс""")
> 28/03/2012 02:44:44

Формат(ТекущаяДата(), "ДФ=""дддд, дд ММММ гггг""")
> среда, 28 марта 2012

Формат числа в языке 1С
В отличие от форматирование даты, где все достаточно просто, для форматирования числа есть много параметров. Мы рассмотрим те, которые нам показались полезными – то есть по нашему мнению часто применяются.

Первая «проблема» связана с группировкой по умолчанию цифр в числах по 3 и разделением групп пробелом, например:
СтрЧисло = Строка(22300500)
> 22 300 500

Это неудобно, когда число преобразовывается к строке не для красивого и понятного вывода пользователю, а для служебных нужд. На это можно повлиять с помощью параметра «ЧГ», например:

Формат(22300500, "ЧГ=100")
>22300500 //вообще убрали нули

Формат(22300500, "ЧГ=6")
> 22 300500 //сделали группировку только миллионов

Параметр, который позволяет округлить число при выводе до нужного количества цифр после запятой «ЧДЦ»:

Формат(3.535353, "ЧДЦ=""2""")
> 3,54

Параметр, который позволяет указать символ-разделитель целой и дробной части «ЧРД»:

Формат(3.535353, "ЧРД="".""")
> 3.535353

Для некоторых случаев бывает полезно иметь возможность вместо числа «0» отображать что-то другое: пустую строку или «не заполнено». Это позволяет делать параметр «ЧН»:

Формат(0, "ЧН=""<не заполнено>""")
> <не заполнено>

 

Формат 1С поля на форме

Мы рассмотрели с Вами приемы, которые позволяют программисту форматировать значение в языка 1С. Также есть механизмы, которые позволяют указать требуемый формат визуально, без программирования.

Например, пользователь работает с формой. На форме есть поле, которое отображает дату. Мы можем повлиять на представление этой даты.

Откройте свойства этого поля. Для этого — в толстом клиенте нажмите правой кнопкой на поле, а в тонком — правой кнопкой на имени поля в списке полей, выберите пункт Свойства.
У поля есть свойство «Формат».

Нажмите кнопку «…», чтобы настроить его. Для настройки формата даты используйте закладку Дата (для числа – закладку Число). Вы можете выбрать требуемый формат из списка.

 

Формат 1С ячейки в печатной форме

Когда нужно разработать печатную форму (отчет или печать документа), можно назначить формат ячейки точно таким же способом, как и для поля документа.
Выбираем ячейку (или несколько ячеек одновременно), заходим в свойства, свойство «Формат», выбираем требуемый формат.

 

Формат 1С в СКД

Отчеты СКД позволяют настроить формат 1С как программисту (в момент создания отчета), так и пользователю (при использовании отчета). Также возможностей больше за счет использования условного форматирования.

Это значит Вы не только указываете какое поле как форматировать, но и при каком условии (например, если значение этого поля – отрицательное).

В режиме Предприятие выберите пункт меню на форме отчета «Изменить вариант». В отчете СКД в толстом клиенте этот пункт в меню «Действия/Настройки».

В открывшейся форме всех настроек СКД есть закладка «Условное форматирование». Добавьте новую строчку. В строчке три колонки:

  • Оформление. Укажите требуемый формат 1С — шрифт, цвет фона или текста, формат 1С отображения числа и даты
  • Условие. Если данное оформление применять всегда – то оставьте это поле пустым. Иначе – укажите поле и его значение. Тогда форматирование будет применено только в тех строках, в которых эти значения совпадают. Если требуется указать значения нескольких полей одновременно и условий «и/или» — добавьте группу и сгруппируйте поля с помощью групп.
  • Оформляемые поля. Список полей, для которых будет применено форматирование.

 

Формат 1С в управляемых формах

Аналогичные правила форматирования действуют в любой форме списка управляемого клиента. В форме списке выберите пункт меню «Все действия/Настроить список».

Закладка Условное оформление.

Выбираем требуемое оформление и формат.

Указываем список полей, на которые будет применено это оформление.


Проголосовать за этот пост:

1 Star2 Stars3 Stars4 Stars5 Stars (21 голосов, среднее: 4,57 из 5)
Загрузка...

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