Ошибка типовой УНФ как доказательство отсутствия тестов
Ходит много споров, пишут ли разработчики типовых конфигураций авто-тесты для проверки конфигураций.
Исходя из тех ошибок, с которыми я сталкивался на практике, думаю тотального тестирования методов нет.
Рассмотрим банальную ошибку в типовом коде УНФ 1.6.27.167 :
&НаКлиенте Процедура РасходыКонтрагентПриИзменении(Элемент) РасходыКонтрагентПриИзмененииНаСервере() КонецПроцедуры &НаСервере Процедура РасходыКонтрагентПриИзмененииНаСервере() ТекущиеДанные = Элементы.Расходы.ТекущиеДанные; ТекущиеДанные.Договор = Справочники.ДоговорыКонтрагентов.ПоДокументуКонтрагентуОрганизацииИВидуОперации( Объект.Ссылка, ТекущиеДанные.Контрагент, Объект.Организация); КонецПроцедуры
Ошибка заключается в том, что на сервере нет текущих данных.
Как могла покрытая тестами конфигурация пройти тестирование, непонятно. Вывод — тесты не покрывают весь функционал.
Пришлось исправлять за 1С в форме документа «Прочие расходы»:
&НаКлиенте &Вместо("РасходыКонтрагентПриИзменении") Процедура УНФ_РасходыКонтрагентПриИзменении(Элемент) //В типовой 1с ошибка, поэтому заменяем своим кодом ТекущиеДанные = Элементы.Расходы.ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда ТекущиеДанные.Договор = дор_РасходыКонтрагентПриИзмененииНаСервере(ТекущиеДанные.Контрагент); КонецЕсли; //ПродолжитьВызов(Элемент); КонецПроцедуры Функция дор_РасходыКонтрагентПриИзмененииНаСервере(Контрагент) Возврат Справочники.ДоговорыКонтрагентов.ПоДокументуКонтрагентуОрганизацииИВидуОперации( Объект.Ссылка, Контрагент, Объект.Организация); КонецФункции
Вот как такой код попадает в релиз? Для чего придуманы тесты, дорогая 1С?
как в процедуре «…ПриИзменении» может не быть текущих данных? Если Вы используете эту процедуру иным способом, то она не предназначена для этого, наверное.
Не может. Но 1с не могла удержаться и не устроить из модулей «ком грязи» где все намешано в кучу. Форма орисывается в одном модуле на стороне клиента и на стороне сервера. Забыть чего где и через какую задницу/гланды вам доступно — как два палтца об асфальт. На ютубе полно роликов типа головоломок — как это херовина работает на 1с, почему я получаю такой результат? Ну и в основе там недокументированные фичи и «патамушта». И все это подается с какой-то инфернальной гордостью «знай наших» — по хорошему разработчиков объектной модели надо бить ногами, но 1сники эти залепухи воспринимают как некую продвинутость. Люди которым периодически набрасывают с лопаты разнообразные костыли под видом «мегафич»и не к такому привычны
ну нет, со временем конечно, становится понятна логика. Больше всего это напоминает работу сайта. Если воспринимать как клиентскую часть в браузере и серверную удаленно.
Но объектная модель кривовато. Особенно мне нравится термин «Управляемые формы», хотя они абсолютно не управляемы.