Списание ОС / Модуль менеджера

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

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

#Область Проведение

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

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

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

// Формирует таблицы движений при отложенном проведении.
//
// Параметры:
//  МенеджерВременныхТаблиц - МенеджерВременныхТаблиц - Содержит временные таблицы, которые используются при формировании движений.
//
// Возвращаемое значение:
//  см. ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения
//
Функция ТаблицыОтложенногоФормированияДвижений(МенеджерВременныхТаблиц) Экспорт

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

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

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

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

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

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

#Область Команды

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	Документы.ПрочееОприходованиеТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	Команда = ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	Если Команда <> Неопределено Тогда
		Команда.ВидимостьВФормах = "ФормаСписка";
	КонецЕсли;
	
	СписаниеОСЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);

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

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

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	СписаниеОСЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);

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

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

	СписаниеОСЛокализация.ДобавитьКомандыПечати(КомандыПечати);

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

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

#Область ДляВызоваИзДругихПодсистем

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

#Область РабочееМесто

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

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

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

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

// Представление реквизитов.
// 
// Параметры:
//  Организация - СправочникСсылка.Организации
// 
// Возвращаемое значение:
//  Соответствие - Представление реквизитов
Функция ПредставлениеРеквизитов(Организация) Экспорт

	ПредставлениеРеквизитов = Новый Соответствие;

	ВалютаУпр = Константы.ВалютаУправленческогоУчета.Получить();
	ВалютаРегл = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
	
	ВалютаРеглПредставление = "";
	Если ЗначениеЗаполнено(ВалютаРегл) Тогда
		ВалютаРеглПредставление = "(" + Строка(ВалютаРегл) + ")";
	КонецЕсли;
	
	ВедетсяРегламентированныйУчетВНА = ВнеоборотныеАктивыСлужебный.ВедетсяРегламентированныйУчетВНА();
	
	Если ВедетсяРегламентированныйУчетВНА Тогда
		
		ПредставлениеРеквизитов.Вставить("ОС.СуммаСписанияБУ", СокрЛП(СтрШаблон(НСтр("ru = 'Сумма регл. %1'"), ВалютаРеглПредставление)));
		ПредставлениеРеквизитов.Вставить("ОС.СуммаСписанияУУ", СтрШаблон(НСтр("ru = 'Сумма упр. (%1)'"), Строка(ВалютаУпр)));
		
	Иначе
		
		Если ВалютаРегл = ВалютаУпр Тогда
			ПредставлениеРеквизитов.Вставить("ОС.СуммаСписанияБУ", НСтр("ru = 'Сумма'"));
			ПредставлениеРеквизитов.Вставить("ОС.СуммаСписанияУУ", НСтр("ru = 'Сумма'"));
		Иначе
			ПредставлениеРеквизитов.Вставить("ОС.СуммаСписанияБУ", СокрЛП(СтрШаблон(НСтр("ru = 'Сумма %1'"), ВалютаРеглПредставление)));
			ПредставлениеРеквизитов.Вставить("ОС.СуммаСписанияУУ", СтрШаблон(НСтр("ru = 'Сумма (%1)'"), Строка(ВалютаУпр)));
		КонецЕсли;
		
	КонецЕсли; 
	
	Возврат ПредставлениеРеквизитов;
	
КонецФункции

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

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

#Область Проведение

Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
	
	ИсточникиДанных = Новый Соответствие;
	Возврат ИсточникиДанных;
	
