Подтверждение оплаты НДС в бюджет / Модуль набора записей

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

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ, Замещение)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

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

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

Процедура ПриЗаписи(Отказ, Замещение)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

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

Процедура ПроверитьДатуЗапрета(Период)
	
	ШаблонЗапретаДанных = ДатыЗапретаИзменения.ШаблонДанныхДляПроверки();
	СтрокаШаблона = ШаблонЗапретаДанных.Добавить();
	СтрокаШаблона.Дата   = Период;
	СтрокаШаблона.Раздел = "РегламентныеОперации";
	
	Если ДатыЗапретаИзменения.НайденЗапретИзмененияДанных(ШаблонЗапретаДанных) Тогда
	
		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Не удалось записать данные оплаты НДС в периоде %1 из-за установленной даты запрета'"),
				Формат(Период,"ДФ='MMMM yyyy'"));
				
		ЗаписьЖурналаРегистрации(НСтр("ru = 'ОплатаНДС'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщения);
		
		ВызватьИсключение ТекстСообщения;
		
	КонецЕсли;
	
КонецПроцедуры

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

#КонецЕсли

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