Изменение параметров ОС (2.2) / Модуль менеджера

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область БлокировкаПриОбновленииИБ

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

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

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

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

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

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

#КонецЕсли

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