КонецФункции

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт

	ТекстыЗапроса = Новый СписокЗначений;
	
	ПолноеИмяДокумента = "Документ.СписаниеОС2_4";
	
	ЗначенияПараметров = ЗначенияПараметровПроведения();
	ПереопределениеРасчетаПараметров = Новый Структура;
	ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
	
	ВЗапросеЕстьИсточник = Истина;
	
	Если ИмяРегистра = "РеестрДокументов" Тогда
		
		ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(ТекстыЗапроса, ИмяРегистра);
		СинонимТаблицыДокумента = "ДанныеДокумента";
		
	ИначеЕсли ИмяРегистра = "ДокументыПоОС" Тогда
		
		ТекстЗапроса = ТекстЗапросаТаблицаДокументыПоОС(ТекстыЗапроса, ИмяРегистра);
		СинонимТаблицыДокумента = "ДанныеДокумента";
		
	Иначе
		ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
		ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
		ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
		
		ВызватьИсключение ТекстИсключения;
	КонецЕсли;
	
	Если ИмяРегистра = "РеестрДокументов"
		ИЛИ ИмяРегистра = "ДокументыПоОС" Тогда
		
		ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
										ТекстЗапроса,
										ПолноеИмяДокумента,
										СинонимТаблицыДокумента,
										ВЗапросеЕстьИсточник,
										ПереопределениеРасчетаПараметров);
	Иначе	
		
		ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
										ТекстЗапроса,
										ПолноеИмяДокумента,
										СинонимТаблицыДокумента,
										ПереопределениеРасчетаПараметров);
	КонецЕсли; 

	Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
	Результат.ЗначенияПараметров = ЗначенияПараметров;
	Результат.ТекстЗапроса = ТекстЗапроса;
	
	Возврат Результат;
	
КонецФункции

Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДопПараметры)
	
	ПроведениеДокументов.ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка, ДопПараметры);

	СформироватьТаблицуВтСписокДокументов(Запрос);
	ПолучитьДанныеДокумента(Запрос);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка КАК Ссылка,
	|	ДанныеДокумента.Период КАК Период,
	|	ДанныеДокумента.Номер КАК Номер,
	|	ДанныеДокумента.Организация КАК Организация,
	|	ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|";

	Результат = Запрос.Выполнить();
	Реквизиты = Результат.Выбрать();
	Реквизиты.Следующий();
	
	Для Каждого Колонка Из Результат.Колонки Цикл
		Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
	КонецЦикла;
	
	ЗначенияПараметровПроведения = ЗначенияПараметровПроведения(Реквизиты);
	Для каждого КлючИЗначение Из ЗначенияПараметровПроведения Цикл
		Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
	КонецЦикла; 
	
	РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
	
КонецПроцедуры

Процедура СформироватьТаблицуВтСписокДокументов(Запрос)
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	СписокДокументов.Ссылка КАК Ссылка,
	|	СписокДокументов.Организация КАК Организация,
	|	СписокДокументов.Дата КАК Период
	|
	|ПОМЕСТИТЬ ВтСписокДокументов
	|
	|ИЗ
	|	Документ.СписаниеОС2_4 КАК СписокДокументов
	|
	|ГДЕ
	|	СписокДокументов.Ссылка = &Ссылка
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Ссылка
	|";
	
	Запрос.Выполнить();
	
