Реализация услуг и прочих активов / Модуль объекта

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

#Область ПрограммныйИнтерфейс

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

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

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

Процедура ПриКопировании(ОбъектКопирования)
	РасшифровкаПлатежа.Очистить();
	
	ПараметрыЗаполнения = Документы.РеализацияУслугПрочихАктивов.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
	УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
	
	СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
	
	СтруктураДействий = Новый Структура;
	КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
	СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект);
	СтруктураЗаполненияСтавкиНДС.ЗаполнениеНаОснованииКопирование = Истина;
	СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", СтруктураЗаполненияСтавкиНДС);
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Доходы, СтруктураДействий, КэшированныеЗначения);

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		КэшированныеЗначения.ОбработанныеСтроки,
		СтруктураДействий,
		Доходы,
		КэшированныеЗначения);
	
	ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
	
	ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект, "Доходы,Расходы");
	
	РеализацияУслугПрочихАктивовЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
	Автор = Пользователи.ТекущийПользователь();
	
КонецПроцедуры

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

	Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
		Отказ = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
	
	ИсправлениеДокументов.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
	
	ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);

	Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
		ЕстьКорректировки = Ложь;
		ПродажиСервер.ПроверитьНаличиеКорректировок(Ссылка, Ссылка, ЕстьКорректировки);
        Если ЕстьКорректировки Тогда
			ПродажиСервер.СообщитьОбОшибкахОтменаПроведенияЕстьКорректировки(Ссылка,Отказ);
		КонецЕсли; 
	КонецЕсли;
	
	ПараметрыРегистрации = Документы.РеализацияУслугПрочихАктивов.ПараметрыРегистрацииСчетовФактурВыданных(ЭтотОбъект);
	УчетНДСУП.АктуализироватьСчетаФактурыВыданныеПередЗаписью(ПараметрыРегистрации, РежимЗаписи, ПометкаУдаления, Проведен);
	
	Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		ДозаполнитьДанныеДоходов();
		
	КонецЕсли;
	
	ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(ЭтотОбъект, "Доходы,Расходы");
	
	СуммаДокумента = ЦенообразованиеКлиентСервер.ПолучитьСуммуДокумента(Доходы, ЦенаВключаетНДС);
	
	Если ЭтоНовый() И НЕ ЗначениеЗаполнено(Номер) Тогда
		УстановитьНовыйНомер();
	КонецЕсли;
	
	ИдентификаторПлатежа = ОбщегоНазначенияУТ.ПолучитьУникальныйИдентификаторПлатежа(ЭтотОбъект);
	
	ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
	
	//++ НЕ УТ

	//Настройка счетов учета
	НастройкаСчетовУчетаСервер.ПередЗаписью(ЭтотОбъект,
		Документы.РеализацияУслугПрочихАктивов.ПараметрыНастройкиСчетовУчета(ХозяйственнаяОперация));
	//-- НЕ УТ
	
	ПараметрыВыбораСтатейИАналитик = Документы.РеализацияУслугПрочихАктивов.ПараметрыВыбораСтатейИАналитик(
		ХозяйственнаяОперация, РеализацияВзаимозависимомуЛицу);
	ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
	
	УстановитьСвойстваИзмененияРеквизитов(ЭтотОбъект, ДополнительныеСвойства);
	
	РеализацияУслугПрочихАктивовЛокализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);

	Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
		Автор = Пользователи.ТекущийПользователь();
	КонецЕсли;

	//++ Локализация

	//++ НЕ УТ
	Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
		 ДополнительныеСвойства.Вставить("КонтролироватьСписаниеВНоль", Ложь);
	Иначе
		 ДополнительныеСвойства.Вставить("КонтролироватьСписаниеВНоль", Истина);
	КонецЕсли;
	//-- НЕ УТ

	//-- Локализация
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
	ДополнительныеСвойства.Вставить("НомерДокумента", Номер);
	
	РеализацияУслугПрочихАктивовЛокализация.ПриЗаписи(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	Если ДополнительныеСвойства.Свойство("ИзменилосьТолькоСостояниеПереходаПраваСобственности")
		И ДополнительныеСвойства.ИзменилосьТолькоСостояниеПереходаПраваСобственности Тогда
		ПропуститьПроверкуЗапретаИзмененияРегистров(Движения);
	КонецЕсли;
	
	СформироватьЗаданияКЗакрытиюМесяца();

	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
	
	РеализацияУслугПрочихАктивовЛокализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
	
	Если Не ДополнительныеСвойства.ИзменилосьТолькоСостояниеПереходаПраваСобственности Тогда
		ПараметрыРегистрации = Документы.РеализацияУслугПрочихАктивов.ПараметрыРегистрацииСчетовФактурВыданных(ЭтотОбъект);
		УчетНДСУП.АктуализироватьСчетаФактурыВыданныеПриПроведении(ПараметрыРегистрации);
	КонецЕсли;
	

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

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
	РеализацияУслугПрочихАктивовЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
	
	ПараметрыРегистрации = Документы.РеализацияУслугПрочихАктивов.ПараметрыРегистрацииСчетовФактурВыданных(ЭтотОбъект);
	УчетНДСУП.АктуализироватьСчетаФактурыВыданныеПриУдаленииПроведения(ПараметрыРегистрации);
	
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
	
	Если ТипДанныхЗаполнения = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
		УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(ДанныеЗаполнения);
		
		ПродажиСервер.ПроверитьВозможностьВводаНаОснованииСоглашения("РеализацияУслугПрочихАктивов",
			УсловияПродаж.ХозяйственнаяОперация);
		
		ДопустимыеСтатусы = Новый Массив();
		ДопустимыеСтатусы.Добавить(Перечисления.СтатусыСоглашенийСКлиентами.Действует);
		ОшибкиСтатуса = (УсловияПродаж.СтатусСоглашения <> Перечисления.СтатусыСоглашенийСКлиентами.Действует);
		ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСоглашения(УсловияПродаж.Типовое);
		ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(ДанныеЗаполнения, УсловияПродаж.СтатусСоглашения, , ОшибкиСтатуса, ДопустимыеСтатусы);
		
		Если (Не УсловияПродаж.Типовое) И ЗначениеЗаполнено(УсловияПродаж.Партнер) Тогда
			Партнер = УсловияПродаж.Партнер;
		КонецЕсли;
		Соглашение = ДанныеЗаполнения;
		Документы.РеализацияУслугПрочихАктивов.ЗаполнитьПоУсловиямПродаж(ЭтотОбъект, УсловияПродаж);
		
	//++ НЕ УТ
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ПодготовкаКПередачеНМА2_4") Тогда
		ЗаполнитьПоДокументуПодготовкаКПередачеНМА2_4(ДанныеЗаполнения);
	ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ПодготовкаКПередачеОС2_4") Тогда
		ЗаполнитьПоДокументуПодготовкаКПередачеОС2_4(ДанныеЗаполнения);
	//-- НЕ УТ
	КонецЕсли;

	РеализацияУслугПрочихАктивовЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);

	ПараметрыЗаполнения = Документы.РеализацияУслугПрочихАктивов.ПараметрыЗаполненияНалогообложенияНДСПродажи(ЭтотОбъект);
	УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(НалогообложениеНДС, ПараметрыЗаполнения);
	ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ЭтотОбъект, Ложь);
	ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
	
	ИнициализироватьДокумент(ДанныеЗаполнения);
	ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
	
	ПараметрыВыбораСтатейИАналитик = Документы.РеализацияУслугПрочихАктивов.ПараметрыВыбораСтатейИАналитик(
		ХозяйственнаяОперация, РеализацияВзаимозависимомуЛицу);
	ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
	
	ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения);
	
