Глюкавое закрытие месяца по ЕСХН в БП3
Клиент обратился с проблемой, что у него не закрывается месяц. Ошибка выглядела так:
В журнал регистрации у клиента недостаточно опыта было посмотреть, поэтому посмотрел я. И увидел такой текст ошибки:
Преобразование значения к типу Булево не может быть выполнено
{ОбщийМодуль.УчетУСН.Модуль(4866)}: Если ЕСХНИспользуется Тогда
{ОбщийМодуль.УчетУСН.Модуль(4369)}: РассчитатьНалогУСНОбъектДоходыМинусРасходы(КонтекстРасчета, ТаблицаПроводок, ТаблицаСправкиРасчета, Ошибки);
{Документ.РегламентнаяОперация.МодульОбъекта(3667)}: ДанныеРасчета =
...
Посмотрел код и убедился в очередной «красоте кода» от фирмы 1С (или ее подельников, конфигурация вроде как отраслевая). Вот здесь шло обращение к переменной ЕСХНИспользуется:
Которая выше инициализировалось только по одной ветке условия:
Я предложил клиенту написать расширение, которое закроет эту проблему. В итоге получился вот такой код:
&Вместо("РассчитатьНалогУСНОбъектДоходыМинусРасходы") Процедура иошесхн_РассчитатьНалогУСНОбъектДоходыМинусРасходы(КонтекстРасчета, ТаблицаПроводок, ТаблицаСправкаРасчет, Ошибки) //Осипов 2021-12-15 - исправление ошибки типовой конфигурации ЕСХНИспользуется = АгрокомплексСервер.УчетнаяПолитика_РежимНалогообложенияЕСХН(КонтекстРасчета.Организация, КонтекстРасчета.КонецОтчетногоПериода); ПродолжитьВызов(КонтекстРасчета, ТаблицаПроводок, ТаблицаСправкаРасчет, Ошибки); КонецПроцедуры
Увы, этот код не заработал, т.к. локальная переменная не передается в расширяемую функцию.
Пришлось использовать заплатку с контролем изменения.
Но сначала я ее написал неправильно:
И только со второго раза закрытие заработало (забыл про Вставка):
Протестировал — ошибок не выдало:
Написал клиенту честно: «Эта заплатка будет работать только на текущем релизе, возможно на нескольких последующих, потом слетит и расширение можно будет отключить. Возможно, 1С починит к этому моменту этот баг«.
С расширением пришлось повозиться больше ожидаемого, т.к. возник забавный нюанс в локальными переменными.
Среда: БП3 3.0 (3.0.2112.1) (3.0.105.45) . Объем: 0.5 час.
Свежие комментарии