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