![]() |
#11 |
Участник
|
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. Как этого избежать? Заранее спасибо. |
|