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