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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.05.2012, 16:14   #13  
niksen is offline
niksen
Участник
Самостоятельные клиенты AX
 
284 / 28 (1) +++
Регистрация: 05.07.2011
Адрес: Татарстан
X++:
void TmpTableToDBTable()
{
    timeofday                   timeCounter;
    str 20                      JournalId;
    InventLocation              InventLocation;
    InventLocationId            InventLocationId;
    InventDim                   InventDim;
    InventDimId                 InventDimId;
    int                         cnt;
    InventSite                  InventSite;
    InventSiteId                SiteId;
    InventTrans                 InventTrans;
    InventTransId               InventTransId;
    ;
    updated = 0;
    created = 0;
    info(time2str(timenow(),1,1) + ' начало загрузки в рабочую БД');
    timeCounter = timenow();
    journalid = '000101_131';
    delete_from InventJournalTrans
        where InventJournalTrans.JournalId == journalId;
    //journalId = strfmt(time2str(timenow(),1,1)+'начдан');
    select firstonly InventLocation
        where InventLocation.InventLocationType == InventLocationType::Standard;
        {
         InventLocationId = InventLocation.InventLocationId;
         ///  первый попавшийся склад
        }
    select firstonly InventSite;
        {
         SiteId = InventSite.SiteId;
         /// первый попавшийся сайт
        }

    info('выбран склад');
    ttsbegin;
    while select forupdate DAXInventItem
        {
            inventDim = null;
            inventDim.InventLocationId  = InventLocationId;
            inventDim.InventSiteId = SiteId;
            inventDim = InventDim::findOrCreate(inventDim);
            DAXInventItem.inventDimId   = inventDim.inventDimId;
            DAXInventItem.update();
        }
    ttscommit;
    info('обновлена аналитика');

    ttsbegin;
    if (InventJournalTable::exist(journalId))
    {
        info('журнал найден');
    }
    else
    {
    /// создание журнала
    select forupdate firstonly InventJournalTable
        where InventJournalTable.JournalId == journalId;
        {
            ++created;
            AxInventJournalTable = AxInventJournalTable::construct();
            AxInventJournalTable.inventJournalTable(InventJournalTable);
            AxInventJournalTable.parmJournalId(journalId);
            AxInventJournalTable.parmJournalType(InventJournalType::Movement);
            AxInventJournalTable.parmPosted(NoYes::No);
            AxInventJournalTable.parmReservation(ItemReservation::None);
            AxInventJournalTable.parmSystemBlocked(NoYes::No);
            AxInventJournalTable.parmVoucherDraw(JournalVoucherDraw::Entering);
            AxInventJournalTable.parmVoucherChange(InventJournalVoucherChange::DateChange);
            AxInventJournalTable.parmDeletePostedLines(NoYes::No);
            AxInventJournalTable.parmDetailSummary(DetailSummary::Detail);
            AxInventJournalTable.parmJournalNameId('ЖурПр.');
            AxInventJournalTable.save();
            InventJournalTable = AxInventJournalTable.inventJournalTable();
            InventJournalTable.update();
        }
        info('создан журнал');
    }
    ttscommit;
    cnt = 0;
    ttsbegin;
    while select DAXInventItem
    {
      select forupdate InventJournalTrans
        where InventJournalTrans.JournalId == journalId  &&
                InventJournalTrans.ItemId == DAXInventItem.ItemId &&
                InventJournalTrans.Qty == DAXInventItem.Qty &&
                InventJournalTrans.TransDate == DAXInventItem.TransDate;
        {
            ++created;
            ++cnt;
            InventJournalTrans.initValue();
            InventJournalTrans.InventDimId= DAXInventItem.InventDimId;
            InventJournalTrans.ItemId = DAXInventItem.ItemId;
            InventJournalTrans.Qty = DAXInventItem.Qty;
            InventJournalTrans.TransDate = DAXInventItem.TransDate;
            InventJournalTrans.JournalType = InventJournalType::Movement;
            InventJournalTrans.PriceUnit = 1.00;
            InventJournalTrans.LineNum = InventJournalTrans::lastLineNum(journalId)+1;
            InventJournalTrans.CostPrice = 0.00;
            InventJournalTrans.CostAmount =0.00;
            InventJournalTrans.CostMarkup = 0.00;
            InventJournalTrans.SalesAmount = 0.00;
            InventJournalTrans.LedgerAccountIdOffset = "Корр.Счёт";
            InventJournalTrans.BOMLine = NoYes::No;
            InventJournalTrans.AssetTransType = AssetTransTypeJournal::None;
            InventJournalTrans.Voucher = '';
            InventJournalTrans.JournalId = journalId;
            InventJournalTrans.CostPrice = 0.00;
            InventJournalTrans.PriceUnit = 1.00;
            InventJournalTrans.CostMarkup = 0.00;
            InventJournalTrans.CostAmount = 0.00;
            InventJournalTrans.SalesAmount = 0.00;
            InventJournalTrans.ProjTransId = "";
            InventJournalTrans.InventTransId = int2str(00027231+cnt+1)+'_129';
            InventJournalTrans.InventTransIdFather = '';
            InventJournalTrans.InventOnHand = 0.00;
            InventJournalTrans.Counted = 0.00;
            InventJournalTrans.Dimension[1] = "";
            InventJournalTrans.Dimension[2] = "";
            InventJournalTrans.Dimension[3] = "";
            InventJournalTrans.InventTransIdReturn = "";
            InventJournalTrans.ProjCategoryId = "";
            InventJournalTrans.ProjId = "";
            InventJournalTrans.DEL_CorrectedInvoiceId = "";
            InventJournalTrans.ToInventTransId = "";
            InventJournalTrans.ReasonRefRecId = 0;
            InventJournalTrans.ToInventDimId = "";
            InventJournalTrans.ReqPOId = "";
            InventJournalTrans.EmplId = "";
            InventJournalTrans.AssetTransType = AssetTransTypeJournal::None;
            InventJournalTrans.AssetId = "";
            InventJournalTrans.AssetBookId = "";
            InventJournalTrans.ProjTaxGroupId = "";
            InventJournalTrans.ProjSalesCurrencyId = "";
            InventJournalTrans.ProjLinePropertyId = "";
            InventJournalTrans.ProjTaxItemGroupId = "";
            InventJournalTrans.ProjUnitID = "";
            InventJournalTrans.ProjSalesPrice = 0.00;
            InventJournalTrans.InventRefType = InventRefType::None;
            InventJournalTrans.InventRefId = "";
            InventJournalTrans.InventRefTransId = "";
            InventJournalTrans.ProfitSet = CostProfitSet::Standard;
            InventJournalTrans.ActivityNumber = "";
            InventJournalTrans.Storno_RU = NoYes::No;
            InventJournalTrans.ServiceTariffId_PL = "";
            InventJournalTrans.ScrapTypeId_RU = "";
            InventJournalTrans.write();
        }
    }
    ttscommit;

     info('создано записей ' + int2str(created));
     info('обновлено записей ' + int2str(updated));
     info(time2str(timenow(),1,1) + ' конец загрузки в рабочую БД');
     timeCounter = timenow()-timeCounter;
     info('времени загрузки в основную БД '+time2str(timeCounter,1,1));

}
вот примерно это получилось
используется одна временная таблица, в которой аналитика проставляется исходя из 1 сайта и склада, можете указать нужный сайт и склад, дело ваше
Косяк конечно у меня с transId, если кто подскажет, исправить, буду рад
p.s. этот код загружает данные, но не разносит журнал. Разносил я вручную, т.к. мне нравится контролировать процесс
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ввод начальных остатков по клиентам и поставщикам Akri DAX: Функционал 12 26.01.2012 10:59
ввод начальных остатков АКС DAX: Функционал 36 28.11.2011 15:04
Ввод остатков по счету 14 (резерв под снижение стоимости ТМЦ) Dolores DAX: Функционал 13 28.10.2011 15:59
Статья о новом механизме блокировок складских остатков в Ax 4.0 lev DAX: Программирование 3 01.06.2011 10:56
ввод остатков по ОС lana DAX: Функционал 1 07.04.2004 18:17

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

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

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