Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Резюме
Дальше: Первый вариант решения

Использование контекстных серверных процедур для пересчета данных коллекций форм

Теперь рассмотрим пример, когда пересчет данных формы более эффективно выполнять на сервере. Мы уже говорили в предыдущем примере, что на сервере вычисления необходимо выполнять, когда на клиенте нет нужных типов данных, или когда используется сложный алгоритм расчета, содержащий много кода, или когда требуется обратиться к объекту, содержащемуся в форме, напрямую.

Однако в данном примере будет рассмотрен другой вопрос: где наиболее эффективно выполнять пересчет большого количества строк табличной части – на сервере или на клиенте?

С одной стороны, на серверный контекстный вызов платформа тратит время и ресурсы. Желательно бы этого избегать.

С другой стороны, на клиенте присутствуют не все строки коллекций форм (табличных частей, таблиц значений), а только их видимая часть. Остальные «дочитываются» с сервера динамически, по мере того как пользователь прокручивает таблицу. Или по мере того как разработчик перебирает коллекцию данных в реквизите формы из встроенного языка.

Таким образом, при массовом пересчете на клиенте все строки табличной части будут получены с сервера на клиент и все вернутся обратно при следующем контекстном вызове сервера.

Посмотрим, какое решение более оптимально. Рассмотрим пример.

Предположим, в табличной части расходной накладной содержатся товары и их цены. При нажатии кнопки Пересчет цен, расположенной в форме документа, должно производиться повышение цен товаров на 10 %, а также пересчет сумм продажи товаров как произведения их количества и цены (рис. 4.30).

Рис. 4.30. Пересчет цен товаров в расходной накладной

Рассмотрим возможные варианты решения этой задачи.

Назад: Резюме
Дальше: Первый вариант решения