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