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