КонецПроцедуры

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
	
	Префикс = ОбщегоНазначенияУТПовтИсп.ДополнительныйПрефиксНумератораДокументыРеализацииТоваров();
	
КонецПроцедуры

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

#Область СлужебныеПроцедурыИФункции

#Область ИнициализацияИЗаполнение

Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
	
	Автор = Пользователи.ТекущийПользователь();
	Документы.РеализацияУслугПрочихАктивов.ЗаполнитьПоУмолчанию(ЭтотОбъект);
	
КонецПроцедуры

//++ НЕ УТ

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

Процедура ЗаполнитьПоДокументуПодготовкаКПередачеНМА2_4(ДанныеЗаполнения)
	
	ТекстЗапроса =
	"ВЫБРАТЬ
	|	Операция.Ссылка КАК Ссылка,
	|	Операция.Организация КАК Организация,
	|	Операция.Подразделение КАК Подразделение,
	|	ТабличнаяЧасть.НематериальныйАктив КАК НематериальныйАктив,
	|	Операция.Партнер КАК Партнер,
	|	Операция.Контрагент КАК Контрагент
	|ПОМЕСТИТЬ втДанныеОснования
	|ИЗ
	|	Документ.ПодготовкаКПередачеНМА2_4 КАК Операция
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПодготовкаКПередачеНМА2_4.НМА КАК ТабличнаяЧасть
	|		ПО (ТабличнаяЧасть.Ссылка = Операция.Ссылка)
	|ГДЕ
	|	Операция.Ссылка = &ДанныеЗаполнения
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ИСТИНА КАК РеализацияНаОсновании,
	|	втДанныеОснования.Ссылка КАК ДокументОснование,
	|	ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияВнеоборотныхАктивов) КАК ХозяйственнаяОперация,
	|	ЗНАЧЕНИЕ(Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено) КАК Статус,
	|	ДАТАВРЕМЯ(1, 1, 1) КАК ДатаПереходаПраваСобственности,
	|	втДанныеОснования.Организация КАК Организация,
	|	втДанныеОснования.Подразделение КАК Подразделение,
	|	втДанныеОснования.Партнер КАК Партнер,
	|	втДанныеОснования.Контрагент КАК Контрагент
	|ИЗ
	|	втДанныеОснования КАК втДанныеОснования
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ПРЕДСТАВЛЕНИЕ(втДанныеОснования.НематериальныйАктив) КАК Содержание,
	|	ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиДоходов.ПустаяСсылка) КАК СтатьяДоходов,
	|	втДанныеОснования.НематериальныйАктив КАК АналитикаДоходов,
	|	&ЕдиницаИзмеренияШтуки КАК ЕдиницаИзмерения,
	|	1 КАК Количество
	|ИЗ
	|	втДанныеОснования КАК втДанныеОснования
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиАктивовПассивов.НематериальныеАктивы) КАК СтатьяАктивовПассивов,
	|	втДанныеОснования.НематериальныйАктив КАК АналитикаАктивовПассивов,
	|	ЗНАЧЕНИЕ(Перечисление.ВидыВнеоборотныхАктивов.НМА) КАК ВидАктива,
	|	втДанныеОснования.НематериальныйАктив КАК ВнеоборотныйАктив
	|ИЗ
	|	втДанныеОснования КАК втДанныеОснования";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("Дата", ТекущаяДатаСеанса());
	Запрос.УстановитьПараметр("ДанныеЗаполнения", ДанныеЗаполнения);
	Запрос.УстановитьПараметр("ЕдиницаИзмеренияШтуки", Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду("796", Ложь));
	
	Пакет = Запрос.ВыполнитьПакет();
	
	Выборка = Пакет[Пакет.Количество()-3].Выбрать();
	Если Выборка.Следующий() Тогда
		ЗаполнитьЗначенияСвойств(ЭтотОбъект, Выборка);
	КонецЕсли;
	Доходы.Загрузить(Пакет[Пакет.Количество()-2].Выгрузить());
	Расходы.Загрузить(Пакет[Пакет.Количество()-1].Выгрузить());
	
