Глобальный контекст.НачалоМесяца

Методы · BegOfMonth

Определяет дату и время начала месяца для указанной даты.

Синтаксис

НачалоМесяца(<Дата>)

Примеры платформы

Сообщить(НачалоМесяца(ТекущаяДата()));
Полное описание, параметры и ограничения

Глобальный контекст.НачалоМесяца (Global context.BegOfMonth)

Глобальный контекст (Global context)

НачалоМесяца (BegOfMonth)

Доступен, начиная с версии 8.0.

Синтаксис:
НачалоМесяца(<Дата>)
Параметры:

<Дата> (обязательный)
Тип: Дата.
Исходная дата.
Возвращаемое значение:
Тип: Дата.
Дата и время начала месяца.
Описание:

Определяет дату и время начала месяца для указанной даты.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:

Сообщить(НачалоМесяца(ТекущаяДата()));

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Отличить период регистрации, период действия и базовый период

Два регистра имеют месячную периодичность регистрации. Использование периода действия различается; базовый период включён у обоих.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.

  2. Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.

  3. Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.

  4. В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.

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

Описание = Метаданные.РегистрыРасчета.Найти("Начисления");
Если Описание = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Начисления";
КонецЕсли;
Удержания = Метаданные.РегистрыРасчета.Найти("Удержания");
Если Удержания = Неопределено Тогда
    ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Удержания";
КонецЕсли;
Сообщить(Описание.Периодичность = Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц);
Сообщить(Удержания.Периодичность = Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц);
Сообщить(Описание.ПериодДействия);
Сообщить(Не Удержания.ПериодДействия);
Сообщить(Описание.БазовыйПериод);
Сообщить(Удержания.БазовыйПериод);
УчебнаяДата = Дата(2026, 10, 3);
Сообщить(НачалоМесяца(УчебнаяДата) = Дата(2026, 10, 1));

Разбор по шагам

  1. Периодичность задаёт вид периода регистрации, не длительность отработанного дня.

  2. ПериодДействия позволяет учитывать протяжённые во времени записи; у Начисления он включён, у Удержания нет.

  3. БазовыйПериод включает механизм зависимости по базе, но не задаёт конкретный список базовых начислений.

  4. НачалоМесяца применяем только к собственной дате в памяти: это иллюстрация границы, не изменение записей расчёта.

Как проверить результат

  1. Семь сообщений Истина по двум предоставленным XML и собственной дате.

  2. Период действия/базовый период конкретной записи не читался и не назначался.

Ожидаемый результат

Разделены три понятия периода без выполнения расчёта.

На что обратить внимание

  1. Месячная периодичность не означает, что любая выплата равна месячному окладу.

  2. Для реальной зависимости изучайте конкретный вид расчёта и прикладной алгоритм; одних двух флагов недостаточно.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Рассчитать границы месяца для условия запроса

Используйте интервал от начала месяца включительно до начала следующего месяца исключительно. Это позволяет не подбирать последнюю секунду месяца. В запросе условие имеет вид: Дата >= &Начало И Дата < &Конец.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Исходная дата фиксирована: 15 сентября 2026 года.

  2. Используется полуоткрытый интервал: начало включено, конец исключён.

ИсходнаяДата = Дата(2026, 9, 15, 12, 30, 0);
НачалоПериода = НачалоМесяца(ИсходнаяДата);
КонецПериода = ДобавитьМесяц(НачалоПериода, 1);

Сообщить(Формат(НачалоПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));
Сообщить(Формат(КонецПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));

Разбор по шагам

  1. НачалоМесяца обнуляет время и устанавливает первый день.

  2. ДобавитьМесяц получает начало следующего месяца.

  3. Формат применяется только для отображения; сравнивать даты нужно как даты.

Как проверить результат

  1. Границы: 01.09.2026 00:00:00 и 01.10.2026 00:00:00.

  2. Для декабря верхняя граница должна перейти на 1 января следующего года.

Ожидаемый результат

01.09.2026 00:00:00
01.10.2026 00:00:00

На что обратить внимание

  1. В условии запроса используйте >= начало и < конец.

  2. Не заменяйте верхнюю границу на последний день без учёта времени.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.