Всем доброе время суток!
Сталкнулся с такой проблемой в новом складском модуле (WHS):
есть возможность проводить постоянную инвентаризацию: система создает работу по инвентаризации согласно плану, работник может на мобильном устройстве выбрать ячейку склада, посчитать номенклатуру и занести в систему. Создание и разноска журнала происходит либо автоматом либо потом со стороны супервайзора (зависит от настроек). Предполагалось, что номенклатура будет блокироваться только на той ячейке, которую сейчас подсчитывают и потом освобождаться (в отличии от старого модуля склада). Однако не тут то было
Проблема описана тут:
Blocking inventory during cycle count.
Подсказаное решение устанавливать в номенклатуре на ячейке складской статус (Inventory status) с галочкой "заблокированно" не помогает: можно паралельно с работой инвентаризации с мобильного терминала провести Movement и изменить складской статус... Таким махом получается стащить пару штучек из ячейки, пока другой там подсчитывает
Рассматриваю кастомизацию как возможное решение: при начале работы подсчета и до ее окончания выставлять признак подсчета в ячейке (еще лучше в связке "ячейка/товар", что-то типа Warehouse items) и добавить еще на ячейку поле с текущей работой по подсчету. В общем, скопировать логику InventItemLocationCountingStatus
Потом доработать тут
X++:
public boolean checkCountingLocks(InventDim _inventDim)
{
if (!InventParameters::find().LockCounting)
{
return true;
}
if (InventItemLocation::isCountingStarted(this.itemId(),_inventDim))
{
return checkFailed(strFmt("@SYS59534", this.itemId(), _inventDim.InventLocationId));
}
return true;
}
Буду рад комментам! Заранее всем спасибо!