AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.01.2018, 08:04   #1  
TalgatAb is offline
TalgatAb
Участник
 
6 / 10 (1) +
Регистрация: 31.01.2018
Местоположение (InventDim.wMSLocationId)
Можно ли автоматически определить местоположения ТМЦ на центральном складе, согласно его физическим параметрам?
Модуль "Заказ на покупку", Microsoft Dynamics AX 2009
Старый 31.01.2018, 09:45   #2  
БАХ43 is offline
БАХ43
Участник
 
21 / 30 (2) +++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Вопрос не совсем понятен. Определить где ТМЦ сейчас стоит или найти товару подходящее место при приемке на склад?
Модуля "Заказ на покупку" нет. Есть Управление запасами и расчеты с поставщиками, если уж речь о покупках.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 31.01.2018, 15:01   #3  
TalgatAb is offline
TalgatAb
Участник
 
6 / 10 (1) +
Регистрация: 31.01.2018
Найти товару подходящее место при приемке на склад. Модуль "Расчеты с поставщиками".

Задача состоит в том, что в зависимости от физических параметров номенклатуры и местоположении, надо автоматически определить местоположение на складе, возможно, даже распределить на несколько свободных мест одну и ту же номенклатуру.


https://drive.google.com/open?id=1qy..._3nws0GYZKvoVe

Последний раз редактировалось TalgatAb; 31.01.2018 в 15:30.
Старый 31.01.2018, 20:52   #4  
twilight is offline
twilight
MCTS
MCBMSS
 
704 / 126 (6) +++++
Регистрация: 17.10.2004
Адрес: Москва
Можно, но для этого вам надо детально изучить и настроить модуль Управление складом.
__________________
I could tell you, but then I would have to bill you.
Старый 01.02.2018, 13:10   #5  
БАХ43 is offline
БАХ43
Участник
 
21 / 30 (2) +++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Все можно, только дорабатывать надо. А сейчас как принимаете? Вручную ячейку прописываете или все-таки через журнал прибытия?
При разноске строки журнала прибытия как раз ищется свободная ячейка, согласно настройкам зоны хранения номенклатуры и области хранения ячеек. См. метод findFreeLocation в таблице WMSStoreZone.
Вопрос довольно обширный, если задан не из праздного любопытства, а действительно нужна такая доработка - могу помочь. У меня поиск свободных ячеек реализован с учетом нескольких параметров. Зона хранения, высота погрузчика, ширина и высота ячейки, габариты и вес короба, количество коробов в слое на паллете, ярус стеллажа, этаж склада...
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 05.02.2018, 08:20   #6  
TalgatAb is offline
TalgatAb
Участник
 
6 / 10 (1) +
Регистрация: 31.01.2018
Спасибо, за отклик!
Модуль называется "Управление запасами", а то что вы рассказываете, наверно реализовано в модуле "Управление складами". Данный вопрос не из-за собственного любопытства. И думаю, ваш опыт для меня бесценен. Задача состоит в следующем:
1) Модуль "Расчеты с поставщиками", при приеме нового заказа покупки, во время формирования "Отборочная накладная", надо автоматически определить свободное местоположение InventDim.wMSLocationId, при этом, если большая партия, то надо распределить на несколько свободных мест. Вообще на уровне "Отборочной накладной" это возможно?
По этому вопросу, я предлагал следующий вариант: Новые товары, номенклатуры принимать на виртуальный склад, при этом не будем определят местоположения. Проводим как обычно отборочную накладную в Axapta-е и заказ оприходуем. Затем загружаем данный заказ на покупку в ТСД (Android), и проводим операцию "Прибытие", т.е. через MS Business Connector программно создаем журнал переноса из виртуального склада на центральный склад, при этом есть возможности автоматически определить свободные местоположения на центральном складе. Но нашим менеджерам этот вариант не очень нравятся, они хотят чтобы местоположения определились во время отборочной накладной...

Кстати, где "Управление запасами" не могу найти привязки к палетте?
Старый 05.02.2018, 08:50   #7  
TalgatAb is offline
TalgatAb
Участник
 
6 / 10 (1) +
Регистрация: 31.01.2018
Кстати, ниже пример из кода X++

X++:
void  closeOk()
{
;

    // <Talgat 23.02.2016 12:45>
    // Здесь в режиме "Разноска" -> "Отборочная накладная", после нажатия кнопки Ok
    // присваивается новый серийный номер
    if (documentStatus == DocumentStatus::PackingSlip)
        this.ALA_InitSerialNum();
    // </Talgat>

    if (purchParmUpdate)
        purchParmUpdate_ds.write();

    if (purchParmTable.RecId)
        purchParmTable_ds.write();

    if (purchParmSubTable)
        purchParmSubTable_ds.write();

    if (purchParmLine)
        purchParmLine_ds.write();

    purchFormLetter.initParameters(purchParmUpdate.data(),
                                   printout.selection(),
                                   printFormletter.value(),
                                   euVat.value(),
                                   usePrintManagement.value());

    purchFormLetter.printSalesFormLetter(printSalesFormLetter.value());
    purchFormLetter.editLinesChanged(editLinesChanged);
    purchFormLetter.reArrangeNow(reArrangeNow);

    // <GEEU>
    purchFormLetter.parmPrintFacture_RU(printFacture_RU.value());
    purchFormLetter.parmPrintAcceptanceReport_RU(printAcceptanceReport_RU.value());
    purchFormLetter.parmPrintInventBaileeReport_RU(printInventBaileeReport_RU.value());
    purchFormLetter.parmPrintReimbursementSlip_RU(printReimbursementSlip_RU.value());
    purchFormLetter.parmDocNumberingCode_LT(docNumberingCode_LT.text());
    purchFormLetter.parmReceiptListDeviationType_RU(printReceiptListDeviationType_RU.selection());

    // </GEEU>
    // If this is an Invoice that is not posting but is printing, and changes have been made, ask to save changes
    if ( purchEditLinesForm.saveWhenPrinting() && Box::yesNo("@SYS112345", DialogButton::Yes) == DialogButton::Yes )
    {
        purchFormLetter.parmSaveChanges(true);
    }
    else
    {
        purchFormLetter.parmSaveChanges(false);
    }

    super();

    // , , 30.05.2015, Denis -->
    if (DocuRefLink.value() <= 0)
    {
        throw("Необходимо выбрать обрабатываемый документ (вложение)!");
    }
    // , , 30.05.2015, Denis <--

}
Старый 05.02.2018, 08:52   #8  
TalgatAb is offline
TalgatAb
Участник
 
6 / 10 (1) +
Регистрация: 31.01.2018
Сам метод работает таким образом:

X++:
public void ALA_InitSerialNum()
{
    // <Talgat 22.02.2016 9:44>
    PurchParmLine        _purchParmLine;
    PurchLine            _purchLine;
    InventDim            _inventDim, _inventDimNew;

    InventSerialId       _inventSerialId;
    InventLocationId     _inventLocationId;
    InventDimGroupId     _dimGroupId;
    //ConfigId             _configId;
    // </Talgat>
    ;

    // <Talgat 22.02.2016 9:31>

    ttsBegin;

    while select forUpdate _purchParmLine
       where _purchParmLine.ParmId == PurchParmTable.ParmId
    {
        _dimGroupId = InventTable::find(_purchParmLine.ItemId).DimGroupId;

        if (ALA_DimGroupId::find(_dimGroupId).DimGroupId)
        {
            _inventDim = InventDim::find(_purchParmLine.InventDimId);
            if (_inventDim)
            {
                if (!_inventDim.inventSerialId)
                {
                    _inventLocationId = _inventDim.InventLocationId;
                    if (ALA_InventLocationId::find(_inventLocationId).InventLocationId)
                    {
                        _inventSerialId = InventSerial::findOrCreate(_purchParmLine.ItemId, _inventLocationId, PurchParmTable.TransDate).InventSerialId;

                        _inventDimNew = InventDim::find(_purchParmLine.InventDimId, true);
                        _inventDimNew.inventSerialId = _inventSerialId;
        //                if (!_inventDimNew.configId)
        //                {
        //                    _configId = PurchLine::findRecId(_purchParmLine.PurchLineRecId).Dimension[5];
        //                    _inventDimNew.configId = ConfigTable::findOrCreate(_purchParmLine.ItemId, _configId, PurchLine::findRecId(_purchParmLine.PurchLineRecId).PurchUnit).ConfigId;
        //                }

                        _purchParmLine.InventDimId = InventDim::findOrCreate(_inventDimNew).inventDimId;
                        _purchParmLine.update();

                        while select forUpdate _purchLine
                            where _purchLine.RecId == _purchParmLine.PurchLineRecId
                        {
                            _purchLine.InventDimId = _purchParmLine.InventDimId;
                            _purchLine.update();
                        }
                    }

                }
            }
        }
    }
    ttsCommit;

    // </Talgat>
}
Старый 05.02.2018, 09:36   #9  
БАХ43 is offline
БАХ43
Участник
 
21 / 30 (2) +++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Цитата:
Модуль называется "Управление запасами", а то что вы рассказываете, наверно реализовано в модуле "Управление складами".
Это именно в "Управлении запасами", а "Управление складами" я вообще не знаю такого.
А почему при формировании отборочной? Чем не нравится разноска списка приходов? При этом формируется журнал прибытия. Там как раз кладовщик разбивает товар по паллетам(если больше одного места) и при его разноске ищется свободная ячейка для каждой паллеты.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 05.02.2018, 09:40   #10  
БАХ43 is offline
БАХ43
Участник
 
21 / 30 (2) +++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Расчеты с поставщиками. Закупка - Разноска - Список прихода.
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 05.02.2018, 09:44   #11  
TalgatAb is offline
TalgatAb
Участник
 
6 / 10 (1) +
Регистрация: 31.01.2018
Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mfp: InventDim in AX7 Blog bot DAX Blogs 19 03.03.2016 21:06
DynamicsAxSCM: Microsoft Dynamics AX R3 – New Warehouse Management solutions impact on InventDim extensibility and migration scenarios Blog bot DAX Blogs 0 14.08.2015 15:11
Dynamics AX Sustained Engineering: KB3030212 Duplicate InventDim records are created which cause errors in the WHS if license plate IDs include trailing blanks Blog bot DAX Blogs 0 22.01.2015 20:12
Вопросы по ReleaseUpdate DAX 2009 ansoft DAX: Программирование 7 31.08.2010 12:21
inventUpd_reservation использование inventDim SHiSHok DAX: Программирование 2 31.03.2007 21:32
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.