Одна ошибка с валютой в документе «Расход со счета» УНФ

У клиента не открывается документ «Расход со счета». Выдает ошибку «Поле объекта не обнаружено (Курс)».

Обнаружил в УНФ странный код:

Там вообще очень много условий, скорее всего, перепутан порядок их проверки.

Поэтому решил, что пока сделаю заглушку, курс можно брать из строки документа, а не из шапки, где этого реквизита нет. Думаю, потом починят этот код в будущих релизах и он заработает корректно.

Вот как выглядит код заглушки:

&ИзменениеИКонтроль(«ПолучитьСуммуПлатежаСтроки»)
Функция дор_ПолучитьСуммуПлатежаСтроки(ДокументОбъект, ТекущаяСтрока, ЭтоИзменениеДокумента)

    Если НЕ
ЭтоИзменениеДокумента И ТекущаяСтрока.ЭтоЗачет Тогда
        Если
ДокументОбъект.ВалютаДенежныхСредств = ТекущаяСтрока.ВалютаРасчетов Тогда
           
ТекущаяСуммаПлатежа = ТекущаяСтрока.СуммаРасчетов;
        ИначеЕсли
ТекущаяСтрока.СуммаРег <> 0 И ТекущаяСтрока.СуммаРасчетов <> 0 Тогда
           
// Для документов, которые оформлены раньше релиза 1.6.14 будем вычислять сумму расчетов так.
           
Если ДокументОбъект.ВалютаДенежныхСредств = Константы.НациональнаяВалюта.Получить() Тогда
               
ТекущаяСуммаПлатежа = ТекущаяСтрока.СуммаРег;
            Иначе
               
ТекущаяСуммаПлатежа = ТекущаяСтрока.СуммаРасчетов * ТекущаяСтрока.СуммаРег / ТекущаяСтрока.СуммаРасчетов;
#Вставка
               
//Осипов 2021-06-15 — исправление проблемы открытия документа
               
Попытка
                   
ТекущаяСуммаПлатежа = ТекущаяСуммаПлатежа / ?(ДокументОбъект.Курс = 0, 1, ДокументОбъект.Курс) * ?(ДокументОбъект.Кратность = 0, 1, ДокументОбъект.Кратность);
                   
ТекущаяСуммаПлатежа = Окр(ТекущаяСуммаПлатежа, 2);
                    Возврат
ТекущаяСуммаПлатежа; //Чтобы не выполнялся дальнейший код
               
Исключение
                КонецПопытки;
                Попытка
                   
ТекущаяСуммаПлатежа = ТекущаяСуммаПлатежа / ?(ТекущаяСтрока.Курс = 0, 1, ТекущаяСтрока.Курс) * ?(ТекущаяСтрока.Кратность = 0, 1, ТекущаяСтрока.Кратность);
                   
ТекущаяСуммаПлатежа = Окр(ТекущаяСуммаПлатежа, 2);
                    Возврат
ТекущаяСуммаПлатежа; //Чтобы не выполнялся дальнейший код
               
Исключение
                КонецПопытки;
#КонецВставки

КонецФункции

Интересно, что я прерываю выполнение кода, если код выполняется успешно через Возврат.

Объем: 0.5 час. Среда: УНФ 1.6.24.107.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 4

  1. Zuko:

    Неоправданное использование оператора Попытка

  2. fajij28770:

    >Думаю, потом починят этот код в будущих релизах и он заработает корректно.
    баг-то зарепортил или по-твоему там телепаты работают?

    • Там работают те, кто умело отгородились от баг-репортов. Куда писать баг-репорт без справок и регистраций, не знаю.

Добавить комментарий для fixin Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *