Как получить название месяца по его номеру в 1С?

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

При разработке прикладных решений на платформе 1С часто возникает необходимость преобразовать числовой номер месяца (от 1 до 12) в его словесное представление — например, «январь», «февраль» и так далее. Кроме того, перед разработчиками нередко встает задача организации удобного интерфейса для выбора конкретного месяца пользователем. Давайте разберем, как эффективно решать эти задачи.

Использование функции Формат() для получения названия месяца

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

Рассмотрим пример кода, который позволяет получить имя месяца:


// Получаем название месяца по номеру
// Используем произвольный год (например, 2), чтобы избежать проблем с 1 годом
НаименованиеМесяца = Формат(Дата(2, НомерМесяца, 1), "ДФ=ММММ");

Обратите внимание: строка "ДФ=ММММ" заставляет платформу вернуть полное название месяца в именительном падеже. Если вам необходимо, чтобы название было представлено в ином формате, вы можете изменять параметры строки формата.

Заполнение выпадающего списка месяцев для выбора

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

Для заполнения списка всех 12 месяцев года используем цикл:


// Пример заполнения списка выбора в управляемой форме
Для н = 1 По 12 Цикл
    Данные = Формат(Дата(2, н, 1), "ДФ=ММММ");
    Элементы.Месяц.СписокВыбора.Добавить(Данные);
КонецЦикла;

Если же вам необходимо, чтобы список содержал не только название месяца, но и год, можно модифицировать строку формата следующим образом:


Для н = 1 По 12 Цикл
    // Добавляем месяц и год
    Данные = Формат(Дата(Год(ТекущаяДата()), н, 1), "ДФ='ММММ гггг'");
    Элементы.Месяц.СписокВыбора.Добавить(Данные);
КонецЦикла;

Альтернативные подходы к выбору периода

Помимо формирования собственного выпадающего списка, важно упомянуть стандартные средства платформы 1С. В управляемых формах существует стандартный диалог редактирования периода:

Рекомендации по оптимизации кода

При написании кода всегда старайтесь избегать «хардкода» (жестко прописанных условий) вроде Если НомерМесяца = 1 Тогда Возврат "Январь". Использование функции Формат или массивов с названиями месяцев делает ваш код:

  1. Более читаемым и понятным для других разработчиков.
  2. Легко поддерживаемым — при необходимости изменить логику, вы правите одно место, а не длинную цепочку условий.
  3. Устойчивым к ошибкам — системные функции платформы 1С автоматически учитывают локализацию системы.

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

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

← На главную