КонецПроцедуры

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

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

Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)
	
	ЗначенияПараметровПроведения = Новый Структура;
	ВнеоборотныеАктивы.ДополнитьЗначенияПараметровПроведенияПриСписанииОС(ЗначенияПараметровПроведения);

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

	Если Реквизиты <> Неопределено Тогда
		ЗначенияПараметровПроведения.Вставить("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
	КонецЕсли;
	
	Возврат ЗначенияПараметровПроведения;
	
КонецФункции

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

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

Процедура ТекстЗапросаТаблицаПервоначальныеСведенияОС(ТекстыЗапроса, Регистры)

	ИмяРегистра = "ПервоначальныеСведенияОС";
	
	Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат;
	КонецЕсли;
	
	ВнеоборотныеАктивыСлужебный.ТекстЗапросаТаблицаВтРасширеннаяТаблицаОС(ТекстыЗапроса);
	ВнеоборотныеАктивыСлужебный.ТекстЗапросаТаблицаВтПервоначальныеСведенияОС(ТекстыЗапроса, "ВтРасширеннаяТаблицаОС");
	
	ВнеоборотныеАктивыСлужебный.ТекстЗапросаТаблицаВтПервоначальныеСведенияОС(
		ТекстыЗапроса, "ВтРасширеннаяТаблицаОС", "ВтПервоначальныеСведенияОС_СУчетомИсправлений", Истина);
		
	ТекстЗапросаТаблицаВтТаблицаОС(ТекстыЗапроса);
	
	ТекстЗапроса = СписаниеОСЛокализация.ТекстЗапросаТаблицаПервоначальныеСведенияОС();
	Если ТекстЗапроса = Неопределено Тогда
		
		ТекстЗапроса =
		"ВЫБРАТЬ
		|	ДанныеДокумента.Ссылка КАК Регистратор,
		|	ДанныеДокумента.Период КАК Период,
		|	ДАТАВРЕМЯ(1,1,1) КАК ДатаИсправления,
		|
		|	ДанныеДокумента.Организация КАК Организация,
		|	ПервоначальныеСведенияОС.ОсновноеСредство КАК ОсновноеСредство,
		|
		|	ПервоначальныеСведенияОС.ПорядокУчетаБУ КАК ПорядокУчетаБУ,
		|	ПервоначальныеСведенияОС.ПорядокУчетаУУ КАК ПорядокУчетаУУ,
		|	ПервоначальныеСведенияОС.МетодНачисленияАмортизацииБУ КАК МетодНачисленияАмортизацииБУ,
		|	ПервоначальныеСведенияОС.ПервоначальнаяСтоимостьБУ КАК ПервоначальнаяСтоимостьБУ,
		|	ПервоначальныеСведенияОС.ПервоначальнаяСтоимостьУУ КАК ПервоначальнаяСтоимостьУУ,
		|	ПервоначальныеСведенияОС.ДатаВводаВЭксплуатациюБУ КАК ДатаВводаВЭксплуатациюБУ,
		|	ПервоначальныеСведенияОС.ДатаВводаВЭксплуатациюУУ КАК ДатаВводаВЭксплуатациюУУ,
		|	ПервоначальныеСведенияОС.ДокументВводаВЭксплуатациюБУ КАК ДокументВводаВЭксплуатациюБУ,
		|	ПервоначальныеСведенияОС.ДокументВводаВЭксплуатациюУУ КАК ДокументВводаВЭксплуатациюУУ,
		|
		|	ВЫБОР
		|		КОГДА ДанныеДокумента.ОтражатьВРеглУчете
		|			ТОГДА ДанныеДокумента.Ссылка 
		|		ИНАЧЕ ПервоначальныеСведенияОС.ДокументСнятияСУчетаБУ
		|	КОНЕЦ КАК ДокументСнятияСУчетаБУ,
		|
		|	ВЫБОР
		|		КОГДА ДанныеДокумента.ОтражатьВУпрУчете
		|			ТОГДА ДанныеДокумента.Ссылка 
		|		ИНАЧЕ ПервоначальныеСведенияОС.ДокументСнятияСУчетаУУ
		|	КОНЕЦ КАК ДокументСнятияСУчетаУУ
		|
		|ИЗ
		|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
		|
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ втПервоначальныеСведенияОС КАК ПервоначальныеСведенияОС
		|		ПО ПервоначальныеСведенияОС.Ссылка = ДанныеДокумента.Ссылка
		|
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПервоначальныеСведенияОС_СУчетомИсправлений КАК ДанныеРегистраПоследнее
		|		ПО ДанныеРегистраПоследнее.Ссылка = ПервоначальныеСведенияОС.Ссылка
		|			И ДанныеРегистраПоследнее.ОсновноеСредство = ПервоначальныеСведенияОС.ОсновноеСредство
		|
		|ГДЕ
		|	ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
		|
		|	И (НЕ ДанныеДокумента.РежимИсправленияСПрошлойДаты
		|		ИЛИ ЕСТЬNULL(ДанныеРегистраПоследнее.Период, ДАТАВРЕМЯ(1,1,1)) < ДанныеДокумента.ДатаСписания)
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	ДанныеДокумента.Ссылка КАК Регистратор,
		|	ДанныеДокумента.ДатаСписания КАК Период,
		|	ДанныеДокумента.Период КАК ДатаИсправления,
		|
		|	ДанныеДокумента.Организация КАК Организация,
		|	ПервоначальныеСведенияОС.ОсновноеСредство КАК ОсновноеСредство,
		|
		|	ПервоначальныеСведенияОС.ПорядокУчетаБУ КАК ПорядокУчетаБУ,
		|	ПервоначальныеСведенияОС.ПорядокУчетаУУ КАК ПорядокУчетаУУ,
		|	ПервоначальныеСведенияОС.МетодНачисленияАмортизацииБУ КАК МетодНачисленияАмортизацииБУ,
		|	ПервоначальныеСведенияОС.ПервоначальнаяСтоимостьБУ КАК ПервоначальнаяСтоимостьБУ,
		|	ПервоначальныеСведенияОС.ПервоначальнаяСтоимостьУУ КАК ПервоначальнаяСтоимостьУУ,
		|	ПервоначальныеСведенияОС.ДатаВводаВЭксплуатациюБУ КАК ДатаВводаВЭксплуатациюБУ,
		|	ПервоначальныеСведенияОС.ДатаВводаВЭксплуатациюУУ КАК ДатаВводаВЭксплуатациюУУ,
		|	ПервоначальныеСведенияОС.ДокументВводаВЭксплуатациюБУ КАК ДокументВводаВЭксплуатациюБУ,
		|	ПервоначальныеСведенияОС.ДокументВводаВЭксплуатациюУУ КАК ДокументВводаВЭксплуатациюУУ,
		|
		|	ВЫБОР
		|		КОГДА ДанныеДокумента.ОтражатьВРеглУчете
		|			ТОГДА ДанныеДокумента.Ссылка 
		|		ИНАЧЕ ПервоначальныеСведенияОС.ДокументСнятияСУчетаБУ
		|	КОНЕЦ КАК ДокументСнятияСУчетаБУ,
		|
		|	ВЫБОР
		|		КОГДА ДанныеДокумента.ОтражатьВУпрУчете
		|			ТОГДА ДанныеДокумента.Ссылка 
		|		ИНАЧЕ ПервоначальныеСведенияОС.ДокументСнятияСУчетаУУ
		|	КОНЕЦ КАК ДокументСнятияСУчетаУУ
		|
		|ИЗ
		|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
		|
		|		ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаТаблицаОС КАК ТаблицаОС
		|		ПО ДанныеДокумента.Ссылка = ТаблицаОС.Ссылка
		|
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПервоначальныеСведенияОС_СУчетомИсправлений КАК ПервоначальныеСведенияОС
		|		ПО ПервоначальныеСведенияОС.Ссылка = ТаблицаОС.Ссылка
		|			И ПервоначальныеСведенияОС.ОсновноеСредство = ТаблицаОС.ОсновноеСредство
		|
		|ГДЕ
		|	ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
		|	И ДанныеДокумента.РежимИсправленияСПрошлойДаты
		|";
		
	КонецЕсли;
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
КонецПроцедуры

Процедура ТекстЗапросаТаблицаПорядокУчетаОСБУ(ТекстыЗапроса, Регистры)

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

	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка                            КАК Регистратор,
	|	ДанныеДокумента.Период                            КАК Период,
	|	ДАТАВРЕМЯ(1,1,1)                                  КАК ДатаИсправления,
	|
	|	ДанныеДокумента.Организация                       КАК Организация,
	|	ТаблицаОС.ОсновноеСредство                        КАК ОсновноеСредство,
	|
	|	ПорядокУчетаОСБУ.АмортизационнаяГруппа            КАК АмортизационнаяГруппа,
	|	ПорядокУчетаОСБУ.НедвижимоеИмущество              КАК НедвижимоеИмущество,
	|	ПорядокУчетаОСБУ.ИнвестиционныйНалоговыйВычет     КАК ИнвестиционныйНалоговыйВычет,
	|
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета)    КАК СостояниеБУ,
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета)    КАК СостояниеНУ,
	|	ЛОЖЬ                                              КАК НачислятьАмортизациюБУ,
	|	ЛОЖЬ                                              КАК НачислятьАмортизациюНУ
	|
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаОС КАК ТаблицаОС
	|		ПО ТаблицаОС.Ссылка = ДанныеДокумента.Ссылка
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПорядокУчетаОСБУ КАК ПорядокУчетаОСБУ
	|		ПО ПорядокУчетаОСБУ.Ссылка = ТаблицаОС.Ссылка
	|			И ПорядокУчетаОСБУ.ОсновноеСредство = ТаблицаОС.ОсновноеСредство
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПорядокУчетаОСБУ_СУчетомИсправлений КАК ДанныеРегистраПоследнее
	|		ПО ДанныеРегистраПоследнее.Ссылка = ТаблицаОС.Ссылка
	|			И ДанныеРегистраПоследнее.ОсновноеСредство = ТаблицаОС.ОсновноеСредство
	|
	|ГДЕ
	|	ДанныеДокумента.ОтражатьВРеглУчете
	|	И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
	|
	|	И (НЕ ДанныеДокумента.РежимИсправленияСПрошлойДаты
	|		ИЛИ ЕСТЬNULL(ДанныеРегистраПоследнее.Период, ДАТАВРЕМЯ(1,1,1)) < ДанныеДокумента.ДатаСписания)
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка                            КАК Регистратор,
	|	ДанныеДокумента.ДатаСписания                      КАК Период,
	|	ДанныеДокумента.Период                            КАК ДатаИсправления,
	|
	|	ДанныеДокумента.Организация                       КАК Организация,
	|	ПорядокУчетаОСБУ.ОсновноеСредство                 КАК ОсновноеСредство,
	|
	|	ПорядокУчетаОСБУ.АмортизационнаяГруппа            КАК АмортизационнаяГруппа,
	|	ПорядокУчетаОСБУ.НедвижимоеИмущество              КАК НедвижимоеИмущество,
	|	ПорядокУчетаОСБУ.ИнвестиционныйНалоговыйВычет     КАК ИнвестиционныйНалоговыйВычет,
	|
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета)    КАК СостояниеБУ,
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета)    КАК СостояниеНУ,
	|	ЛОЖЬ                                              КАК НачислятьАмортизациюБУ,
	|	ЛОЖЬ                                              КАК НачислятьАмортизациюНУ
	|
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаОС КАК ТаблицаОС
	|		ПО ТаблицаОС.Ссылка = ДанныеДокумента.Ссылка
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПорядокУчетаОСБУ КАК ПорядокУчетаОСБУ
	|		ПО ПорядокУчетаОСБУ.Ссылка = ТаблицаОС.Ссылка
	|			И ПорядокУчетаОСБУ.ОсновноеСредство = ТаблицаОС.ОсновноеСредство
	|
	|ГДЕ
	|	ДанныеДокумента.ОтражатьВРеглУчете
	|	И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
	|	И ДанныеДокумента.РежимИсправленияСПрошлойДаты
	|";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
