Ошибка типовой УНФ как доказательство отсутствия тестов

Ходит много споров, пишут ли разработчики типовых конфигураций авто-тесты для проверки конфигураций.

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

Рассмотрим банальную ошибку в типовом коде УНФ 1.6.27.167 :

&НаКлиенте
Процедура РасходыКонтрагентПриИзменении(Элемент)
	РасходыКонтрагентПриИзмененииНаСервере()
КонецПроцедуры

&НаСервере
Процедура РасходыКонтрагентПриИзмененииНаСервере()
	ТекущиеДанные = Элементы.Расходы.ТекущиеДанные;
	ТекущиеДанные.Договор = Справочники.ДоговорыКонтрагентов.ПоДокументуКонтрагентуОрганизацииИВидуОперации(
		Объект.Ссылка, ТекущиеДанные.Контрагент, Объект.Организация);
КонецПроцедуры

Ошибка заключается в том, что на сервере нет текущих данных.

Как могла покрытая тестами конфигурация пройти тестирование, непонятно. Вывод — тесты не покрывают весь функционал.

Пришлось исправлять за 1С в форме документа «Прочие расходы»:


&НаКлиенте
&Вместо("РасходыКонтрагентПриИзменении")
Процедура УНФ_РасходыКонтрагентПриИзменении(Элемент)
	//В типовой 1с ошибка, поэтому заменяем своим кодом
	ТекущиеДанные = Элементы.Расходы.ТекущиеДанные;
	Если ТекущиеДанные <> Неопределено Тогда
		ТекущиеДанные.Договор = дор_РасходыКонтрагентПриИзмененииНаСервере(ТекущиеДанные.Контрагент);
	КонецЕсли;

	//ПродолжитьВызов(Элемент);
КонецПроцедуры     

Функция дор_РасходыКонтрагентПриИзмененииНаСервере(Контрагент)
	Возврат Справочники.ДоговорыКонтрагентов.ПоДокументуКонтрагентуОрганизацииИВидуОперации(
		Объект.Ссылка, Контрагент, Объект.Организация);
КонецФункции


Вот как такой код попадает в релиз? Для чего придуманы тесты, дорогая 1С?

fixin

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

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

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

  1. rzd:

    как в процедуре «…ПриИзменении» может не быть текущих данных? Если Вы используете эту процедуру иным способом, то она не предназначена для этого, наверное.

    • Павел:

      Не может. Но 1с не могла удержаться и не устроить из модулей «ком грязи» где все намешано в кучу. Форма орисывается в одном модуле на стороне клиента и на стороне сервера. Забыть чего где и через какую задницу/гланды вам доступно — как два палтца об асфальт. На ютубе полно роликов типа головоломок — как это херовина работает на 1с, почему я получаю такой результат? Ну и в основе там недокументированные фичи и «патамушта». И все это подается с какой-то инфернальной гордостью «знай наших» — по хорошему разработчиков объектной модели надо бить ногами, но 1сники эти залепухи воспринимают как некую продвинутость. Люди которым периодически набрасывают с лопаты разнообразные костыли под видом «мегафич»и не к такому привычны

      • ну нет, со временем конечно, становится понятна логика. Больше всего это напоминает работу сайта. Если воспринимать как клиентскую часть в браузере и серверную удаленно.
        Но объектная модель кривовато. Особенно мне нравится термин «Управляемые формы», хотя они абсолютно не управляемы.

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

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