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