Автоматическая смена текущего месяца по закрытию периода

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

Находим регламентное задание по закрытию месяца:

В коде задания видно, что регламентные задания берутся из регистра сведений «Регламентные задания закрытия месяца»:

Вот как он выглядит в режиме 1С:Предприятия:

Надо заметить, что для одной организации может быть задан только один месяц.

Но остается вопрос — а что за дата хранится в ресурсах регистра? Начало месяца? Конец месяца?

С помощью нехитрого запроса определяем, что все же хранится начало месяца:

Перед тем, как писать код, в регистре сведений переставляю период на прошлый месяц:

Делаю это из формы регистра, где почему-то не отображается дата, но тем не менее сохраняется при изменении:

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


&Перед("ВыполнитьЗакрытиеМесяца")
Процедура дор_ВыполнитьЗакрытиеМесяца(Организация)   
	З = Новый Запрос(
	"ВЫБРАТЬ
	|	Т.Организация КАК Организация,
	|	Т.Использование КАК Использование,
	|	Т.ЗакрываемыйПериодОУ КАК ЗакрываемыйПериодОУ,
	|	Т.ЗакрываемыйПериодРУ КАК ЗакрываемыйПериодРУ
	|ИЗ
	|	РегистрСведений.РегламентныеЗаданияЗакрытияМесяца КАК Т
	|ГДЕ
	|	(Т.ЗакрываемыйПериодОУ <> &НачалоМесяца
	|			ИЛИ Т.ЗакрываемыйПериодРУ <> &НачалоМесяца) И Т.Использование"
	);                                                                        
	НачалоМесяца = НачалоМесяца(ТекущаяДата());
	З.УстановитьПараметр("НачалоМесяца", НачалоМесяца);
	Выборка = З.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		МЗ = РегистрыСведений.РегламентныеЗаданияЗакрытияМесяца.СоздатьМенеджерЗаписи();                                 
		МЗ.Организация = Выборка.Организация;
		МЗ.Прочитать();
		МЗ.ЗакрываемыйПериодОУ = НачалоМесяца;
		МЗ.ЗакрываемыйПериодРУ = НачалоМесяца;
		МЗ.Записать(Истина);
	КонецЦикла;
КонецПроцедуры

Открываю регламентные задания, нажимаю «Выполнить не в фоне» для простоты отладки.

Отладчиком проверяю выполнение кода и результат — период поменялся на текущий (июль):

Выполняю еще раз и проверяю отладчиком, что новых перезаписей регистра не происходит, следовательно сдвиг периода на текущий месяц происходит корректно.

Все корректно.

Время план: 0.6 час. Среда: УТ 11.4.13.46.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *