Конструктор форматной строки

В этой статье я разберу особенности применения конструктора форматной строки. С его помощью работу в «1С: Предприятие» можно сделать более удобной и красивой. При помощи конструктора форматной строки можно примитивные типы (Число, Дата и Булево) выводить пользователю в удобном для чтения виде.

Но перед тем как рассматривать конструктор форматной строки, познакомимся с функцией Формат.

Рассмотрим её синтаксис. Он достаточно простой:

Формат(<Значение>, <ФорматнаяСтрока>)

Где:

Значение — некоторое значение примитивного типа Число, Дата или Булево.

ФорматнаяСтрока – это строка или правило, по которому наше значение будет преобразовываться в текстовую строку. Эта функция возвращает значение с типом Строка.

Эта функция работает во всех видах клиентов (тонкий клиент, толстый, веб), поэтому её можно применять где угодно.
Для того, что бы понять, как она работает, я создам простую обработку, на форме которой размещу три реквизита: РеквизитБулево, РеквизитДата и РеквизитЧисло с соответствующими типам , и создам три команды: «Форматировать булево», «Форматировать дату» и «Форматировать число», которые размещу на форме в виде кнопок.


Создадим обработчик команды «Форматировать дату» в клиентском контексте, и напишем в нем следующий код:

&НаКлиенте
Процедура ФорматироватьДату(Команда)

       Сообщить(Формат(РеквизитДата,""));

КонецПроцедуры

Я намеренно оставил форматную строку пустую, что бы Вам стало понятно, каким образом её можно очень быстро и удобно формировать. Для того что бы узнать каким образом форматировать нам ту или иную переменную примитивного типа, можно смотреть справочную информацию и вникать во все особенности форматирования (хотя это очень нужно и полезно), а можно воспользоваться конструктором форматной строки. Для этого нужно поставить курсор между кавычек и либо вызвать конструктор через контекстное меню


Или через главное меню конфигуратора 1С


После этого откроется форма конструктора форматной строки, где будет три закладки: Число, Дата и Булево, а так же поле выбора языка.


Поскольку мы форматируем дату, то перейдем на закладку «Дата».


Заметьте, внизу есть группа «Пример», где Вы можете посмотреть, как будет выглядеть Ваше отформатированное значение.


Конструктор предоставляет возможность отформатировать дату в трех форматах.
Это свободный формат даты


Локальный формат даты


И представление пустой даты


Если Вы установите одновременно и локальный и свободный формат, то дата будет форматироваться согласно свободному формату.


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


И после нажатия кнопки «Ок» параметр ФорматнаяСтрока заполнится согласно этому представлению.

&НаКлиенте
Процедура ФорматироватьДату(Команда)

         Сообщить(Формат(РеквизитДата,
                                     "ДФ='dd.MMMM.yy ""г.""'; ДП='Нет даты'"));

КонецПроцедуры

На этом по большому счету работа с конструктором закончилась. Если мы сейчас сохраним обработку, то при выполнении команды «Форматировать дату», будет выходить наша отформатированная дата, согласно установленному формату.


Естественно у многих из вас возникнет вопрос.


Каким образом составлять свободный формат даты?
А вот для этого нам придется все-таки залезть в дебри справочной информации 1С.
Что бы это сделать, ставим курсор на слово формат и нажимаем комбинацию клавиш Ctrl+F1, откроется вот такое окно.


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


Если же Вам неохота или некогда во все это вникать, то можете всегда воспользоваться локальным форматом даты в конструкторе.


Тут конечно ограниченное количество возможных форматов, но зато не придется что-то самим подбирать. Кстати, описание локальных форматов даты в справке тоже есть, и я Вам рекомендую с ними познакомиться.
Идем дальше. У нас осталось еще два типа, которые можно форматировать по определенным правилам в строку. Это Число и Булево.
С ними все точно так же как и с датами.
Для примера, создадим обработчик команды «Форматировать число» в клиентском контексте. И так же, как и в случае Даты, будет в процедуре Сообщить форматировать реквизит РеквизитЧисло.

