|
02.10.2003, 17:01 | #1 |
Участник
|
разбиение при переносе на партии
Проблема простая:
Требуется перенести определенное количество номенклатуры со склада 1 на склад 2 Мы создаем журнал переноса с авторезервированием Создаем строчку - перенести номенклатуру со склада 1 на склад 2 Система резервирует номенклатуру на складе 1 в трех разных партиях В результате по строке у нас получилось 4 складских проводки склад 1 партия а зарезервировано склад 1 партия б зарезервировано склад 1 партия в зарезервировано склад 2 заказано Внимание вопрос: Есть ли в аксапте функциональность которая позволяет автоматически разбить проводку прихода на склад 2 на три проводки с разными партиями с соответствующими количествами? |
|
18.04.2006, 15:30 | #2 |
Участник
|
У нас тоже похожая фигня была.
Вроде бы нашел способ как вылечить, но не уверен что в других местах ничего не сломал. Так что хочу обсудить здесь. Для начала описываю проблему. Журнал перенос при включенном авторезервировании корректно резервировал расходные проводки (сплитил их, проставляля необходимые аналитики), но не сплитил и не ставил аналитики для приходных, выдавая что "Код аналитики %1 отмечен в складских проводках со значением %2" InventDim ToInventDim Склад ЗН1 ЗН2 Наша 1 пусто ЗН4 Наша 2 ЗН3 пусто Заполнены были только аналитика склад и пара наших собственных. Остальные пустые. ------------------------------ Как лечили : Таблица InventDim метод void mergeUsedDim(InventDimGroupId _dimGroupId, InventDim _fromInventDim, InventDim _origFromDim = _fromInventDim , boolean forceMergeAll = false ) { InventDimSearch _dimSearch = new InventDimSearch(); Integer x; if (_dimSearch.first(_dimGroupId)) do { x = _dimSearch.dimFieldId(); if (_dimSearch.dimActive()) { if (_fromInventDim.(x) || forceMergeAll // принудительно даже пустые копируем ) this.(x) = _fromInventDim.(x); else if (this.(x) && this.(x) == _origFromDim.(x)) // clearing a dimension on the movement, but no on transaction info(strfmt("@SYS73455", new DictField(tableNum(InventDim),x).label(), this.(x))); } } while (_dimSearch.next(_dimGroupId)); // HF21_394 if (this.WMSLocationId && !this.WMSLocation()) { this.WMSLocationId = ''; this.wMSPalletId = ''; } } В общем добавили параметр, который принудительно копирует все активные аналитики, а не только активные непустые. Далее Класс InventUpdate метод updateTransDimTransferReceipt() вызов inventDimReceiptOrig.mergeUsedDim(movement.dimGroupId),movementReceipt.inventdim()); заменили на inventDimReceiptOrig.mergeUsedDim(movement.dimGroupId(),movementReceipt.inventdim(), movementReceipt.inventdim(), true); Идея изменений : метод берет расходную проводку и её аналитики до изменения. Перепрописывает в неё НЕПУСТЫЕ активные для данной группы номенклатуры аналитики из ToInventDim из строки переноса. И пытается с фильтром по полученной аналитике найти приходные проводки чтобы проставить в них аналитики (ну если потребуется, рассплитить). Но из-за того что пустые значения не копировались, то фильтр получился неверный и приходные проводки не нашлись. А я его теперь заставляю принудительно все активные аналитики копировать, поэтому фильтр формируется нормальный и все работает. ------------ Кто нибудь менял этот механизм ? Беспокоит вот что - возможно разрабтчики Аксапты неслучайно копировали только непустые значения. А метод InventUpdate.updateTransDimTransferReceipt() вызывается в куче мест. Вот думаю, может сломали где чего, и пока не заметили. Последний раз редактировалось Logger; 18.04.2006 в 16:14. |
|
18.04.2006, 15:33 | #3 |
Консультант
|
Цитата:
Сообщение от Волчара
Проблема простая:
Требуется перенести определенное количество номенклатуры со склада 1 на склад 2 Мы создаем журнал переноса с авторезервированием Создаем строчку - перенести номенклатуру со склада 1 на склад 2 Система резервирует номенклатуру на складе 1 в трех разных партиях В результате по строке у нас получилось 4 складских проводки склад 1 партия а зарезервировано склад 1 партия б зарезервировано склад 1 партия в зарезервировано склад 2 заказано Внимание вопрос: Есть ли в аксапте функциональность которая позволяет автоматически разбить проводку прихода на склад 2 на три проводки с разными партиями с соответствующими количествами? У меня (3.0 SP4) в таком случае нормально создаются 3 приходных проводки на ТЕ ЖЕ партии. Это стандартная функциональность. |
|
18.04.2006, 15:38 | #4 |
Консультант
|
Цитата:
Сообщение от Atar
Что то не то в канцелярии.
У меня (3.0 SP4) в таком случае нормально создаются 3 приходных проводки на ТЕ ЖЕ партии. Это стандартная функциональность. - для указанных в строке аналитик всегда должна быть указана парная аналитика (т.е. обе: "Из" и "На" должны быть заполнены) - набор аналитик "Из" должен отличаться от набора аналитик "На" |
|
18.04.2006, 15:46 | #5 |
Участник
|
Цитата:
Сообщение от Atar
Там есть, правда ограничения, без соблюдения которых возможна описываемая Вами ситуация:
- для указанных в строке аналитик всегда должна быть указана парная аналитика (т.е. обе: "Из" и "На" должны быть заполнены) - набор аналитик "Из" должен отличаться от набора аналитик "На" Интересно, требование чтобы обе аналитики были заполнены ("Из" и "На") это багофича, или это специльно так сделали, и отключать это нельзя? А то я вот отключил, и думаю, может зря ? Последний раз редактировалось Logger; 18.04.2006 в 16:00. |
|
18.04.2006, 16:16 | #6 |
Консультант
|
Цитата:
Сообщение от Logger
Вот вот, и я про то же.
Интересно, требование чтобы обе аналитики были заполнены ("Из" и "На") это багофича, или это специльно так сделали, и отключать это нельзя? А то я вот отключил, и думаю, может зря ? |
|
18.04.2006, 15:41 | #7 |
Участник
|
А если при этом в строке в аналитике Откуда для переноса склад потереть, а для Куда оставить с каким то значением то тоже все нормально будет ?
|
|
18.04.2006, 16:14 | #8 |
Консультант
|
Цитата:
Сообщение от Logger
А если при этом в строке в аналитике Откуда для переноса склад потереть, а для Куда оставить с каким то значением то тоже все нормально будет ?
Даже какое то сообщение по этому поводу появляется. |
|
18.04.2006, 16:17 | #9 |
Участник
|
Я ошибся.
Хотел другой случай указать, когда в строке аналитика расходная есть а приходной нет. |
|
18.04.2006, 16:21 | #10 |
Консультант
|
Цитата:
Сообщение от Logger
Я ошибся.
Хотел другой случай указать, когда в строке аналитика расходная есть а приходной нет. Это конечно, если вы уже дошли до такой стадии, когда подобные фишки вам нужны |
|
18.04.2006, 16:18 | #11 |
Консультант
|
Мне кажется в нормальных ситуациях в жизни не должно возникнуть потребности оставлять одну из аналитик пустой.
Что это должно быть? Собрать товар определенной партии со всех складов на определенный склад? Лучше с этим не связываться, а заставить в несколько строк такие перемещения заводить. |
|
19.04.2006, 10:35 | #12 |
Консультант
|
сделали бы вы тогда лучше какой-нибудь значок вместо ноля.
Иначе Axapta всегда будет считать, что значение просто не введено. |
|