During client installation we faced a issue when AX client gets crashed every time we try to start AX and the client terminates on startup after some investigation we found that is was Intel graphics drivers which were causing issue to fix this you need to Update the graphics driver to the most recent version available
Showing posts with label AX 2012. Show all posts
Showing posts with label AX 2012. Show all posts
Thursday, April 14, 2016
Thursday, July 10, 2014
Number Sequence Error in AX 2012
While creating new number sequence we may come across this error "Default scope cannot be implicitly determined by the number sequence framework for the given datatype. Please provide scope information explicitly."
This generally comes when there is a conflict in a scope which is being entered in NumberSeqModule class and later changed fix this issue by below steps
*Please try this in testing environment first this will impact currently running number sequence as well
1. Find the EDT number which is conflicting
2. Run below job with EDT number
static void delteDatatyperef(Args _args)
{
NumberSequenceDatatypeParameterType NumberSequenceDatatypeParameterType;
NumberSequenceDatatype NumberSequenceDatatype,lNumberSequenceDatatype;
RefRecId RefRecId = 105035;
select NumberSequenceDatatype where NumberSequenceDatatype.DatatypeId == RefRecId;
ttsBegin;
delete_from NumberSequenceDatatypeParameterType where NumberSequenceDatatypeParameterType.NumberSequenceDatatype == NumberSequenceDatatype.RecId;
delete_from lNumberSequenceDatatype where lNumberSequenceDatatype.DatatypeId == RefRecId;
ttsCommit;
}
3. Run NumberSeqApplicationModule.load(); in another job as per module which is conflicting
All will be working fine after this.
This generally comes when there is a conflict in a scope which is being entered in NumberSeqModule class and later changed fix this issue by below steps
*Please try this in testing environment first this will impact currently running number sequence as well
1. Find the EDT number which is conflicting
2. Run below job with EDT number
static void delteDatatyperef(Args _args)
{
NumberSequenceDatatypeParameterType NumberSequenceDatatypeParameterType;
NumberSequenceDatatype NumberSequenceDatatype,lNumberSequenceDatatype;
RefRecId RefRecId = 105035;
select NumberSequenceDatatype where NumberSequenceDatatype.DatatypeId == RefRecId;
ttsBegin;
delete_from NumberSequenceDatatypeParameterType where NumberSequenceDatatypeParameterType.NumberSequenceDatatype == NumberSequenceDatatype.RecId;
delete_from lNumberSequenceDatatype where lNumberSequenceDatatype.DatatypeId == RefRecId;
ttsCommit;
}
3. Run NumberSeqApplicationModule.load(); in another job as per module which is conflicting
All will be working fine after this.
Tuesday, June 25, 2013
Dynamics AX 2012 Import HR Postions X++ code
static void ImportPosition(Args _args)
{
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
OMOperatingUnit OMOperatingUnit;
int row=1;
Name name;
FileName filename;
HcmPosition HcmPosition;
HcmPositionDetail HcmPositionDetail;
HcmPositionWorkerAssignment HcmPositionWorkerAssignment;
HcmPositionDuration HcmPositionDuration;
str job;
OMOperatingUnitNumber department;
;
application = SysExcelApplication::construct();
workbooks = application.workbooks();
filename = "C:\\import\\HRPosition.xlsx";
ttsBegin;
try
{
workbooks.open(filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
do
{
row++;
HcmPosition.PositionId = cells.item(row, 1).value().bStr();
HcmPosition.insert();
department = cells.item(row, 2).value().bStr();
job = cells.item(row, 3).value().bStr();
select firstOnly OMOperatingUnit where OMOperatingUnit.OMOperatingUnitNumber == department;
if(OMOperatingUnit)
{
HcmPositionDetail.Department = OMOperatingUnit.RecId;
HcmPositionDetail.Job = HcmJob::findByJob(job).RecId;
HcmPositionDetail.Position = HcmPosition.RecId;
HcmPositionDetail.Title = HcmTitle::findByTitle(HcmJobDetail::findByJob(HcmPositionDetail.Job).Description).RecId;
HcmPositionDetail.Description = cells.item(row, 4).value().bStr();
HcmPositionDetail.ValidFrom = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
HcmPositionDetail.ValidTo = DateTimeUtil::maxValue();
HcmPositionDetail.insert();
HcmPositionWorkerAssignment.ValidFrom = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
HcmPositionWorkerAssignment.ValidTo = DateTimeUtil::maxValue();
HcmPositionWorkerAssignment.Position = HcmPosition.RecId;
HcmPositionWorkerAssignment.Worker = HcmWorker::findByPersonnelNumber(cells.item(row, 6).value().bStr()).RecId;
HcmPositionWorkerAssignment.insert();
HcmPositionDuration.Position = HcmPosition.RecId;
HcmPositionDuration.ValidFrom = HcmPositionWorkerAssignment.ValidFrom;
HcmPositionDuration.ValidTo = DateTimeUtil::maxValue();
HcmPositionDuration.insert();
type = cells.item(row+1, 1).value().variantType();
print row;
}
}
while (type != COMVariantType::VT_EMPTY);
application.quit();
ttsCommit;
}
{
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
OMOperatingUnit OMOperatingUnit;
int row=1;
Name name;
FileName filename;
HcmPosition HcmPosition;
HcmPositionDetail HcmPositionDetail;
HcmPositionWorkerAssignment HcmPositionWorkerAssignment;
HcmPositionDuration HcmPositionDuration;
str job;
OMOperatingUnitNumber department;
;
application = SysExcelApplication::construct();
workbooks = application.workbooks();
filename = "C:\\import\\HRPosition.xlsx";
ttsBegin;
try
{
workbooks.open(filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
workbook = workbooks.item(1);
worksheets = workbook.worksheets();
worksheet = worksheets.itemFromNum(1);
cells = worksheet.cells();
do
{
row++;
HcmPosition.PositionId = cells.item(row, 1).value().bStr();
HcmPosition.insert();
department = cells.item(row, 2).value().bStr();
job = cells.item(row, 3).value().bStr();
select firstOnly OMOperatingUnit where OMOperatingUnit.OMOperatingUnitNumber == department;
if(OMOperatingUnit)
{
HcmPositionDetail.Department = OMOperatingUnit.RecId;
HcmPositionDetail.Job = HcmJob::findByJob(job).RecId;
HcmPositionDetail.Position = HcmPosition.RecId;
HcmPositionDetail.Title = HcmTitle::findByTitle(HcmJobDetail::findByJob(HcmPositionDetail.Job).Description).RecId;
HcmPositionDetail.Description = cells.item(row, 4).value().bStr();
HcmPositionDetail.ValidFrom = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
HcmPositionDetail.ValidTo = DateTimeUtil::maxValue();
HcmPositionDetail.insert();
HcmPositionWorkerAssignment.ValidFrom = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
HcmPositionWorkerAssignment.ValidTo = DateTimeUtil::maxValue();
HcmPositionWorkerAssignment.Position = HcmPosition.RecId;
HcmPositionWorkerAssignment.Worker = HcmWorker::findByPersonnelNumber(cells.item(row, 6).value().bStr()).RecId;
HcmPositionWorkerAssignment.insert();
HcmPositionDuration.Position = HcmPosition.RecId;
HcmPositionDuration.ValidFrom = HcmPositionWorkerAssignment.ValidFrom;
HcmPositionDuration.ValidTo = DateTimeUtil::maxValue();
HcmPositionDuration.insert();
type = cells.item(row+1, 1).value().variantType();
print row;
}
}
while (type != COMVariantType::VT_EMPTY);
application.quit();
ttsCommit;
}
Dynamics AX 2012 Code to meagre MainAccount Dimesion and Default Dimesion
Below is the to Code to meagre MainAccount Dimesion and Default Dimesion to get Ledger Dimension Account which is used in segmented while creating Journal voucher in LedgerJournalTrans
static void CreateLedgerDimension(Args _args)
{
LedgerDimensionAccount ledgerDimension,defaultDimension;
LedgerDimensionAccount empledgerdimension;
LedgerDimensionAccount mainAccDimension;
HcmPositionDefaultDimension (empPositionDimension
HcmPositionWorkerAssignment HcmPositionWorkerAssignment;
mainAccDimension = PayHeadTable::find('BasicRate').DebitAccount;
HcmPositionWorkerAssignment = HcmPositionWorkerAssignment::getActivePositionWorkerAssignment(HcmWorker::findByPersonnelNumber('PID-0937').RecId);
select empposdimension where empposdimension.Position == HcmPositionWorkerAssignment.Position;
if(empPositionDimension)
empledgerdimension = empPositionDimension.DefaultDimension;
defaultDimension = DimensionDefaultingService::serviceCreateLedgerDimension(mainAccDimension, empledgerdimension);
info(strFmt("Before: %1", DimensionAttributeValueCombination::find(defaultDimension).DisplayValue));
}
static void CreateLedgerDimension(Args _args)
{
LedgerDimensionAccount ledgerDimension,defaultDimension;
LedgerDimensionAccount empledgerdimension;
LedgerDimensionAccount mainAccDimension;
HcmPositionDefaultDimension (empPositionDimension
HcmPositionWorkerAssignment HcmPositionWorkerAssignment;
mainAccDimension = PayHeadTable::find('BasicRate').DebitAccount;
HcmPositionWorkerAssignment = HcmPositionWorkerAssignment::getActivePositionWorkerAssignment(HcmWorker::findByPersonnelNumber('PID-0937').RecId);
select empposdimension where empposdimension.Position == HcmPositionWorkerAssignment.Position;
if(empPositionDimension)
empledgerdimension = empPositionDimension.DefaultDimension;
defaultDimension = DimensionDefaultingService::serviceCreateLedgerDimension(mainAccDimension, empledgerdimension);
info(strFmt("Before: %1", DimensionAttributeValueCombination::find(defaultDimension).DisplayValue));
}
Dynamics AX 2012 inserting data in Resource Dimension and fetching Default Dimension
DimensionDefault getDimension(ResourceTable _Resource)
{
DimensionAttribute DimensionAttribute;
DimensionFinancialTag DimensionFinancialTag;
Struct struct = new Struct();
container defaultDimensionCon;
DimensionDefault workerDimensionDefault;
;
DimensionAttribute = DimensionAttribute::findByName('Resource');
DimensionFinancialTag = DimensionFinancialTag::findByFinancialTagCategoryAndValue(DimensionAttribute.financialTagCategory(),_Resource.value,true);
if(!DimensionFinancialTag)
{
DimensionFinancialTag.clear();
DimensionFinancialTag.Description=_Resource.description;
DimensionFinancialTag.Value=_HcmWorker.PersonnelNumber;
DimensionFinancialTag.FinancialTagCategory=DimensionAttribute.financialTagCategory();
DimensionFinancialTag.insert();
struct.add('Resource', _HcmWorker.PersonnelNumber);
defaultDimensionCon += struct.fields();
defaultDimensionCon += struct.fieldName(1);
defaultDimensionCon += struct.valueIndex(1);
workerDimensionDefault = AxdDimensionUtil::getDimensionAttributeValueSetId(defaultDimensionCon);
return workerDimensionDefault;
}
else
return 0;
}
Subscribe to:
Posts (Atom)