Работаю с таблицей значений. Возник вопрос, где лучше обрабатывать строки таблицы значений, на клиенте или на сервере? Таблица представляет собой 3 колонки, в двух из которых содержатся примитивы (строка и булево), а в третьей ссылки на объекты. Есть кнопка, которая меняет поле, содержащее булево значений, у всех строк таблицы значений. Читал у Хрусталевой, что сервер передает на клиент не все значения таблицы значений, а только порции по 35 строк, остальное подгружается по мере необходимости. По этой логике изменение всех значений строк на клиенте приведет к многочисленным вызовам сервера для подзагрузки строк. Таким образом по идее лучше работать с таблицей значений на сервере. Но я попробовал опытным путем изменить значения всех строк на клиенте и обращений к серверу не было. Как я понял, все, что я на сервере загрузил в таблицу значений полностью передалось на клиент. Теперь я не понимаю, как работает таблица значений с данными, она их подгружает порциями на клиенте или передает все при передаче таблицы значений на клиент с сервера? И соответственно становится непонятно, как работать с большим количеством строк таблицы значений, через клиент, взаимодействуя с ДаннымиФормыКоллекция или идти на сервер и там все менять? В таблице около 400 строк.
---
Попробуйте сформировать ТЗ в ПриСозданииНаСервере и обойти ее на клиенте. Вот код модуля формы внешней обработки:

```1c
    &НаКлиенте
    Процедура ОбойтиСтрокиТаблицы(Команда)

    Для Каждого Стр Из Таблица Цикл

    КонецЦикла;

    КонецПроцедуры

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Для Сч = 1 По 2695 Цикл
    НоваяСтрока = Таблица.Добавить();
    НоваяСтрока.Реквизит1 = Новый УникальныйИдентификатор;
    КонецЦикла;

    КонецПроцедуры
```
В прикреплении: первый скрин – обработка только открыта, серверные вызовы очищены, второй – после выполнения команды ОбойтиСтрокиТаблицы.
---
В таблице около 400 строк

Для такого количества строк, вообще не важно где менять.
Если у вас на форме конечно нет еще чего-то очень большого, что каждый серверный вызов занимает несколько секунд.
---
Да уже разобрался, с учетом моей ситуации (я загружаю все строки в форму после ее создания) мне выгоднее проводить операцию по изменению строк на клиенте, чтобы не передавать инфу на сервер лишний раз. Но по сути без разницы
---
Если вам не надо работать с данными БД - то и работайте себе на клиенте.
---
Мне нужно проверять, какое имеются ли строки с полем Булево = Истина, если имеются начинает работать дальнейший алгоритм, где строки таблицы с полем Булево = Истина будут задействованы в групповом изменении данных. Соответственно, чтобы проверить есть ли у меня строки с полем Булево = Истина, мне либо идти на сервер и проверять ДанныеФормыКоллекции там, либо проверять ДанныеФормыКоллекции на клиенте и не ходить на сервер лишний раз. Я думал, что изменение множества строк на клиенте приведут к вызовам сервера для подгрузки строк (как написано у Хрусталевой), но когда проверил это не увидел ни одного вызова сервера. Теперь мне интересно, существует ли эта подгрузка строк с сервера или же я могу безопасно манипулировать большим количеством строк на клиенте, не боясь того, что это будет приводить к лишним запросам к серверу для подгрузки строк.
---
существует ли эта подгрузка строк с сервера Существует при первом обращении к элементу коллекции на клиенте, ровно так как вы сказали - каждые 35 строк.
---
Тогда я не понимаю, почему при переборе строк коллекции на Клиенте и изменении поля каждой строки, у меня не происходит подгрузка. Я наверное что-то неправильно понимаю. Когда мы открываем форму с таблицей значений, таблица значений показывает нам только 35 строк? Если это так, то почему при изменении на Клиенте у меня нет обращений к Серверу.

Код максимально примитивный

```1c
    Для Каждого Строка Из Список Цикл
    Строка.Флаг = Истина;
    КонецЦикла;
```
---
Вы путаете программную работу со строками, и визуальное отображение строк на форме.. Подгрузка - это при прокрутке списка например...
---
Попробуйте сформировать ТЗ в ПриСозданииНаСервере и обойти ее на клиенте. Вот код модуля формы внешней обработки:

```1c
    &НаКлиенте
    Процедура ОбойтиСтрокиТаблицы(Команда)

    Для Каждого Стр Из Таблица Цикл

    КонецЦикла;

    КонецПроцедуры

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Для Сч = 1 По 2695 Цикл
    НоваяСтрока = Таблица.Добавить();
    НоваяСтрока.Реквизит1 = Новый УникальныйИдентификатор;
    КонецЦикла;

    КонецПроцедуры
```
В прикреплении: первый скрин – обработка только открыта, серверные вызовы очищены, второй – после выполнения команды ОбойтиСтрокиТаблицы.
---
Понял, получается, когда я в своем коде формирую таблицу не при создании формы, а уже после ее создания, я передаю с сервера на клиент уже все строки, а если бы я формировал ее при создании формы и обращался после этого к строкам, тогда были бы обращения к серверу, верно? Получается, раз я заполняю таблицу не при создании формы, а уже после ее создания, то мне нет смысла идти на сервер для ее обхода, так как на клиенте уже все есть?
---
На данный момент, да, можно сделать такой вывод, но я бы не опирался на этот опыт. Это черный ящик, мы не можем на 100% утверждать, что не будет неявных серверных вызовов при работе на клиенте в другой ситуации. Поэтому я бы все таки рекомендовал обходить таблицу на сервере.
---
Понял, спасибо за помощь :)
---
не парьтесь, делайте все на сервере
только уделяйте внимание определению
с контекстом или без контекста
как показал опыт это в разы быстрее чем перебирать коллекцию в форме на клиенте