29.11.2012, 15:59 | #1 |
Участник
|
Проверка целостности данных компании (кас. InventSum)
Подскажите пожалуйста:
1. Как долго идет периодическая операция "Проверка целостности данных компании"? Конкретно по пункту "В наличии" как на скриншоте. Номенклатурных единиц около 50к, время жизни базы около 8 лет. Понимаю что все индивидуально, но хотя бы ориентировочно порядок или примеры. 2. Именно эта операция корректно пересчитает данные таблицы InventSum по проводкам? Никаких иных пунктов отмечать не надо? 3. Возможна ли работа пользователей во время этой операции?
__________________
Axapta 3.0, Build #1951.17, SP1 |
|
29.11.2012, 16:15 | #2 |
Banned
|
1) 2-3 часа для 10 миллионов проводок
2) да. нет. 3) условно: там не одна длинная транзакция, а много коротких, но система будет блокировать поочередно товары. Последний раз редактировалось EVGL; 29.11.2012 в 16:17. |
|
|
За это сообщение автора поблагодарили: Samuel (1). |
29.11.2012, 16:18 | #3 |
Участник
|
Разверните тест и попробуйте. Сначало лучше не в режиме коррекции ошибок, там какой то другой был. Щас не помню. Не занимаюсь аксой уж.
Покрайней мере увидите есть ли вообще ошибки и их объём. Процедура приводит в соответствие InventTrans и InventSum. Т.е. грубо говоря обнуляет InventSum и начинает накручивать на него InventTrans. Какой InventSum получился сравнивает с тем что имеем на данный момент. Его и редактирует.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
|
За это сообщение автора поблагодарили: Samuel (1). |
30.11.2012, 13:05 | #4 |
Участник
|
Если стремно запускать пересчет остатков сразу для 50к номенклатур, то можно запускать поштучно, или фильтровать по каким-либо признакам, например, по номенклатурной группе.
Для этого можно использовать такой джоб. Здесь надо вместо константы "1762" указать код конкретной номенклатуры или указывать через запятую коды сразу нескольких номеклатур. Также можно добавлять фильтрацию по другим полям, если у вас есть программист, который может делать это. Запустив этот джоб, вы увидите стандартное окошко запроса, в котором можно настроить фильтры вручную. Или использовать фильтры, которые заданы в коде этого джоба, выбрав в поле "Выбрать запрос" значение "Используемый запрос" То есть можно изменять фильтры не обладая навыками программирования. X++: static void Job_ReCalcInventSum(Args _args) { InventSumReCalcItem reCalcItem; InventTable inventTable; Query q = new Query(); QueryRun qr; ; q.addDataSource(tableNum(InventTable)).addRange(fieldNum(InventTable, ItemId)).value("1762"); qr = new QueryRun(q); if(! qr.prompt()) return; SetPrefix("Проверка InventSum"); while(qr.next()) { inventTable = qr.getNo(1); SetPrefix(inventTable.ItemId); // Режим - исправление. Для проверки без исправлений сделать CheckFix::Check reCalcItem = new InventSumReCalcItem(inventTable.ItemId, true, CheckFix::Fix); reCalcItem.updateNow(); } } Последний раз редактировалось Ace of Database; 30.11.2012 в 13:16. |
|
|
За это сообщение автора поблагодарили: IvanS (1), BAx (1), Samuel (1). |