КонецПроцедуры

Процедура ТекстЗапросаТаблицаПорядокУчетаОСУУ(ТекстыЗапроса, Регистры)

	ИмяРегистра = "ПорядокУчетаОСУУ";
	
	Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат;
	КонецЕсли;
	
	ТекстЗапросаТаблицаВтТаблицаОС(ТекстыЗапроса);
	ВнеоборотныеАктивыСлужебный.ТекстЗапросаТаблицаВтРасширеннаяТаблицаОС(ТекстыЗапроса);
	
	ВнеоборотныеАктивыСлужебный.ТекстЗапросаТаблицаВтПорядокУчетаОСУУ(
		ТекстыЗапроса, "ВтРасширеннаяТаблицаОС", "ВтПорядокУчетаОСУУ_СУчетомИсправлений", Истина);
	
	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка       КАК Регистратор,
	|	ДанныеДокумента.Период       КАК Период,
	|	ДАТАВРЕМЯ(1,1,1)             КАК ДатаИсправления,
	|	ДанныеДокумента.Организация  КАК Организация,
	|	ТаблицаОС.ОсновноеСредство   КАК ОсновноеСредство,
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета) КАК Состояние
	|
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаОС КАК ТаблицаОС
	|		ПО ТаблицаОС.Ссылка = ДанныеДокумента.Ссылка
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПорядокУчетаОСУУ_СУчетомИсправлений КАК ДанныеРегистраПоследнее
	|		ПО ДанныеРегистраПоследнее.Ссылка = ТаблицаОС.Ссылка
	|			И ДанныеРегистраПоследнее.ОсновноеСредство = ТаблицаОС.ОсновноеСредство
	|
	|ГДЕ
	|	ДанныеДокумента.ОтражатьВУпрУчете
	|	И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
	|
	|	И (НЕ ДанныеДокумента.РежимИсправленияСПрошлойДаты
	|		ИЛИ ЕСТЬNULL(ДанныеРегистраПоследнее.Период, ДАТАВРЕМЯ(1,1,1)) < ДанныеДокумента.ДатаСписания)
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка       КАК Регистратор,
	|	ДанныеДокумента.ДатаСписания КАК Период,
	|	ДанныеДокумента.Период       КАК ДатаИсправления,
	|	ДанныеДокумента.Организация  КАК Организация,
	|	ТаблицаОС.ОсновноеСредство   КАК ОсновноеСредство,
	|	ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета) КАК Состояние
	|
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаОС КАК ТаблицаОС
	|		ПО ТаблицаОС.Ссылка = ДанныеДокумента.Ссылка
	|
	|ГДЕ
	|	ДанныеДокумента.ОтражатьВУпрУчете
	|	И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
	|	И ДанныеДокумента.РежимИсправленияСПрошлойДаты
	|";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
