|
12.09.2016, 08:45 | #1 |
Участник
|
Внезапная! синхронизация в Ax 2012
Товарищи, возможно кто-нибудь сталкивался в Ax2012 со следующей проблемой.
При небольшой рутинной разработке, например: 1 Создаем EDT 2 Меняем в нем какие-нибудь параметры (длину строки, например) 3 Сохраняем Как результат иногда получаем - без запроса! - полную синхронизацию всего (хотя этот ЕДТ и не используется нигде и вообще только что создан) минут на 20-30. Рабочий процесс – встает. Может быть кто-то знает, как с этим бороться превентивно и как наиболее безопасно бороться, если синхронизация уже пошла (убивать клиент с активной синхронизацией как-то боязно). |
|
12.09.2016, 08:54 | #2 |
NavAx
|
Да, обычное неудобство. Обсуждалось и на форуме и на прочих ресурсах. Попробуй google спросить
__________________
Isn't it nice when things just work? |
|
12.09.2016, 09:46 | #3 |
Участник
|
В 2009-й часто еще помогало
X++: New SQLSyncPending().databaseTouched(false); |
|
|
За это сообщение автора поблагодарили: mazzy (2), AlexSD (3), alex55 (1), DSPIC (5), Pandasama (1). |
12.09.2016, 10:01 | #4 |
Боец
|
Отличный хинт, спасибо. А я костылем пользуюсь - если нужно много чего в DataDictionary изменить - блокирую метод classes\application\dbSynch(), возвращаю true до super(). Но... часто забываешь вернуть обратно...
|
|
|
За это сообщение автора поблагодарили: Logger (1). |
12.09.2016, 09:47 | #5 |
Участник
|
ну, не стоит уж сразу в гугл посылать.
да, вопрос обсуждался. да, есть доводы за данную фичу, есть и против. чтобы отключить автосинхронизацию, создайте job, который будет создавать объект SqlSyncPending и запускать метод SqlSyncPending.databaseTouched(false) но вы должны четко понимать что делаете и следить за синхронизацией вручную. обязательно доведите изменения в политике до всех разработчиков. |
|
12.09.2016, 10:16 | #6 |
Участник
|
А не стоит ли туда диалог вставить и просто отвечать - хочу или не хочу прямо сейчас синхронизацию?
Не забыв, что может вызываться без участия пользователя - в таких случаях никаких диалогов.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: trud (1), AvrDen (1), pedrozzz (1). |
12.09.2016, 15:20 | #7 |
Молодой, подающий надежды
|
Цитата:
Класс, как уже выше упоминалось, Application.dbSynchronize(). Вставляем в самом начале. Желательно добавить всех разрабов или вообще убрать условие на userId. Фен шуй феншуем от МС, где каждому отдельный АОС и окружение, а в суровой реальности десяток разрабов все пилит в одной базе и запущенная синхронизация у одного может тормозить работу всей команды При этом механизм синхронизации все же лучше понимать и не всегда разумно ее пропускать. X++: ... // TODO, sync fix, begin if ((curUserId() == 'UserId1' || curUserId() == 'UserId2' ) && new SqlSyncPending().databaseTouched()) { if (Box::okCancel('Sync data base?', DialogButton::Cancel) == DialogButton::Cancel) { return false; } } // sync fix, end ...
__________________
Кононов Пётр Последний раз редактировалось pedrozzz; 12.09.2016 в 15:25. |
|
|
За это сообщение автора поблагодарили: rumpleteazer (1), Ivanhoe (1). |
13.09.2016, 02:29 | #8 |
NavAx
|
Процесс приобретает особую пикантность если "архитектора" убедили разместить систему в azure
__________________
Isn't it nice when things just work? |
|
13.09.2016, 10:03 | #9 |
Участник
|
Да даже без Azure купить весь необходимый софт, выделить реально мощные машины - поди продай это клиенту
__________________
Ivanhoe as is.. |
|
Теги |
ax2012, синхронизация |
|
|