Pegiy прав, если это есть в Axapta это не значить, что так везде нужно внедрять. Желательно, с наименьшими изменениями, чтобы не нарушить бизнес-процесс заложенный в Axapta.
Но требование заказчика, чтобы в строках заказа номенклатура не дублировалась (связано ли это с неполным средним образованием или с недостаточным интелектом не знаю, люди нормальные со своим жизненным опытом). Тем более операционистам принимающим заказ от клиента до балды на каком складе, партии, ячейке и т.п. лежит товар, главное что он есть или вот-вот будет (отрицательный склад). Выбрать товар используя аналитику это дело материального лица в зоне комплектации (я так понял glibs об этом сказал).
В чем состоит автоматизация на предприятии: я думаю в первую очередь автоматизировать рутинные операции, чтобы увеличить производительность рабочего места.
Клиент всегда прав (он платит денежки), пока жив. А наш клиент еще жив и в добавок развивается. Так что делайте выводы...
Извиняюсь за спам.
И все таки вернемся к проблеме.
Через переопределение метода SalesLine.ItemId.Validate() находим что выбранная номенклатура уже используется в заказе. Используем метод findValue(), курсор перескакивает на нужную запись, но возникает проблема отображения поля ItemId, связанная с тем что findValue - это фильтр и введенное значение ItemId не отменено.
public boolean validate()
{
boolean ret;
SalesLine lines;
ItemId _itemId;
;
select firstonly lines
where lines.SalesId == SalesTable.SalesId &&
lines.ItemId == SalesLine.ItemId;
if (lines)
{
info("Номенклатура " + lines.ItemId + " - " + lines.Name + " уже есть в заказе.");
//**********************
SalesLine_ds.findValue(fieldNum(SalesLine,ItemId), lines.ItemId);
//**********************
ret = false;
}
else
ret = super();
return ret;
}
Вот посмотрите что происходит после findValue. Как этого избежать?
Заранее спасибо.
|