Поступление в аренду ОС

1. user829670 17.01.23 10:00 Сейчас в теме
Доброго времени суток, 1С Бух 3.0.115.19

Ситуация такая: ОС приняли в аренду в начале года, срок аренды по документу завершился 02.12.2022, создали новый док Поступления в аренду - но он не проводится
документ Поступление в аренду, датированный 31.12.2022 не проводится, ошибка "Для основного средства уже зафиксировано состояние <Принято к учету>
документом <Поступление в аренду (лизинг) номер пусть будет 001 от 03.01.2022 7:00:00>. Дата состояния: 03.01.2022"

Ок, заходим в 001, видим, что срок аренды истекает 02.12.2022, дак что ему не хватает? Идем в модуль объекта, далее выходим на процедуру в общем модуле ПроверитьВозможностьИзмененияСостоянияОС(ТаблицаОС, ТаблицаРеквизиты, Отказ) , она возвращает отказ
приведу код:
Если Не ЗначениеЗаполнено(ТаблицаОС) Тогда
		Возврат;
	КонецЕсли;
	
	Параметры = ПодготовитьПараметрыВозможностьИзмененияСостоянияОС(ТаблицаОС, ТаблицаРеквизиты);
	Реквизиты = Параметры.Реквизиты[0];

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

	Запрос.УстановитьПараметр("Организация", Реквизиты.Организация );
	Запрос.УстановитьПараметр("Состояние", Реквизиты.СостояниеОС);
	Запрос.УстановитьПараметр("Документ", Реквизиты.Регистратор);
	Запрос.УстановитьПараметр("ТаблицаОС", Параметры.ТаблицаОС);
	Запрос.УстановитьПараметр("Период", Реквизиты.Период);

	Если ТранзакцияАктивна() Тогда

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

	КонецЕсли;

	РезультатЗапроса = Запрос.Выполнить();
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Выборка = РезультатЗапроса.Выбрать();

		ШаблонСообщения = НСтр("ru = 'Для основного средства <%1 (%2)> в организации <%3> уже зафиксировано состояние <%4>
			|документом <%5>. Дата состояния: %6'");

		Пока Выборка.Следующий() Цикл
			ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Выборка.ОсновноеСредство,
				Выборка.КодОС, Реквизиты.Организация, Реквизиты.СостояниеОС, Выборка.Регистратор, Формат(Выборка.ДатаСостояния, "ДФ=dd.MM.yyyy"));
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Реквизиты.Регистратор, Реквизиты.ИмяСписка + "["
				+ Формат(Выборка.НомерСтроки - 1, "ЧН=0; ЧГ=") + "].ОсновноеСредство", "Объект", Отказ);
		КонецЦикла;
     
		
		Возврат;   
		
	КонецЕсли;

	Если Реквизиты.СостояниеОС = Перечисления.СостоянияОС.ПринятоКУчету Тогда
		Запрос.УстановитьПараметр("Дата", Реквизиты.Период);

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

		РезультатЗапроса = Запрос.Выполнить();
		Если НЕ РезультатЗапроса.Пустой() Тогда
			Выборка = РезультатЗапроса.Выбрать();

			ШаблонСообщения = НСтр("ru = 'Основное средство <%1 (%2)> принято к учету в организации <%3>
				|документом <%4>. Дата состояния: %5'");

			Пока Выборка.Следующий() Цикл
				ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Выборка.ОсновноеСредство,
					Выборка.КодОС, Выборка.Организация, Выборка.Регистратор, Формат(Выборка.ДатаСостояния, "ДФ=dd.MM.yyyy"));
				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Реквизиты.Регистратор, Реквизиты.ИмяСписка + "["
					+ Формат(Выборка.НомерСтроки - 1, "ЧН=0; ЧГ=") + "].ОсновноеСредство", "Объект", Отказ);
			КонецЦикла;

			Возврат;
		КонецЕсли;
	ИначеЕсли Реквизиты.СостояниеОС = Перечисления.СостоянияОС.СнятоСУчета Тогда
		ПроверитьСостояниеОСПринятоКУчету(Параметры.ТаблицаОС, Параметры.Реквизиты, Отказ);
	КонецЕсли;
Показать


Так же создан документ Списание ОС, в котором указано, что списать ОС по истечению аренды, но документ Поступления все равно не проводится. В модуле указано, что если в регистре СостояниеОС есть запись по данной ОС со статусом ПринятоКУчету то документ не проводить. А как же проверка на то чтобы уточнить текущий статус ОС? Просьба подсказать варианты решения
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user598469 11 18.01.23 17:40 Сейчас в теме
Если срок аренды продлили в договоре, нужно сделать документ Изменение условий аренды (лизинга)
3. user598469 11 18.01.23 17:42 Сейчас в теме
Если принципиально новым документом хотите отразить, то новое ОС заводить.
4. user829670 18.01.23 18:59 Сейчас в теме
(2) Договор новый
(3)Как вариант можно, но что со старым ОС в таком случае, полагаю, что амортизация все равно начисляется
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот