Определяет дату и время начала месяца для указанной даты.
Синтаксис
НачалоМесяца(<Дата>)Примеры платформы
Сообщить(НачалоМесяца(ТекущаяДата()));Полное описание, параметры и ограничения
Глобальный контекст.НачалоМесяца (Global context.BegOfMonth)
Глобальный контекст (Global context)
НачалоМесяца (BegOfMonth)
Доступен, начиная с версии 8.0.
Синтаксис:
НачалоМесяца(<Дата>)
Параметры:
<Дата> (обязательный)
Тип: Дата.
Исходная дата.
Возвращаемое значение:
Тип: Дата.
Дата и время начала месяца.
Описание:
Определяет дату и время начала месяца для указанной даты.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Внимание: Данный метод не поддерживается при работе через COM-соединение
Пример:
Сообщить(НачалоМесяца(ТекущаяДата()));
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Отличить период регистрации, период действия и базовый период
Два регистра имеют месячную периодичность регистрации. Использование периода действия различается; базовый период включён у обоих.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.РегистрыРасчета.Найти("Начисления");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Начисления";
КонецЕсли;
Удержания = Метаданные.РегистрыРасчета.Найти("Удержания");
Если Удержания = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует РегистрыРасчета.Удержания";
КонецЕсли;
Сообщить(Описание.Периодичность = Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц);
Сообщить(Удержания.Периодичность = Метаданные.СвойстваОбъектов.ПериодичностьРегистраРасчета.Месяц);
Сообщить(Описание.ПериодДействия);
Сообщить(Не Удержания.ПериодДействия);
Сообщить(Описание.БазовыйПериод);
Сообщить(Удержания.БазовыйПериод);
УчебнаяДата = Дата(2026, 10, 3);
Сообщить(НачалоМесяца(УчебнаяДата) = Дата(2026, 10, 1));Разбор по шагам
Периодичность задаёт вид периода регистрации, не длительность отработанного дня.
ПериодДействия позволяет учитывать протяжённые во времени записи; у Начисления он включён, у Удержания нет.
БазовыйПериод включает механизм зависимости по базе, но не задаёт конкретный список базовых начислений.
НачалоМесяца применяем только к собственной дате в памяти: это иллюстрация границы, не изменение записей расчёта.
Как проверить результат
Семь сообщений Истина по двум предоставленным XML и собственной дате.
Период действия/базовый период конкретной записи не читался и не назначался.
Ожидаемый результат
Разделены три понятия периода без выполнения расчёта.
На что обратить внимание
Месячная периодичность не означает, что любая выплата равна месячному окладу.
Для реальной зависимости изучайте конкретный вид расчёта и прикладной алгоритм; одних двух флагов недостаточно.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Рассчитать границы месяца для условия запроса
Используйте интервал от начала месяца включительно до начала следующего месяца исключительно. Это позволяет не подбирать последнюю секунду месяца. В запросе условие имеет вид: Дата >= &Начало И Дата < &Конец.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Исходная дата фиксирована: 15 сентября 2026 года.
Используется полуоткрытый интервал: начало включено, конец исключён.
ИсходнаяДата = Дата(2026, 9, 15, 12, 30, 0);
НачалоПериода = НачалоМесяца(ИсходнаяДата);
КонецПериода = ДобавитьМесяц(НачалоПериода, 1);
Сообщить(Формат(НачалоПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));
Сообщить(Формат(КонецПериода, "ДФ=dd.MM.yyyy HH:mm:ss"));Разбор по шагам
НачалоМесяца обнуляет время и устанавливает первый день.
ДобавитьМесяц получает начало следующего месяца.
Формат применяется только для отображения; сравнивать даты нужно как даты.
Как проверить результат
Границы: 01.09.2026 00:00:00 и 01.10.2026 00:00:00.
Для декабря верхняя граница должна перейти на 1 января следующего года.
Ожидаемый результат
01.09.2026 00:00:00
01.10.2026 00:00:00
На что обратить внимание
В условии запроса используйте >= начало и < конец.
Не заменяйте верхнюю границу на последний день без учёта времени.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.