Показать сообщение отдельно
Старый 07.12.2009, 12:25   #52  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Похоже больше нет тем.

Тогда попробую начать обосновывать свое мнение. Цитирую:
Цитата:
Сообщение от mazzy Посмотреть сообщение
Нет, конечно. До Аксапты им как до Китая раком.
Тогда еще некоторые темы для обсуждения.
Пока кратко, без обоснования и ссылок (в надежде, что большинство понимает о чем идет речь):

1. Query
В платформе 1С нет объекта, который позволяет ПРОГРАММИСТУ строить query программно. Аксаповеды, вы не поверите, но программисты 1С до сих пор парсят и правят тексты строк запросов.

Т.е. если пользователь хочет добавить условия и фильтры, то программист должен позаботиться об этом и вставить куски кода с этими условиями в текствоый запрос. Для этого программисту нужно парсить строку запроса и вставлять туда условия со скобками, кавырками и прочей чешуей...

Да, в 1С есть Построитель запросов - это некий конструктор, который позволяет мышкой создать и вставить текст запроса в код. Но с этим Построителем запросов нельзя работать программно в run-time. Только в design-time.

Да, в 1С есть возможность задавать запросы в отчетах. И такие запросы пользователь может менять. Но в такие запросы нельзя влезть программно. И кроме того, такая возможность существует только в отчетах.

Очень много Бла-бла-бла... на эту тему. Но надеюсь, что большинство участников, понимает о чем идет речь.

2. Кэширование таблиц
В Аксапте очень большое значение уделяется кэшированию таблиц. См. книжку Dynamics Inside.

Кэширование конечно же не поможет при работе с большими таблицами типа InventTrans, InventSettlement и прочее. Но кэширование заметно помогает при работе с настроечными таблицами (профили разноски, параметры компании, параметры валют, вевозможные группы, статусы и другие настройки)

В результате треть запросов (и больше) Аксапта просто не отправляется на SQL-сервер.

На кэшировании таблиц в Аксапте завязано очень многое. Так код может выполняться быстрее
X++:
while select custtrans
where ...
{
    custtable = custtable::find(custtrans.accountnum)
}
чем код
X++:
while select custtrans
where ...
join custtable
where custtable.accountnum == custtrans.accountnum
{
...
}
а код
X++:
while select custgroup
where custgroup.CustGroup == 'myGroup'
{
  if( custgroup.paymtermid == 'myTerm' )
  {
  ...
  }
}
может выполняться быстрее, чем
X++:
while select custgroup
where custgroup.CustGroup == 'myGroup'
&& custgroup.paymtermid == 'myTerm'
{
  ...
}
Это просто пронизывает Аксапту.

Те, кто говорят о том, что Аксапта не поддерживает T-SQL в полном объеме, просто не понимают о чем идет речь. Аксапта очень большое число "правильно написанных" запросов просто не посылает на SQL-сервер. И для разработчиков самой Аксапты, и для разработчиков приложений на этой самой Аксапты предельно важно, чтобы макисмально распределить нагрузку между AOS и SQL.

Принцип простой - в многопользовательской среде - несколько простых и кэшируемых запросов намного лучше (с точки зрения производительности), нежели один сложный запрос. Выражаясь языком поговорок - лучше сорок раз по разу, чем один раз, но сорок раз.

3. Listerals vs Placeholders
http://axapta.mazzy.ru/lib/literals_vs_placeholders/
В 1С просто нет такой штуки. Разработчики платформы 1С об этом не думали.
Они вообще не думали, как SQL будет выполнять такие запросы.

Они похоже не думали, что MS SQL прекращает всякую оптимизацию запроса, если в нем присутствует больше 8 таблиц. См. также разыменование.
Комментарий: ниже Alexius и Vezunchik настойчиво попросили меня подтвердить мое высказывание про прекращение оптимизации. Я покопался и не смог найти подтверждение. О чем написал здесь. Поэтому свое высказывание про оптимизацию зачеркиваю. Спасибо вам за настойчивость. Однако, на мой взгляд это никак не влияет на исходный тезис, поскольку 1С с легкостью генерирует complex SELECT statements, для которых оптимизатор выбирает не самый оптимальный план. Мое мнение осталось прежним - разработчики платформы 1С не думали как будут выполняться такие сложные запросы.
Ну и так далее.

В общем, разработчики 1С повышают скорость работы единственного пользователя в монопольном режиме.
А разработчики Аксапты прежде всего повышают скорость работы в многопользовательском режиме. (Где-то была статья про отличия в этих подходах. Вроде у Еременко. Не помню... Буду благодарен, если подскажете ссылки)

Платформа еще не скоро приблизится
Если и приближается, то к старым версиям Аксапты 2.1, 2.5, которые существовали лет 8-10 назад.
Чтобы там ни провозглашали 1Сники. И как бы не пытались промыть мозги маркетингом.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 13.12.2009 в 21:41. Причина: про прекращение оптимизации запроса с 8ю таблицами.
За это сообщение автора поблагодарили: sukhanchik (4), FE (1), alex55 (1).