КонецПроцедуры

//-- НЕ УТ

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

#Область Прочее

Процедура ПропуститьПроверкуЗапретаИзмененияРегистров(Движения)
	
	Для Каждого ТекНаборЗаписей Из Движения Цикл
		
		ТекНаборЗаписей.ДополнительныеСвойства.Вставить("ИзменилосьТолькоСостояниеПереходаПраваСобственности", Истина);

		Если Не ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов") 
			И (ТекНаборЗаписей.ЭтотОбъект.Метаданные().Имя = "РасчетыСКлиентами"
			ИЛИ ТекНаборЗаписей.ЭтотОбъект.Метаданные().Имя = "РасчетыСПоставщиками") Тогда
			Продолжить;
		КонецЕсли;
		
		ТекНаборЗаписей.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения", Истина);
	КонецЦикла;
	
КонецПроцедуры

Процедура ДозаполнитьДанныеДоходов()
	Для Каждого Строка Из Доходы Цикл
		Если НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС И Не ЗначениеЗаполнено(Строка.СтавкаНДС) Тогда
			Строка.СтавкаНДС = Справочники.СтавкиНДС.БезНДС;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры

//++ НЕ УТ

Процедура ПроверитьРеализациюВнеоборотныхАктивов(НепроверяемыеРеквизиты, Отказ)
	
	Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияОСсОтложеннымПереходомПрав Тогда
		ШаблонСообщения = НСтр("ru = 'Не заполнена колонка ""%1"" в строке %2 списка ""Основные средства""'");
		ПолеВнеоборотныйАктив = НСтр("ru = 'Основное средство'");
	Иначе
		ШаблонСообщения = НСтр("ru = 'Не заполнена колонка ""%1"" в строке %2 списка ""Внеоборотные активы""'");
		ПолеВнеоборотныйАктив = НСтр("ru = 'Внеоборотный актив'");
	КонецЕсли; 
	
	Если Расходы.Количество() = 0 Тогда
		Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияОСсОтложеннымПереходомПрав Тогда
			ТекстСообщения = НСтр("ru = 'Не введено ни одной строки в список ""Основные средства""'");
		Иначе
			ТекстСообщения = НСтр("ru = 'Не введено ни одной строки в список ""Внеоборотные активы""'");
		КонецЕсли; 
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, "Расходы", "", Отказ);
	КонецЕсли; 
	
	Для каждого ДанныеСтроки Из Расходы Цикл
		
		Если НЕ ЗначениеЗаполнено(ДанныеСтроки.ВидАктива) Тогда
			ТекстСообщения = СтрШаблон(ШаблонСообщения, НСтр("ru = 'Вид актива'"), Формат(ДанныеСтроки.НомерСтроки, "ЧГ="));
			Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Расходы", ДанныеСтроки.НомерСтроки, "ВидАктива");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "", Отказ);
		КонецЕсли; 
		
		Если НЕ ЗначениеЗаполнено(ДанныеСтроки.ВнеоборотныйАктив) Тогда
			ТекстСообщения = СтрШаблон(ШаблонСообщения, ПолеВнеоборотныйАктив, Формат(ДанныеСтроки.НомерСтроки, "ЧГ="));
			Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Расходы", ДанныеСтроки.НомерСтроки, "ВнеоборотныйАктив");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "", Отказ);
		КонецЕсли; 
		
		Если ДанныеСтроки.ВосстановитьАмортизационнуюПремию Тогда
			
			Если НЕ ЗначениеЗаполнено(ДанныеСтроки.СуммаАмортизационнойПремии) Тогда
				ТекстСообщения = СтрШаблон(ШаблонСообщения, НСтр("ru = 'Сумма амортизационной премии'"), Формат(ДанныеСтроки.НомерСтроки, "ЧГ="));
				Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Расходы", ДанныеСтроки.НомерСтроки, "СуммаАмортизационнойПремии");
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "", Отказ);
			КонецЕсли; 
			
			Если НЕ ЗначениеЗаполнено(ДанныеСтроки.СтатьяДоходов) Тогда
				ТекстСообщения = СтрШаблон(ШаблонСообщения, НСтр("ru = 'Статья доходов'"), Формат(ДанныеСтроки.НомерСтроки, "ЧГ="));
				Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Расходы", ДанныеСтроки.НомерСтроки, "СтатьяДоходов");
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "", Отказ);
			КонецЕсли; 
			
		КонецЕсли;
		
	КонецЦикла; 
	
