Для решения подобных задач в типовых конфигурациях предусмотрен механизм подписок на события. Данный механизм хорош тем, добавляется "сбоку" не мешая обновлять типовую конфигурацию.
Что делаем?
Создаем в общем модуле процедуру, которая будет вызываться из подписки на событие.
Вначале проверяем текущие права пользователя. Если у него есть Роли "ПолныеПрава" или
"ПраваНаЗаписьПутевыхЛистовПосле3РабочегоДня", то процедуру не вызываем и соответсвенно запись документа пользователю доступна всегда.
Для всех остальных пользователей получаем 3 день текущего месяца из производственного календаря, сравниваем с текущей датой. Если текущая дата больше 3 рабочего числа, то выдаем сообщение и отменяем проведение.
Потом создаем подписку на событие с видом "При записи документа", выбираем наш документ и нашу прошедуру.
Код процедуры:
Процедура ПроверкаВозможностиЗаписиПутевогоЛистаПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если РольДоступна("ПолныеПрава") или РольДоступна("ПраваНаЗаписьПутевыхЛистовПосле3РабочегоДня") Тогда
Возврат;
КонецЕсли;
ДатаТретьегоРабочегоЧисла = ПолучитьТретьеРабочееЧисло(КонецМесяца(Источник.ПериодРегистрации)+1);
Если ДатаТретьегоРабочегоЧисла < ТекущаяДата() тогда
Отказ = Истина;
Сообщить ("Путевые листы можно записывать по 3 рабочий день месяца");
КонецЕсли;
КонецПроцедуры
Функция ПолучитьТретьеРабочееЧисло(ДатаНачалаМесяца)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНачалаМесяца",ДатаНачалаМесяца);
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 3
| РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК РабочийДень
|ИЗ
| РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
|ГДЕ
| РегламентированныйПроизводственныйКалендарь.ВидДня = ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий)
| И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= &ДатаНачалаМесяца";
Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() = 3 тогда
Возврат Результат[2].РабочийДень;
Иначе
Возврат КонецМесяца(ДатаНачалаМесяца);
КонецЕсли;
КонецФункции