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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.05.2012, 19:01   #1  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Программная разноска накладной для заказа на покупку на основе отборочной накладной.
Использую метод PurchFormLetter.update(). Отборочная накладная разносится без проблем, а вот обычная в упор не видит ранее созданную отборочную при выборе PurchUpdate::PackingSlip. Есть предположение, что в update() нужно передать packedTmpFrmVirtualList. Кто-нибудь сталкивался с подобным? Буду благодарен за помощь.
Старый 03.05.2012, 19:14   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
http://axforum.info/forums/search.php?searchid=245371
не то?
Старый 03.05.2012, 19:18   #3  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
X++:
static void autoCreateInvoice(PurchTable _purchTable, PurchUpdate _purchUpdate, InvoiceDate _invoiceDate = systemDateGet(), boolean _storno = false, InvoiceId  _invoiceId = "")
{
    PurchFormLetter_Invoice     purchFormLetter;
    PurchParmUpdate             purchParmUpdate;
    ;
    purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.createParmUpdate();
    purchParmUpdate = purchFormLetter.purchParmUpdate();
    purchParmUpdate.selectForUpdate(true);
    purchParmUpdate.Storno = _storno;
    purchParmUpdate.doUpdate();
    purchFormLetter.purchParmUpdate(purchParmUpdate);
    purchFormLetter.parmCallerTable(_purchTable);
    purchFormLetter.initParmPurchTable(_purchTable);
    purchFormLetter.specQty(_purchUpdate);
    purchFormLetter.transDate(_invoiceDate);
    if (_invoiceId)
        purchFormLetter.parmParmTableNum(_invoiceId);
    purchFormLetter.initLinesQuery();
    purchFormLetter.run();
}
если суда PurchUpdate::PackingSlip интересно заработает или нет)

Последний раз редактировалось Sada; 03.05.2012 в 19:22.
Старый 03.05.2012, 19:25   #4  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Цитата:
Сообщение от Sada Посмотреть сообщение
Ознакомился. не то.
Старый 03.05.2012, 19:32   #5  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Цитата:
Сообщение от Sada Посмотреть сообщение
X++:
static void autoCreateInvoice(PurchTable _purchTable, PurchUpdate _purchUpdate, InvoiceDate _invoiceDate = systemDateGet(), boolean _storno = false, InvoiceId  _invoiceId = "")
{
    PurchFormLetter_Invoice     purchFormLetter;
    PurchParmUpdate             purchParmUpdate;
    ;
    purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.createParmUpdate();
    purchParmUpdate = purchFormLetter.purchParmUpdate();
    purchParmUpdate.selectForUpdate(true);
    purchParmUpdate.Storno = _storno;
    purchParmUpdate.doUpdate();
    purchFormLetter.purchParmUpdate(purchParmUpdate);
    purchFormLetter.parmCallerTable(_purchTable);
    purchFormLetter.initParmPurchTable(_purchTable);
    purchFormLetter.specQty(_purchUpdate);
    purchFormLetter.transDate(_invoiceDate);
    if (_invoiceId)
        purchFormLetter.parmParmTableNum(_invoiceId);
    purchFormLetter.initLinesQuery();
    purchFormLetter.run();
}
если суда PurchUpdate::PackingSlip интересно заработает или нет)
а у вас какая версия аксапты?
Старый 03.05.2012, 19:33   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
2009, на что то ругается?
Старый 03.05.2012, 19:39   #7  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Цитата:
Сообщение от Sada Посмотреть сообщение
2009, на что то ругается?
нет, но проблема осталась. не видит отборочную накладную.
Старый 03.05.2012, 19:42   #8  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
На всякий случай уточню, при PurchUpdate::All накладные успешно создаются.
Старый 03.05.2012, 19:54   #9  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
ну это работающий код)))что значит не видит отборочную накладную? хотя, если вы говорите что не работает, то не работающий)))))

Последний раз редактировалось Sada; 03.05.2012 в 20:00.
Старый 04.05.2012, 01:16   #10  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Можно попытаться пойти по пути наименьшего сопротивления и в одно польское поле в PurchParmTable прописать напрямую номер накладной. Кроме того, рекомендуется RU8, в котором исправлена ошибка русского GLS при выборе отборочной накладной.
Старый 04.05.2012, 16:34   #11  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Цитата:
Сообщение от EVGL Посмотреть сообщение
Можно попытаться пойти по пути наименьшего сопротивления и в одно польское поле в PurchParmTable прописать напрямую номер накладной. Кроме того, рекомендуется RU8, в котором исправлена ошибка русского GLS при выборе отборочной накладной.
Путь наименьшего сопротивления не подходит, так как не создается запись в PurchParmTable.
Старый 04.05.2012, 17:28   #12  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Так же удалось выяснить, что если руками проставить в форме PurchJournalSelect_PackingSlip галочку в поле "Включить" у нужной отборочной накладной, то разноска проходит нормально. Может кто-то знает как это сделать программным способом?
Старый 05.05.2012, 08:58   #13  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Не знаю что у вас не работает, но у меня прекрасно работает код а-ля (DAX 2009 RU8)

