Показать сообщение отдельно
Старый 05.08.2014, 09:38   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от kitty Посмотреть сообщение
c) Почему в стандарте обычно в init датасоурса , query пересоздается с нуля?
Например, если на форме датасоцрс inventTable. Почему в его init вместо добавления доп таблиц и критериев к уже имеющемуся запросу по inventTable, запрос создается с нуля заново (т.е q = new query(). a.addDataSource (inventTable) ... ) и потом все, что получилось запихивается обратно через this.query(q)...
В большинстве случаев такой код написан по незнанию. Несмотря на то, что он стандартный. Майкрософт, очевидно, тоже увлёкся экономией на программистах.

При пересоздании query теряются динамические связи между формами (да, их тоже можно снова добавить, но обычно разработчики об этом забывают). Кроме того, если query в init() пересоздаётся заново, то в дальнейшем могут возникнуть сложности с добавлением в эту форму функциональности. Например, если вы захотите добавить ещё один data source, то придётся модифицировать метод init(). А модифицированный метод стандартного приложения - это автоматически плюс несколько минут ко времени, которое требуется для установки хотфикса или сервис-пака.

В общем, не пересоздавайте query в init(), это плохой тон. А для примеров старайтесь искать более ранний код в стандартном приложении. Лет пять назад разработчики аксапты не только читали best practice, но и применяли на практике. Посмотрите, например, классы InventDimCtrl_Frm.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: S.Kuskov (5).