КонецПроцедуры

Процедура ТекстЗапросаТаблицаПереданныеВАрендуОС(ТекстыЗапроса, Регистры)

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

	ВнеоборотныеАктивыСлужебный.ТекстЗапросаТаблицаВтПереданныеВАрендуОС(
		ТекстыЗапроса, "ВтРасширеннаяТаблицаОС", "ВтПереданныеВАрендуОС_СУчетомИсправлений", Истина);

	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка      КАК Регистратор,
	|	ДанныеДокумента.Период      КАК Период,
	|	ДАТАВРЕМЯ(1,1,1)            КАК ДатаИсправления,
	|	ДанныеДокумента.Организация КАК Организация,
	|	ТаблицаОС.ОсновноеСредство  КАК ОсновноеСредство
	|
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПереданныеВАрендуОС КАК ТаблицаОС
	|		ПО ТаблицаОС.Ссылка = ДанныеДокумента.Ссылка
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВтПереданныеВАрендуОС_СУчетомИсправлений КАК ДанныеРегистраПоследнее
	|		ПО ДанныеРегистраПоследнее.Ссылка = ТаблицаОС.Ссылка
	|			И ДанныеРегистраПоследнее.ОсновноеСредство = ТаблицаОС.ОсновноеСредство
	|
	|ГДЕ
	|	ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
	|
	|	И (НЕ ДанныеДокумента.РежимИсправленияСПрошлойДаты
	|		ИЛИ ЕСТЬNULL(ДанныеРегистраПоследнее.Период, ДАТАВРЕМЯ(1,1,1)) < ДанныеДокумента.ДатаСписания)
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	ДанныеДокумента.Ссылка       КАК Регистратор,
	|	ДанныеДокумента.ДатаСписания КАК Период,
	|	ДанныеДокумента.Период       КАК ДатаИсправления,
	|	ДанныеДокумента.Организация  КАК Организация,
	|	ТаблицаОС.ОсновноеСредство   КАК ОсновноеСредство
	|
	|ИЗ
	|	ДанныеДокументаРеквизиты КАК ДанныеДокумента
	|
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПереданныеВАрендуОС КАК ТаблицаОС
	|		ПО ТаблицаОС.Ссылка = ДанныеДокумента.Ссылка
	|
	|ГДЕ
	|	ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СписаниеОСЧастичное)
	|	И ДанныеДокумента.РежимИсправленияСПрошлойДаты
	|";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
