Процедура НеоперПроведениеПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
	#Если Клиент Тогда
		//Возврат;
		Если (РежимПроведения = РежимПроведенияДокумента.Неоперативный И РежимЗаписи = РежимЗаписиДокумента.Проведение И Источник.Дата < НачалоДня(ТекущаяДата())) Тогда 
			ЗапросОграничения = НОВЫЙ Запрос;
			ЗапросОграничения.Текст = "ВЫБРАТЬ
			|	ОграниченияДоступов.Пользователь,
			|	ОграниченияДоступов.НеоперативноеПроведение,
			|	ОграниченияДоступов.КвоНеоперДней
			|ИЗ
			|	РегистрСведений.ОграниченияДоступов КАК ОграниченияДоступов
			|ГДЕ
			|	ОграниченияДоступов.НеоперативноеПроведение = ИСТИНА
			|	И ОграниченияДоступов.Пользователь = &Пользователь";
			ЗапросОграничения.УстановитьПараметр("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
			Результат = ЗапросОграничения.Выполнить().Выбрать();
			Если Результат.Количество() = 0 Тогда
				Предупреждение ("Неоперативное проведение ЗАПРЕЩЕНО!");
				Отказ = ИСТИНА;
				Возврат;
			КонецЕсли;
		КонецЕсли;
		
		Если (РежимПроведения = РежимПроведенияДокумента.Неоперативный И РежимЗаписи = РежимЗаписиДокумента.Проведение) Тогда 
			ЗапросОграничения = НОВЫЙ Запрос;
			ЗапросОграничения.Текст = "ВЫБРАТЬ
			|	ОграниченияДоступов.Пользователь,
			|	ОграниченияДоступов.ГраницаДоступа,
			|	ОграниченияДоступов.КвоНеоперДней			
			|ИЗ
			|	РегистрСведений.ОграниченияДоступов КАК ОграниченияДоступов
			|ГДЕ
			|	ОграниченияДоступов.Пользователь = &Пользователь";
			ЗапросОграничения.УстановитьПараметр("Пользователь", глЗначениеПеременной("глТекущийПользователь"));
			Результат = ЗапросОграничения.Выполнить().Выбрать();
			Если Не Результат.Следующий() Тогда Возврат КонецЕсли;   
			ГраницаПользователя = ОпределитьНижнююГраницуДатыЗапретаПользователя(Результат.КвоНеоперДней,Источник.Дата) ;
			Если Результат.ГраницаДоступа > Источник.Дата ИЛИ Результат.ГраницаДоступа = Дата('00010101') ИЛИ ГраницаПользователя  Тогда
				Предупреждение ("ЗАПРЕЩЕНО Проводить документы в в указанном периоде");
				Отказ = ИСТИНА;
			КонецЕсли;
		КонецЕсли;
		
		
		
	#КонецЕсли
	
КонецПроцедуры
Функция ОпределитьНижнююГраницуДатыЗапретаПользователя(ЧиРаД,ИД)
			//    24*60*60=86400 -- количество секунд в сутке
			// ЧиРаД -- ЧислоРазрешенныхДней
			// выходные - если текущая дата понедельник и числонеоперативныхдней 1, 
			// тогда подвинуть границу на начало пятницы
выходные = 1;
Если ЧиРаД = 1 тогда
	Если ДеньНедели(ТекущаяДата()) = 1 Тогда 
		выходные = 3;
	КонецЕсли;
	НГ = НачалоДня(Дата(ТекущаяДата() - 86400*ЧиРаД*выходные));
ИначеЕсли ЧиРаД = 9999	Тогда // вариант без ограничения
	возврат Ложь;
ИначеЕсли ЧиРаД = 51 Тогда  // в противном случае речь идет о регламентированных задачах и граница определяется к началу месяца
	   						// точка отсчета 20-е число -- последний срок сдачи рег. отчетности
		   Если День(ТекущаяДата())>20 тогда
			   НГ = НачалоМесяца(ТекущаяДата());
		   Иначе
			   НГ = НачалоМесяца(ТекущаяДата() - 30*86400);
		   КонецЕсли;
Иначе   //Произвольное число дней 
	НГ = НачалоДня(Дата(ТекущаяДата() - 86400*ЧиРаД));	   
КонецЕсли;

если НГ < ИД Тогда
		возврат Ложь;
	Иначе
		возврат Истина;
	КонецЕсли;

КонецФункции