Цитата:
Сообщение от
DesparioN
Проблема в том, что set будет формироваться на клиенте, т.е. пользователю придется ждать пока он сформируется. По возможности хотелось бы все перенести на сервер.
Если вас так волнует, что пользователи будут ждать заполнения Set на клиенте, не давайте им вообще выделять записи через Grid - пусть запускают
нечто (периодическую операцию, например) и через штатный механизм
фильтрации (кнопка Выбор, расширенный фильтр, все дела) отбирают записи, подлежащие обработке. Крыжить записи на форме - это для случаев, когда записей мало, а критерии выбора трудно формализуемы. Если пользователи отфильтровывают записи и потом выделяют их все, то это - избыточный шаг, они даже не видят все записи, которые хотят обработать, потому что на форму для отрисовки Grid тянется лишь несколько десятков записей из выборки.
Выделять все записи для обработки через Grid - это все равно что слать в СУБД запрос на выбор 100500 записей, получать их по сети, потом куда-то там сохранять их уникальные идентификаторы, передавать их обратно по сети в СУБД и слать запрос "обнови как записи вот с такими идентификаторами таким-то образом". Так ведь никто с СУБД не работает - все стараются сразу послать запрос "обнови таким-то образом записи, которые удовлетворяют таким-то критериям".
Тем более это актуально в случае пакетной обработки: обычно форму клиент открывает на одном сервере, а пакетная обработка запускается на другом, и между ними нужно передать данные, что именно следует обрабатывать. В этом плане запаковать запрос с критериями фильтрации проще и быстрее, чем запаковать Set/Map с идентификаторами каждой записи.
Если же записей обычно немного, то посмотрите на штатный подход передачи их с формы в класс-обработчик - FormLetter::getFormRecord().