Ребята.
Необходимо внести определенные разъяснения.

В самом блоге я как-то не все описал. А в сам проект на axaptapedia видимо никто не посмотрел. (ничего, учту в след. раз).
По ссылке было описано замечание как раз по поводу работы на сервере/клиенте.
Вот, вырезал (это из метода обработки строк)
Цитата:
This method should not be implemented on the form and is merely here to avoid creating another object for the example
The processing should be implemented on a server based class
To pass the selected lines to the class for processing use the pack method of the set object, itemIdSet.pack()
This will create a container that you will pass on to the class. Then you unpack the container into a Set object
Set processLinesSet = Set::create(_packedSet), where _packedSet is the passed container
Теперь по замечаниям.
Прежде всего, спасибо за чтение, критику и рекомендации. Очень полезно мне и другим.
Цитата:
Сообщение от
mazzy
Потенциально это очень опасный метод.
класс Set "живет" и хранит свои данные в памяти (или в свопе) компьютера.
Поскольку это множество хранит данные с формы, то, скорее всего, он живет и хранит свои данные в памяти клиентского компьютера. Со всеми вытекающими последствиями к железу и свопу, если будет отмечено много записей.
Теоретически - да. Но, Вы должны согласиться, ни один юзер не будет отмечать, скажем, 2000 строк из 10000 тысяч. (проставляя галочки).
Этот механизм хорош для работы именно с ограниченным набором значений. К примеру, у нас что-то подобное используется при обработке строк закупки (перед обработкой накладной)
А даже если бы и выделяли 1000 строк, то это ни заняло бы мизерное количество памяти клиентской машины (да у меня электронная
NoteZilla в 6-7 раз больше кушает (причем, на постоянной основе, а не временно - до передачи в класс)
Цитата:
Сообщение от
mazzy
Кроме того, данные из класса Set нельзя будет использовать в запросе.
Не совсем понятно, зачем. Хотя, возможно, это и недостаток.
Кстати, опять же на Аксаптапедии, разместил снизу ссылку на использование стандартного подхода -
http://www.axaptapedia.com/Multiple_grid_selections
Цитата:
Сообщение от
mazzy
Пожалуйста, не превращайте Аксапту в 1С.
Не знаю почему, но юзерам так этот 1С нравится. Что они в нем нашли?
Цитата:
Сообщение от
belugin
а еще енумератор лучше итератора
Расскажи, расскажи про приемущества. Никогда енумераторы не пользовал. Всегда итераторы предпочитал.
Цитата:
Сообщение от
petr
Но чтобы избежать обработки выбранных записей на клиенте я бы посоветовал либо перекрыть метод clicked() на BtnProcessLines и вызвать из ней класс (у которого поставить св-во выполняться на сервере) и передать ему сформированный set упакованный в контейнер.
именно. см. выше
Завтра, если время найду, оформлю с использованием обработки через класс.
Еще раз, спасибо