Глюкавое закрытие месяца по ЕСХН в БП3

Клиент обратился с проблемой, что у него не закрывается месяц. Ошибка выглядела так:

В журнал регистрации у клиента недостаточно опыта было посмотреть, поэтому посмотрел я. И увидел такой текст ошибки:

Преобразование значения к типу Булево не может быть выполнено
{ОбщийМодуль.УчетУСН.Модуль(4866)}:    Если ЕСХНИспользуется Тогда
{ОбщийМодуль.УчетУСН.Модуль(4369)}:        РассчитатьНалогУСНОбъектДоходыМинусРасходы(КонтекстРасчета, ТаблицаПроводок, ТаблицаСправкиРасчета, Ошибки);
{Документ.РегламентнаяОперация.МодульОбъекта(3667)}:    ДанныеРасчета = 
...

Посмотрел код и убедился в очередной «красоте кода» от фирмы 1С (или ее подельников, конфигурация вроде как отраслевая). Вот здесь шло обращение к переменной ЕСХНИспользуется:

Которая выше инициализировалось только по одной ветке условия:

Я предложил клиенту написать расширение, которое закроет эту проблему. В итоге получился вот такой код:

&Вместо("РассчитатьНалогУСНОбъектДоходыМинусРасходы")
Процедура иошесхн_РассчитатьНалогУСНОбъектДоходыМинусРасходы(КонтекстРасчета, ТаблицаПроводок, ТаблицаСправкаРасчет, Ошибки)
    //Осипов 2021-12-15 - исправление ошибки типовой конфигурации
    ЕСХНИспользуется = АгрокомплексСервер.УчетнаяПолитика_РежимНалогообложенияЕСХН(КонтекстРасчета.Организация, КонтекстРасчета.КонецОтчетногоПериода);

    ПродолжитьВызов(КонтекстРасчета, ТаблицаПроводок, ТаблицаСправкаРасчет, Ошибки);
КонецПроцедуры

Увы, этот код не заработал, т.к. локальная переменная не передается в расширяемую функцию.

Пришлось использовать заплатку с контролем изменения.

Но сначала я ее написал неправильно:

И только со второго раза закрытие заработало (забыл про Вставка):

Протестировал — ошибок не выдало:

Написал клиенту честно: «Эта заплатка будет работать только на текущем релизе, возможно на нескольких последующих, потом слетит и расширение можно будет отключить. Возможно, 1С починит к этому моменту этот баг«.

С расширением пришлось повозиться больше ожидаемого, т.к. возник забавный нюанс в локальными переменными.

Среда: БП3 3.0 (3.0.2112.1) (3.0.105.45) . Объем: 0.5 час.

fixin

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

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

Добавить комментарий

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