Показать сообщение отдельно
Старый 21.02.2007, 22:21   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ребята.
Необходимо внести определенные разъяснения.
В самом блоге я как-то не все описал. А в сам проект на 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 упакованный в контейнер.
именно. см. выше



Завтра, если время найду, оформлю с использованием обработки через класс.
Еще раз, спасибо
За это сообщение автора поблагодарили: mazzy (5).