Как вывести дату с днем недели в формате ЧТ 25.05.17 в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При настройке отображения дат в отчетах, формах или элементах диаграммы Ганта часто возникает необходимость вывести дату вместе с кратким обозначением дня недели, например: Чт 25.05.17. Однако при попытке составить форматную строку разработчики нередко сталкиваются с ситуацией, когда дата отображается некорректно либо сбрасывается в значение по умолчанию со временем.

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

Почему форматная строка с пробелом не работает без кавычек

Проанализируем структуру параметра ДФ (формат даты) функции Формат(). Форматная строка 1С состоит из отдельных управляющих параметров (таких как ДФ, Л, ЧЦ, ЧГ), которые разделяются точкой с запятой или пробелами.

Если мы передаем шаблон, содержащий пробел (например, "ДФ=ddd dd.MM.yy"), парсер платформы воспринимает пробел между ddd и dd как признак завершения текущего параметра и начало следующего. В результате строка парсится с ошибкой, и платформа возвращает дату в стандартном системном представлении (например, 25.05.2017 0:00:00).

Главное правило: если значение параметра ДФ содержит пробелы или специальные разделители, его шаблон обязательно нужно заключать в одинарные кавычки.

Пошаговое решение задачи

Рассмотрим по шагам, как правильно составить и применить форматную строку в различных сценариях.

  1. Базовый вывод даты с кратким днем недели:

    Для вывода формата «Чт 25.05.17» используем спецификаторы ddd (краткий день недели), dd (день месяца из двух цифр), MM (номер месяца) и yy (две цифры года). Оборачиваем шаблон в одинарные кавычки:

    ФорматированнаяДата = Формат(ТекущаяДата(), "ДФ='ddd dd.MM.yy'");
  2. Вывод дня недели в верхнем регистре (ЧТ вместо Чт):

    Стандартный спецификатор ddd формирует название дня недели с заглавной первой буквой и строчной второй (например, Чт, Пт, Сб). Платформа 1С средствами одной лишь форматной строки не умеет принудительно переводить день недели в верхний регистр. Если по требованиям интерфейса строго необходим вид ЧТ 25.05.17, применим функцию встроенного языка ВРег():

    ДатаДляВывода = ВРег(Формат(ТекущаяДата(), "ДФ='ddd dd.MM.yy'"));
  3. Полное наименование дня недели и четырехзначный год:

    Если требуется получить развернутую запись, например «четверг 25.мая.2017», спецификаторы расширяются до dddd, MMM (или MMMM) и yyyy:

    ПолнаяДата = Формат(ТекущаяДата(), "ДФ='dddd dd.MMM.yyyy'");
  4. Гарантия вывода на русском языке (параметр локали):

    Чтобы день недели выводился по-русски независимо от региональных настроек конкретного клиентского сеанса или сервера, добавим в начало параметр локализации Л=ru_RU:

    ЛокализованнаяДата = Формат(ТекущаяДата(), "Л=ru_RU; ДФ='ddd dd.MM.yy'");

Особенности настройки формата в диаграмме Ганта

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

  1. В свойствах шкалы времени диаграммы Ганта формат дат может задаваться программно через свойство Формат элементов шкалы (коллекция ЭлементШкалыПериода).
  2. У элементов шкалы времени предусмотрено специальное свойство ФорматДня. Если для него выбрано конкретное системное значение, оно может переопределять пользовательскую форматную строку. Для использования произвольного шаблона ДФ='ddd dd.MM.yy' убедитесь, что свойство ФорматДня не конфликтует с заданным шаблоном.
← На главную