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

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 12 18.01.23 17:40 Сейчас в теме
Если срок аренды продлили в договоре, нужно сделать документ Изменение условий аренды (лизинга)
3. user598469 12 18.01.23 17:42 Сейчас в теме
Если принципиально новым документом хотите отразить, то новое ОС заводить.
4. user829670 18.01.23 18:59 Сейчас в теме
(2) Договор новый
(3)Как вариант можно, но что со старым ОС в таком случае, полагаю, что амортизация все равно начисляется
Оставьте свое сообщение

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