Как в 1С вывести дату в формате «04» апреля 2014 г.?

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

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

Метод 1. Использование функции Формат() и управление строкой формата

Рассмотрим самый распространенный способ — использование встроенной функции Формат. Основная сложность здесь заключается в том, что символы кавычек внутри форматной строки являются служебными. Платформа должна понимать, где заканчивается команда форматирования и начинается обычный текст.

Разберем по шагам логику построения форматной строки ДФ (Дата-Формат):

  1. дд — выводит день месяца двумя цифрами.
  2. ММММ — выводит полное название месяца в родительном падеже (например, «января»).
  3. гггг — выводит год четырьмя цифрами.
  4. Для вывода текстовых литералов (таких как кавычки или буква «г.») внутри ДФ их необходимо заключать в одинарные кавычки.

Посмотрим на пример кода, который реализует классические кавычки-лапки:


ДатаСобытия = ТекущаяДата(); // Допустим, сегодня 04.04.2024
// Чтобы вывести кавычки-лапки, используем двойное экранирование
СтрокаФормата = "ДФ='""дд"" ММММ гггг ""г.""'";
Результат = Формат(ДатаСобытия, СтрокаФормата);
// Результат: "04" апреля 2024 г.

Проанализируем ситуацию с кавычками: одинарная кавычка внутри строки ДФ сообщает системе, что всё, что находится между ними, нужно выводить «как есть», не пытаясь интерпретировать как код. Если нам нужно вывести саму кавычку, мы удваиваем её.

Метод 2. Использование типографских кавычек («ёлочек»)

Как показывает практика и обсуждения на форумах, использование стандартных кавычек-лапок (") в коде 1С часто приводит к путанице с синтаксисом. Профессиональным и более эстетичным решением для официальных документов является использование кавычек-ёлочек (« »). Они не являются служебными символами для платформы 1С, что значительно упрощает написание кода.

Выясним, как это выглядит на практике:


ОбластьМакета.Параметры.ДатаДокумента = Формат(Шапка.Дата, "ДФ='«дд» ММММ гггг г.'");

Этот способ является наиболее стабильным. Он корректно отрабатывает на большинстве версий платформы (начиная с 8.2 и заканчивая современными релизами 8.3), так как не требует сложного экранирования символов внутри строки.

Метод 3. Решение проблемы регистра (заглавная или строчная буква месяца)

Иногда разработчики замечают, что месяц выводится с большой буквы («Апреля»), в то время как правила русского языка внутри предложения требуют строчную букву. Это может зависеть от региональных настроек сервера или операционной системы.

Чтобы гарантированно получить название месяца со строчной буквы, проанализируем использование функции НРег (Нижний Регистр):


ДатаДляВывода = Формат(Шапка.Дата, "ДФ='дд ММММ гггг'");
// Преобразуем всю строку в нижний регистр и добавляем оформление
Результат = "«" + НРег(ДатаДляВывода) + "» г.";

Важное замечание: Будьте осторожны с использованием НРег ко всей строке, если в ней присутствуют другие слова, которые должны начинаться с заглавной буквы. В нашем случае это безопасно, так как дата состоит только из цифр и названия месяца.

Метод 4. Обработка пустых дат

В реальных задачах данные могут быть не заполнены. Если передать пустую дату ('00010101') в функцию Формат, на выходе мы получим странную строку вида «01 января 0001». В печатных формах гораздо лучше выводить шаблон для ручного заполнения.

Рассмотрим алгоритм правильной обработки пустой даты:


Если ЗначениеЗаполнено(Шапка.Дата) Тогда
    ОбластьМакета.Параметры.Дата = Формат(Шапка.Дата, "ДФ='«дд» ММММ гггг г.'");
Иначе
    // Выводим пустой шаблон для заполнения ручкой
    ОбластьМакета.Параметры.Дата = "«___» ____________ 20___ г.";
КонецЕсли;

Метод 5. Использование возможностей БСП (Библиотека стандартных подсистем)

Если вы работаете в современной конфигурации, такой как «Бухгалтерия предприятия 3.0» или «ERP Управление предприятием», нет необходимости прописывать форматирование вручную. В БСП существуют готовые функции для формирования дат в различных падежах и форматах.

Посмотрим на использование функций общего назначения:


// В типовых конфигурациях часто используется модуль РаботаСДоговорами или ОбщегоНазначенияБП
// Пример формирования представления даты:
ПредставлениеДаты = ОбщегоНазначенияБПВызовСервера.СформироватьДатуДляПечати(Шапка.Дата);

Использование системных функций гарантирует, что дата будет сформирована в соответствии со стандартами конкретной прикладной области (например, учетной политики или требований законодательства к первичным документам).

Сводная таблица параметров форматной строки для даты

Для лучшего понимания работы ДФ приведем краткий справочник:

  1. д — день месяца без лидирующего нуля (1, 2...).
  2. дд — день месяца с лидирующим нулем (01, 02...).
  3. МММ — краткое название месяца (янв., февр.).
  4. ММММ — полное название месяца в родительном падеже.
  5. гг — последние две цифры года.
  6. гггг — полный формат года.

Подводя итог, можно сказать, что самым надежным и визуально чистым способом является использование типографских кавычек «ёлочек» внутри форматной строки. Это избавляет код от лишних кавычек-экранов и делает его легко читаемым для других разработчиков.

← На главную