КонецПроцедуры

Процедура ПроверитьРеализациюУслугПоАренде(Отказ)

	ШаблонСообщения = НСтр("ru = 'Не заполнена колонка ""Предмет аренды"" в строке %1 списка ""Выручка (доходы)""'");

	Для каждого ДанныеСтроки Из Доходы Цикл

		Если ДанныеСтроки.АрендныйКомпонентДоговора И НЕ ЗначениеЗаполнено(ДанныеСтроки.ПредметАренды) Тогда
			ТекстСообщения = СтрШаблон(ШаблонСообщения, Формат(ДанныеСтроки.НомерСтроки, "ЧГ="));
			Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Доходы", ДанныеСтроки.НомерСтроки, "ПредметАренды");
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "", Отказ);
		КонецЕсли; 

	КонецЦикла; 

КонецПроцедуры
 
//-- НЕ УТ

Процедура УстановитьСвойстваИзмененияРеквизитов(Объект, ДополнительныеСвойства)
	
	ИзменилосьТолькоСостояниеПереходаПраваСобственности = Ложь;
	
	Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
		ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияОСсОтложеннымПереходомПрав)
	 И Объект.Проведен Тогда
		НепроверяемыеРеквизиты = Новый Структура;
		НепроверяемыеРеквизиты.Вставить("Комментарий");
		НепроверяемыеРеквизиты.Вставить("ДатаПлатежа");
		НепроверяемыеРеквизиты.Вставить("ИдентификаторПлатежа");
		
		НепроверяемыеТабличныеЧасти = Новый Структура;
		НепроверяемыеТабличныеЧасти.Вставить("ДополнительныеРеквизиты");
		
		ИзмененияДокумента = ОбщегоНазначенияУТ.ИзмененияДокумента(Объект, НепроверяемыеРеквизиты, НепроверяемыеТабличныеЧасти);
		
		ИзменилосьТолькоСостояниеПереходаПраваСобственности = Истина;
		СтараяДатаПереходаПраваСобственности = Объект.ДатаПереходаПраваСобственности;
		
		Если ИзмененияДокумента.Свойство("ТабличныеЧасти") Тогда
			ИзменилосьТолькоСостояниеПереходаПраваСобственности = Ложь;
		КонецЕсли;
		
		Если ИзмененияДокумента.Свойство("Реквизиты") Тогда
			Для каждого Реквизит Из ИзмененияДокумента.Реквизиты Цикл
				
				Если Реквизит.Имя = "Статус" Тогда 
					
					Если (Реквизит.НовоеЗначение = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате
					 	ИЛИ Реквизит.СтароеЗначение = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате) Тогда
					 		
						ИзменилосьТолькоСостояниеПереходаПраваСобственности = Ложь;
						Прервать;
					КонецЕсли;
					
				ИначеЕсли Реквизит.Имя = "ДатаПереходаПраваСобственности" Тогда
					
					СтараяДатаПереходаПраваСобственности = Реквизит.СтароеЗначение;
					
				Иначе
					
					ИзменилосьТолькоСостояниеПереходаПраваСобственности = Ложь;
					Прервать;
					
				КонецЕсли;
				
			КонецЦикла;
		КонецЕсли;
	КонецЕсли;
	
	ДополнительныеСвойства.Вставить("ИзменилосьТолькоСостояниеПереходаПраваСобственности", 
		ИзменилосьТолькоСостояниеПереходаПраваСобственности);
		
	ДополнительныеСвойства.Вставить("СтараяДатаПереходаПраваСобственности", 
		СтараяДатаПереходаПраваСобственности);
	
КонецПроцедуры

Процедура СформироватьЗаданияКЗакрытиюМесяца()
	
	Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	//++ НЕ УТ

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

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

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

#КонецЕсли

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