Код-ревью Middle Управляемые формы обновлено

Ревью модуля формы

Вопрос

Перед вами фрагмент модуля формы документа. Найдите ошибки контекста и производительности.

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
	Строка = Элементы.Товары.ТекущиеДанные;
	Строка.Сумма = ПолучитьСумму(Строка.Цена, Строка.Количество);
КонецПроцедуры

&НаСервере
Функция ПолучитьСумму(Цена, Количество)
	Возврат Цена * Количество;
КонецФункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	Если Объект.Контрагент.ЭтоПокупатель Тогда
		Элементы.Скидка.Видимость = Истина;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Заполнить(Команда)
	Таблица = Новый ТаблицаЗначений;
КонецПроцедуры

Коротко

Две типовые темы: лишние серверные вызовы с передачей формы и попытки работать с базой или серверными объектами на клиенте. Обе ловятся правилом «на клиенте только интерфейс и данные формы».

Что должен найти ревьюер

  1. Производительностьстрока 4
    Серверный вызов с контекстом формы ради умножения: вся форма с табличной частью идёт на сервер на каждое изменение количества. Считать на клиенте.
  2. Производительностьстрока 7
    Функция для чистого вычисления помечена &НаСервере. Если вызов сервера всё же нужен, без контекста.
  3. Ошибкастрока 14
    Обращение к реквизиту ссылки через точку на клиенте недоступно: Объект.Контрагент.ЭтоПокупатель не работает на тонком клиенте.
  4. Стильстрока 15
    Настройку видимости по данным лучше делать в ПриСозданииНаСервере, без лишнего вызова и мигания интерфейса.
  5. Ошибкастрока 21
    ТаблицаЗначений недоступна на клиенте.

Разбор

Две типовые темы: лишние серверные вызовы с передачей формы и попытки работать с базой или серверными объектами на клиенте. Обе ловятся правилом «на клиенте только интерфейс и данные формы».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.