КонецПроцедуры	

Процедура ТекстЗапросаТаблицаПараметрыАмортизацииОСБУ(Запрос, ТекстыЗапроса, Регистры)

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

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

Процедура ТекстЗапросаТаблицаПараметрыАмортизацииОСУУ(Запрос, ТекстыЗапроса, Регистры)

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

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

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

Процедура ТекстЗапросаТаблицаАмортизацияОС(ТекстыЗапроса)

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

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

Процедура ТекстЗапросаТаблицаОбесценениеВНА(ТекстыЗапроса)

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

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

Процедура ТекстЗапросаТаблицаСтоимостьОС(ТекстыЗапроса)

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

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

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

Процедура ТекстЗапросаТаблицаПрочиеАктивыПассивы(ТекстыЗапроса)

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

Процедура ТекстЗапросаТаблицаДвиженияПоПрочимАктивамПассивам(ТекстыЗапроса)

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

Процедура ТекстЗапросаТаблицаДвиженияДоходыРасходыПрочиеАктивыПассивы(ТекстыЗапроса)
	
	ИмяРегистра = "ДвиженияДоходыРасходыПрочиеАктивыПассивы";

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

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

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

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

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

	Возврат ТекстЗапроса;
	
КонецФункции

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

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

#Область ПроведениеПоРеглУчету

