Предварительный расчет бонусов в УНФ
У клиента перестала работать кнопка «Предварительный расчет бонусов»:

Выдает ошибку:
Ошибка при установке значения атрибута контекста (БезналичнаяОплата)
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(2796)}: Если ЕстьОплатаБонусами(Объект.БезналичнаяОплата) Тогда
{Документ.ЧекККМ.Форма.ФормаДокумента.Форма(2765)}: РассчитатьБонусыНаКлиенте();
по причине:
Нельзя изменять поле, содержащее объект данных формы
Из РМК начисление бонусов работает, но мне-то нужно было проверять в форме чека, там был вопрос по начислению бонусов.
Цепочка вызовов простая:



Проблема в типовом коде. Они настолько увлечены оптимизацией, что пытаются передать данные формы в клиент-серверный модуль. Видимо, не тестировалось.
Сначала хотел заменить так, но 1с плохо переваривает экранирование части составного оператора:
Если РеквизитыБП.НеНачислятьПриОплатеБонусами Тогда #Удаление //Осипов - делаю вызов корретным Если ЕстьОплатаБонусами(Объект.БезналичнаяОплата) Тогда #КонецУдаления #Вставка Если дор_ЕстьОплатаБонусамиНаСервере() Тогда #КонецВставки Если Не Объект.БонусныеБаллыКНачислению.Количество() = 0 Тогда Объект.БонусныеБаллыКНачислению.Очистить(); КонецЕсли; Возврат; КонецЕсли; КонецЕсли;
Пришлось копировать-вставлять:
#Удаление Если РеквизитыБП.НеНачислятьПриОплатеБонусами Тогда Если ЕстьОплатаБонусами(Объект.БезналичнаяОплата) Тогда Если Не Объект.БонусныеБаллыКНачислению.Количество() = 0 Тогда Объект.БонусныеБаллыКНачислению.Очистить(); КонецЕсли; Возврат; КонецЕсли; КонецЕсли; #КонецУдаления #Вставка Если РеквизитыБП.НеНачислятьПриОплатеБонусами Тогда Если дор_ЕстьОплатаБонусамиНаСервере() Тогда Если Не Объект.БонусныеБаллыКНачислению.Количество() = 0 Тогда Объект.БонусныеБаллыКНачислению.Очистить(); КонецЕсли; Возврат; КонецЕсли; КонецЕсли;
После этого заработало.
Среда: УНФ 3.0.13.374. Объем: 0.5 час