&НаКлиенте
Процедура ФорматироватьЧисло(Команда)

          Сообщить(Формат(РеквизитЧисло,""));

КонецПроцедуры

Опять же, вызываем конструктор форматной строки одним из знакомых нам способом и переходим на закладку «Число».


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


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


Разберем некоторые форматы.
Очень часто пользователям мешает группировка цифр, и необходимо её убрать. Для этого нужно установить в параметр «Группировка» значение «0».


После этого число будет в обычном виде, без всяких разделений групп.
Еще интересный параметр – сдвиг. В том случае, когда он указан число будет умножено или поделено на 10 в степени этого параметра.


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


Доделаем нашу форматную строку для числа: длину поставим 12, точность 2, и уберем группировку. Получится вот такой формат.


И у нас получится следующая форматная строка:

&НаКлиенте
Процедура ФорматироватьЧисло(Команда)

          Сообщить(Формат(РеквизитЧисло,"ЧЦ=12; ЧДЦ=2; ЧГ=0"));

КонецПроцедуры

Посмотрим, как работает наше форматирование


Разберем форматирование последнего примитивного типа – Булево. Для этого , так же как и для предыдущих типов, создадим процедуру на клиенте, где будем форматировать реквизит РеквизитБулево в процедуре Сообщить.

&НаКлиенте
Процедура ФорматироватьБулево(Команда)

       Сообщить(Формат(РеквизитБулево,""));

КонецПроцедуры

Откроем конструктор форматной строки и перейдем на закладку «Булево»


Тут все просто. Можно выбрать или какое-то предопределенное значение, которое будет выходить вместо Истина-Ложь.


Или написать какие-нибудь свои значения.


Подставим последний вариант в форматную строку функции Формат.

&НаКлиенте
Процедура ФорматироватьБулево(Команда)

        Сообщить(Формат(РеквизитБулево,"БЛ='Это не так'; БИ='Да, конечно!'"));

КонецПроцедуры

Сохраним обработку и посмотрим, как будет работать наш формат.


На этом бы и закончить изучение конструктора форматной строки.


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


К этому полю можно применить формат, и даты будут выходить так, как нам удобно.
Для этого нужно зайти в настройки формы.


И найти нужное поле.


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


После этого наша форма списка изменится


Точно так же можно настроить формат полей СКД. Нужно зайти в оформление поля и найти свойство Формат.


В котором можно уже по знакомой нам технологии настроить нужный формат поля с примитивным типом.


Таким образом, конструктор форматной строки применим ни только при программировании код, но и при настройке интерфейса, при работе СКД и т.д., что делает его очень удобным инструментом в настройке пользовательского интерфейса.

Более подробно и основательно начальные вопросы программирования в 1С есть в моей книге:

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

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

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

3 Replies to “Конструктор форматной строки”

  1. Есть поле, с типом число. Сейчас в число можно вбить только два знака после запятой (например 1,17). А нужно до 6 знаков после запятой (например 1, 176760). Пробовал задавать точность 6, но с этим параметром система сначала даёт вбить число 1,17676, а потом сама округляет число до 1,180000. Как убрать округление?

    1. Все правильно, если у реквизита с типом Число точность 2, то платформа будет «округлять» до 2-ух знаков после запятой, какую бы точность не поставили в формате. В этом случае в базе просто физически не могут храниться числа с большей точностью. Т.е. если у числа точность 2, то в базе могут храниться числа 1.18, 1.2, 1, 0.1, 0.12. Но не могут храниться числа 1.767, 1.202, 0.001, если Вы введете в поле такое число (или получите его в результате вычислений), то платформа приведет его к числу с точностью 2.

  2. Как отбросить дробную часть числа?
    Делаю ЧДЦ=» и в примере 11,70 превращается в 12
    Мне же надо 11. ЧДЦ=»-1 работает, но однако коряво, имею
    11, Т.е. отображается и разделитель дробной части.
    В общем надо округление не стандартное, а в целое отличное от станд.
    на -1

    11,70 -> 11

    Cпасибо.

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

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