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