Модернизация ОС / Модуль менеджера

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

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

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

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

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

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

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

	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	
	ПолучитьДанныеДокумента(Запрос);

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

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

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

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

	ПолучитьДанныеДокумента(Запрос);

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

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

	ТекстыЗапроса = Новый СписокЗначений;

	ТекстЗапросаТаблицаСтоимостьОС(Запрос, ТекстыЗапроса, Неопределено);
	ТекстЗапросаТаблицаПрочиеРасходы(Запрос, ТекстыЗапроса, Неопределено);
	ТекстЗапросаТаблицаДвиженияДоходыРасходыПрочиеАктивыПассивы(Запрос, ТекстыЗапроса, Неопределено);


	МодернизацияОСЛокализация.ТаблицыДвиженийРасчетаСтоимости(Запрос, ТекстыЗапроса);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ТекстЗапросаТаблицаВтСуммаМодернизации(ТекстыЗапроса) Экспорт

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

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

Функция ТекстЗапросаТаблицаВтИсходныеПрочиеРасходы(Запрос, ТекстыЗапроса, ДопПоля)

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОбновлениеРегистров

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

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

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

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

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

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

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

Процедура ЗаполнитьСуммуЗатрат(Объект, ВыбранныеСтроки = Неопределено) Экспорт

	Если НЕ РасчетСебестоимостиПовтИсп.ФормироватьДвиженияПоРегистрамСебестоимости(Объект.Дата) Тогда
		Возврат;
	КонецЕсли; 
	
	ДатаДокумента = ?(Объект.Дата <> '000101010000', Объект.Дата, ТекущаяДатаСеанса());
	ТаблицаОС = Объект.ОС.Выгрузить(ВыбранныеСтроки);

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

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

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

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

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

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

#Область ОбновлениеИнформационнойБазы

// Добавляет в список процедуры-обработчики обновления данных ИБ
// 
// Параметры:
// 	Обработчики - см. ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Документы.МодернизацияОС2_4.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "2.5.25.92";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("a2a9710b-02c2-47a1-971d-5f5ccd780b98");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.МодернизацияОС2_4.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
	Обработчик.Комментарий = НСтр("ru = 'Обновляет документы ""Модернизация ОС""'");
	//++ Локализация
	Обработчик.Комментарий = НСтр("ru = 'Обновляет документы ""Модернизация ОС"":
								  |- Заполняет реквизит ""Инвестиционный налоговый вычет""'");
	//-- Локализация
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Документы.МодернизацияОС2_4.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Документы.МодернизацияОС2_4.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Документы.МодернизацияОС2_4.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

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

Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
	
	Замер = ОценкаПроизводительности.НачатьЗамерДлительнойОперации(
		"Документ.МодернизацияОС2_4.ОбработатьДанныеДляПереходаНаНовуюВерсию");

	ПолноеИмяОбъекта = "Документ.МодернизацияОС2_4";
	
	ОбновляемыеДанные = ОбновлениеИнформационнойБазы.ДанныеДляОбновленияВМногопоточномОбработчике(Параметры);
	
	ПроблемныхОбъектов = 0;
	ОбъектовОбработано = 0;

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

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

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

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

#КонецЕсли

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