X++:
    purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.update(purchTable,
                           purchTable.PurchId,
                           systemDateGet(),
                           PurchUpdate::PackingSlip);
Если нужно разнести определенную отборочную накладную, используйте параметр _packedTmpFrmVirtualList - пример использования можно найти по перекрестным ссылкам.

X++:
static void CreateInvoiceByPackingSlipJour(Args _args)
{
    PurchFormLetter         purchFormLetter;
    PurchTable              purchTable                  = PurchTable::find(...);
    RefRecId                refRecIdPackingSlipJourId   = ...;

    TmpFrmVirtual           tmpFrmVirtual;
    VendPackingSlipJour     vendPackingSlipJour = VendPackingSlipJour::findRecId(refRecIdPackingSlipJourId);

    List                    listRecord  = new List(Types::Record);
    ;

    tmpFrmVirtual.clear();
    tmpFrmVirtual.CompanyId = vendPackingSlipJour.DataAreaId;
    tmpFrmVirtual.TableNum  = vendPackingSlipJour.TableId;
    tmpFrmVirtual.RecordNo  = vendPackingSlipJour.RecId;
    tmpFrmVirtual.NoYes     = NoYes::Yes;
    tmpFrmVirtual.Id        = vendPackingSlipJour.PurchId;
    tmpFrmVirtual.insert();

    listRecord.addEnd(tmpFrmVirtual);

    purchFormLetter = purchFormLetter::construct(DocumentStatus::Invoice);
    purchFormLetter.reArrangeNow(false);
    purchFormLetter.update(purchTable,
                           purchTable.PurchId,
                           systemDateGet(),
                           PurchUpdate::PackingSlip,
                           AccountOrder::None,
                           purchFormLetter.proforma(),
                           purchFormLetter.printFormLetter(),
                           purchFormLetter.usePrintManagement(),
                           purchFormLetter.creditRemaining(),
                           listRecord.pack());

    info("done");
}
Правда у меня SQL стал чертыхаться на метод PurchFormLetter_Invoice\selectFromJournal в месте
X++:
tmpFrmVirtual.RecordNo == vendPackingSlipJour.RecId &&
tmpFrmVirtual.TableNum == vendPackingSlipJour.TableId
пришлось заменить на конструкцию вида
X++:
    while select tmpFrmVirtual
        order by Id
        where tmpFrmVirtual.TableNum   == tableIdPackingSlip
        join vendPackingSlipJour
            where
            tmpFrmVirtual.RecordNo == vendPackingSlipJour.RecId
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: alexkrut (1).
Старый 05.05.2012, 15:58   #14  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Спасибо! Помогло формирование _packedTmpFrmVirtualList. Правда теперь появляется сообщение о том, что не заполнено поле "ссылка на строку", но это наверное из-за неправильного формирования отборочной накладной.
Старый 05.05.2012, 17:46   #15  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Есть еще метод purchFormLetter.chooseLinesQuery(), через который можно вообще любой запрос
на разноску повесить, только разноску надо потом вызыват методом run()
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
Старый 05.05.2012, 18:42   #16  
alexkrut is offline
alexkrut
Участник
 
20 / 33 (2) +++
Регистрация: 19.12.2011
Цитата:
Сообщение от plumbum Посмотреть сообщение
Есть еще метод purchFormLetter.chooseLinesQuery(), через который можно вообще любой запрос
на разноску повесить, только разноску надо потом вызыват методом run()
А можно по-подробнее про это?
Старый 19.07.2013, 08:25   #17  
Romb is offline
Romb
Участник
Аватар для Romb
 
79 / 22 (1) +++
Регистрация: 06.01.2004
Добрый день. Почему не делаете для разноски отборочной накладной
X++:
purchFormLetter = purchFormLetter::construct(DocumentStatus::PackingSlip)?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подмена аналитик при разноске отборочной накладной evv DAX: Программирование 9 01.12.2010 13:52
разноска отборочной накладной Varmen DAX: Программирование 1 30.05.2009 12:58
Программная разноска накладной со строками из нескольких заказов Ace of Database DAX: База знаний и проекты 7 25.08.2007 13:08
Новые счета в разноске в 3 SP Alex_R2 DAX: База знаний и проекты 13 22.06.2006 15:36
Разноска операций Закупка, Заказ по счетам ГК по отборочной накладной. Как настроить? May DAX: Функционал 5 01.08.2003 11:13
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:09.