Код-ревью Middle Управляемые формы обновлено
Ревью модуля формы
Вопрос
Перед вами фрагмент модуля формы документа. Найдите ошибки контекста и производительности.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
Строка = Элементы.Товары.ТекущиеДанные;
Строка.Сумма = ПолучитьСумму(Строка.Цена, Строка.Количество);
КонецПроцедуры
&НаСервере
Функция ПолучитьСумму(Цена, Количество)
Возврат Цена * Количество;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Объект.Контрагент.ЭтоПокупатель Тогда
Элементы.Скидка.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Заполнить(Команда)
Таблица = Новый ТаблицаЗначений;
КонецПроцедуры
Коротко
Две типовые темы: лишние серверные вызовы с передачей формы и попытки работать с базой или серверными объектами на клиенте. Обе ловятся правилом «на клиенте только интерфейс и данные формы».
Что должен найти ревьюер
- Производительностьстрока 4Серверный вызов с контекстом формы ради умножения: вся форма с табличной частью идёт на сервер на каждое изменение количества. Считать на клиенте.
- Производительностьстрока 7Функция для чистого вычисления помечена &НаСервере. Если вызов сервера всё же нужен, без контекста.
- Ошибкастрока 14Обращение к реквизиту ссылки через точку на клиенте недоступно: Объект.Контрагент.ЭтоПокупатель не работает на тонком клиенте.
- Стильстрока 15Настройку видимости по данным лучше делать в ПриСозданииНаСервере, без лишнего вызова и мигания интерфейса.
- Ошибкастрока 21ТаблицаЗначений недоступна на клиенте.
Разбор
Две типовые темы: лишние серверные вызовы с передачей формы и попытки работать с базой или серверными объектами на клиенте. Обе ловятся правилом «на клиенте только интерфейс и данные формы».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.