Прекращение стандартных вычетов НДФЛ / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
	
#Область ПрограммныйИнтерфейс

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

КонецПроцедуры

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// СтандартныеПодсистемы.УправлениеДоступом

// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(Сотрудник)";
КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

#КонецОбласти

#КонецОбласти

#Область СлужебныйПрограммныйИнтерфейс

// Возвращает описание состава документа
//
// Возвращаемое значение:
//  Структура - см. ЗарплатаКадрыСоставДокументов.НовоеОписаниеСоставаОбъекта.
Функция ОписаниеСоставаОбъекта() Экспорт
	Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаФизическоеЛицоВШапке("Сотрудник", "");
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Область Печать

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - ТаблицаЗначений - состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
КонецПроцедуры

#КонецОбласти

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

Функция ДатаЗапрета(Знач ДатаДокумента, Знач Месяц) Экспорт
	
	Если Не ЗначениеЗаполнено(ДатаДокумента) Тогда
		ДатаДокумента = '39991231';
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Месяц) Тогда
		Месяц = '39991231';
	КонецЕсли;
	
	Возврат КонецГода(Мин(ДатаДокумента, Месяц));
	
КонецФункции

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

#КонецОбласти

#КонецЕсли

Связанные материалы