Теперь рассмотрим пример, когда пересчет данных формы более эффективно выполнять на сервере. Мы уже говорили в предыдущем примере, что на сервере вычисления необходимо выполнять, когда на клиенте нет нужных типов данных, или когда используется сложный алгоритм расчета, содержащий много кода, или когда требуется обратиться к объекту, содержащемуся в форме, напрямую.
Однако в данном примере будет рассмотрен другой вопрос: где наиболее эффективно выполнять пересчет большого количества строк табличной части – на сервере или на клиенте?
С одной стороны, на серверный контекстный вызов платформа тратит время и ресурсы. Желательно бы этого избегать.
С другой стороны, на клиенте присутствуют не все строки коллекций форм (табличных частей, таблиц значений), а только их видимая часть. Остальные «дочитываются» с сервера динамически, по мере того как пользователь прокручивает таблицу. Или по мере того как разработчик перебирает коллекцию данных в реквизите формы из встроенного языка.
Таким образом, при массовом пересчете на клиенте все строки табличной части будут получены с сервера на клиент и все вернутся обратно при следующем контекстном вызове сервера.
Посмотрим, какое решение более оптимально. Рассмотрим пример.
Предположим, в табличной части расходной накладной содержатся товары и их цены. При нажатии кнопки Пересчет цен, расположенной в форме документа, должно производиться повышение цен товаров на 10 %, а также пересчет сумм продажи товаров как произведения их количества и цены (рис. 4.30).

Рис. 4.30. Пересчет цен товаров в расходной накладной
Рассмотрим возможные варианты решения этой задачи.