Функция ТекстОтраженияВРеглУчете() Экспорт

	Возврат СписаниеОСЛокализация.ТекстОтраженияВРеглУчете();

КонецФункции

Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт

	Возврат "";

КонецФункции

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

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

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

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

Функция ПолучитьДанныеДляПечатнойФормыОС4(МассивОбъектов) Экспорт
	
	Возврат СписаниеОСЛокализация.ПолучитьДанныеДляПечатнойФормыОС4(МассивОбъектов);
	
КонецФункции

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

#Область Заполнение

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

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

	Объект.ОС.Очистить();

	Пока Выборка.Следующий() Цикл
		ЗаполнитьЗначенияСвойств(Объект.ОС.Добавить(), Выборка);
	КонецЦикла;
	
	Если Объект.ОС.Количество() <> 0 
		И ЗначениеЗаполнено(Объект.ОС[0].ОсновноеСредство) Тогда

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

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

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

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

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

	ПараметрыНастройки.ЭлементыФормы.Добавить("ПредставлениеОтраженияВРеглУчете");
	
	Возврат ПараметрыНастройки;
	
КонецФункции

// Заполняет сумму списания на основании выбытия ТМЦ.
// 
// Параметры:
//  Объект - ДокументОбъект.СписаниеОС2_4 - Документ
Процедура ЗаполнитьСуммуСписанияНаОснованииВыбытияТМЦ(Объект) Экспорт

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

			Если СтрокаВыбытие.База <> СтрокаВыбытие.БазаДоВыбытия Тогда
				Коэффициент = ?(СтрокаВыбытие.БазаДоВыбытия <> 0, СтрокаВыбытие.База / СтрокаВыбытие.БазаДоВыбытия, 0);
			Иначе
				Коэффициент = 1;
			КонецЕсли;
				
			СуммаСписанияУУ = Окр(СтрокаСтоимость.Стоимость * Коэффициент, 2);
			СуммаСписанияБУ = Окр(СтрокаСтоимость.СтоимостьРегл * Коэффициент, 2);
			СуммаСписанияНУ = Окр(СтрокаСтоимость.СтоимостьНУ * Коэффициент, 2);
			СуммаСписанияПР = Окр(СтрокаСтоимость.СтоимостьПР * Коэффициент, 2);
			СуммаСписанияЛСБУ = Окр(СтрокаСтоимость.ЛиквидационнаяСтоимостьРегл * Коэффициент, 2);
			СуммаСписанияЛСУУ = Окр(СтрокаСтоимость.ЛиквидационнаяСтоимость * Коэффициент, 2);
			
			СтрокаСтоимость.Стоимость = СтрокаСтоимость.Стоимость - СуммаСписанияУУ;
			СтрокаСтоимость.СтоимостьРегл = СтрокаСтоимость.СтоимостьРегл - СуммаСписанияБУ;
			СтрокаСтоимость.СтоимостьНУ = СтрокаСтоимость.СтоимостьНУ - СуммаСписанияНУ;
			СтрокаСтоимость.СтоимостьПР = СтрокаСтоимость.СтоимостьПР - СуммаСписанияПР;
			
			СтрокаСтоимость.ЛиквидационнаяСтоимость = СтрокаСтоимость.ЛиквидационнаяСтоимость - СуммаСписанияЛСУУ;
			СтрокаСтоимость.ЛиквидационнаяСтоимостьРегл = СтрокаСтоимость.ЛиквидационнаяСтоимостьРегл - СуммаСписанияЛСБУ;
			
			Если СтрокаВыбытие.Учесть Тогда
			
				Если Объект.ОтражатьВУпрУчете Тогда
					ДанныеСтроки.СуммаСписанияУУ = ДанныеСтроки.СуммаСписанияУУ + СуммаСписанияУУ;
					ДанныеСтроки.ЛиквидационнаяСтоимость = СтрокаСтоимость.ЛиквидационнаяСтоимость;
				КонецЕсли;
				
				Если Объект.ОтражатьВРеглУчете Тогда
					
					ДанныеСтроки.СуммаСписанияБУ = ДанныеСтроки.СуммаСписанияБУ + СуммаСписанияБУ;
					ДанныеСтроки.СуммаСписанияНУ = ДанныеСтроки.СуммаСписанияНУ + СуммаСписанияНУ;
					ДанныеСтроки.СуммаСписанияПР = ДанныеСтроки.СуммаСписанияПР + СуммаСписанияПР;
					
					ДанныеСтроки.СуммаСписанияВР = 
						ДанныеСтроки.СуммаСписанияБУ
						- ДанныеСтроки.СуммаСписанияНУ
						- ДанныеСтроки.СуммаСписанияПР;
						
					ДанныеСтроки.ЛиквидационнаяСтоимостьРегл = СтрокаСтоимость.ЛиквидационнаяСтоимостьРегл;
					
				КонецЕсли;
		
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЦикла;
	
КонецПроцедуры

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

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

	Если ДоступныеСтатьи.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если ДоступныеСтатьи.Количество() = 1
		ИЛИ НЕ ЗначениеЗаполнено(СтатьяРасходовВыбытие) Тогда
			
		СтатьяРасходовВыбытие = ДоступныеСтатьи[0];
		
	КонецЕсли;
	
КонецПроцедуры

Функция ВыбытияТМЦ(Объект)

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

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

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

#КонецЕсли

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