bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

[NEW] Некорректное переопределение представления объекта ссылочного типа

Open ovcharenko-di opened this issue 2 years ago • 0 comments

Описание проблемы, ошибки, которую надо диагностировать

Платформа позволяет переопределить представление объектов ссылочных типов в процедуре ОбработкаПолученияПредставления. При этом часто нарушается стандарт 746:

  • в процедуре ОбработкаПолученияПолейПредставления не определяется состав полей и обращение идет к реквизитам текущего объекта "через точку".
  • в процедуре ОбработкаПолученияПредставления выполняются запросы к БД или явное получение объекта.

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

Стандарт 746

Параметры диагностики

Тип Статья на русском

  • [x] :ant: Ошибка
  • [ ] :cop: Уязвимость
  • [ ] :guardsman: Потенциальная уязвимость
  • [ ] :poop: Качество кода
  • [ ] :trollface: Другое

Важность Статья на русском

  • [ ] :broken_heart: Блокирующая / Blocker
  • [ ] :heart: Критическая / Critical
  • [x] :yellow_heart: Важная / Major
  • [ ] :blue_heart: Незначительная / Minor
  • [ ] :green_heart: Информационная / Info
  • [ ] :revolving_hearts: Другое

Тэги Статья на русском

  • [x] STANDARD - "Нарушение стандартов 1С"
  • [ ] LOCKINOS - "Не будет работать в другой ОС"
  • [ ] SQL - "Проблема с запросом"
  • [x] PERFORMANCE - "Проблема производительности"
  • [ ] BRAINOVERLOAD - "Непонятный код"
  • [ ] BADPRACTICE - "Плохая практика программирования"
  • [ ] CLUMSY - "Излишние действия"
  • [ ] DESIGN - "Ошибка в проектировании"
  • [ ] SUSPICIOUS - "Подозрительный код"
  • [ ] UNPREDICTABLE - "Непредсказуемо работающий код"
  • [ ] DEPRECATED - "Устаревшая функциональность"
  • [ ] ERROR - "Ошибочная конструкция"
  • [ ] LOCALIZE - "Проблемы локализации"

Время на исправление (минут)

10

Дополнительная информация

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

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Представление = Данные.Ссылка.НаименованиеДляПредставления;
КонецПроцедуры

Правильно:

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Поля.Добавить("НаименованиеДляПредставления");
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Представление = Данные.НаименованиеДляПредставления;
КонецПроцедуры

ovcharenko-di avatar Nov 24 '21 12:11 ovcharenko-di