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

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

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

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

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

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

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

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

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


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

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

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


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

fixin

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

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

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

  1. rzd:

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

    • Павел:

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

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

Добавить комментарий для Павел Отменить ответ

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