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