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