Skip links

Axapta belge ekleme işlemleri


Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118
Axapta belge ekleme işlemleri

Merhaba
Axapta standardında herhangi bir tablonun satırına istediğiniz kadar belge ekleyebilirsiniz.
Bunun için öncelikle Temel / Belge Yönetimi” altındaki tanımları yapmanız gerekmektedir.
Belge Yönetimi menüsü altında:
1.Belge Tipleri
Farklı belge tipleri tanımlayıp bunların farklı klasörlerde  tutulmasını sağlayabilirsiniz.
Genel sekmesinde bulunan tanımlarla birçok esnekliği otomatik şekilde tanımlayabilirsiniz. Örneğin silinen dosyanın sadece kaydını silme veya hem kaydı hemde fiziksel dosyayı sılme işlermlerini seçebilirsiniz.
2.Etkin belge tabloları
Burda Axtablolarının bir listesi var Belge ekleme ikonunun görünmesiniistediğiniz tabloyu burdan seçmelisiniz.
3.Parametreler
Parametrelerde Belge tiplerini numara serisinivbtanımları yapabilirsiniz.Burada bulunan arşiv dizini tnaımlamasını yapmayı unutmayın.
Burdaki tanımlamalar bittikten sonra Belge eklemenin etkin olduğu tablonun formunda Aşşağıdaki ikon görünür. İkona tıklayarak gerekli belgeleri ekleyebilir. Yeni Excel Word ve txt dosyayısı oluşturabilirsiniz. Daha Önce oluşturduğunuz dosyalarıda buradan takip edebilirsiniz.

Peki bu belge yönetiminde farklı isteklerle karşılaşırsanız neler yapabilirsiniz bunları konuşalım.

Bir müşterimizde şöyle bir istek oldu: Firmadaki bütün personellerin sicil belgeleri pdf formatında axaptada tutulmak istendi .
1000 personel olduğunu ve bunların 10 tane dosyası olduğunun ve personel değişimlerinide göz önüne alınca bir klasörde bütün dosyaların tutulmasının sistem açısında sakıncalı olacağı düşünülü bu yüzden dosyaların farklı klasorlerde tutulacağı bir geliştirme istedi.
Bizim bu isteğe cevap vermek için yaptığımız bazı işlemleri anlatayım. Öncelikle bir tablo form yapıp kişinin gerekli olna belgelerinin kayıtlarını burada oluşturabilmelerini sağladık. DocuViewformu axaptanın standart belge eklem formudur tablosu DocuRef ve DocuValue dur ayrıca işlemler Docu , DocuAction ,DocuActionArchive vb claslarda yapılmaktadır . yeri gelince değineceğim.
DocuView formunun initinde şu kodu yazarak kendi tablomdan çağırıldığını anlayabilirim

if (element.args().dataset() == tablenum(ETGDocuMan))
{
   callerForm = element.args().caller(); // çağıran formun ismi
   ETGDocuMan = element.args().record();  // benim oluşturduğum tablo
}

bu sayede formdaki işlemleri kendi ihtiyaçlarıma göre özelleştirebilirim.
Bir örnek : ben açtığım dosya eklemede kendimin oluşturduğu tek tipte dosya eklensin istiyorum. Standart dosya eklemde bir çok seçenek karşınıza çıkar
if(callerform)
{
if(callerForm.name() == formStr(ETGDocuMan))
{
DocuRef.EmplId = ETGDocuMan.EmplId;
while select docuType
index TypeIdx
where docuType.TypeId == ETGDocuSetup::find(ETGDocuMan.DTDocuType).DocuTypeId
{
itemButtonCtrl = menuCtrl.addControl(FormControlType::MenuFunctionButton,docuType.TypeId);
itemButtonCtrl.menuItemType(MenuItemType::Action);
itemButtonCtrl.menuItemName(menuitemactionstr(ETGDocuActionNew)); // DocuAction clasından çogalttığım ve bazı   kısımları kendime göre özelleştirdiğim clasımı çağırıyorum
itemButtonCtrl.text(docuType.TypeId);
}
}
}
else
{
while select docuType
index TypeIdx
{
itemButtonCtrl = menuCtrl.addControl(FormControlType::MenuFunctionButton,docuType.TypeId);
itemButtonCtrl.menuItemType(MenuItemType::Action);
itemButtonCtrl.menuItemName(menuitemactionstr(DocuActionNew));
itemButtonCtrl.text(docuType.TypeId);
}
}
DocuActionArchive  clasının add metodunda eklenecek olan dosyanın yolu parametrelerden alınıp belirleniyor. Biz burayı değiştireceğiz
    //———————————————————
if(_docuRef.EmplId) // emplId yi biz tabloya kaydediyoruz  kendiaçtığımız bir sutun olduğu için sadece bizim formda doldurulduğundan eminiz
docuFilename = _docuRef.ETGpath(_docuRef.EmplId)
+ strfmt(“%1-%2-%3”,_docuRef.EmplId, _docuRef.TypeId, smmDocuments::getNonExistingFileName(numSeq,_docuRef.ETGpath(_docuRef.EmplId),this.fileType()))

// Dosya ismini medifiye ediyoruz dosya ismi şöyle oldu ” emplId-dosyaturu-numara serisi.tipi”
//burada onemli olan başka bir kısım “docuRef.ETGpath()” docuref tablosunda path metodu var biz ETGpath metodu yazıp onu çağırıyoruz.Ve burada  EmplId ye göre klsor oluşturup oraya kayıt edilmesini sağlayacağız.
+ ‘.’
+ this.fileType(); //new Filename
//uses curFileType
else
docuFilename = _docuRef.path()
+ smmDocuments::getNonExistingFileName(numSeq,_docuRef.path(),this.fileType())
+ ‘.’
+ this.fileType(); //new Filename
//uses curFileType
//———————————————————–

docuRef.ETGpath metoduna bakalım
// Changed on 26 Kas 2010 at 14:00:29 by etg-f
// Belge yönetimi personelin numarasına göre klasör oluşturup belgeleri tutma işlemi
FilePath ETGpath(EmplId _EmplId)
{
#WinApi
DocuValue   docuValue;
DocuType    docuType;
FilePath    filePath;
FilePath    tempDirectory;
Query       q;
dataAreaId  actualCompanyId;
boolean     callFromEP;
FileIOPermission fileIOPerm;
InteropPermission permission;
FilePath endSlash(FilePath _filePath)
{
return Docu::fileCheckPath(_filePath);
}
;
callFromEP = global::clientKind() == ClientType::COMObject;
actualCompanyId = this.ActualCompanyId ? this.ActualCompanyId : curext();
changecompany (actualCompanyId)
{
docuType = this.docuType();
// Only use docuValue.path when nocopy
if (docuType.RecId && docuType.FilePlace == DocuFilePlace::NoCopy)
{
docuValue = this.docuValue();
if (docuValue.RecId && docuValue.Path)
{
// Specific path – eg. when docuType.fileplace == DocuFilePlace::NoCopy
filePath = endSlash(docuValue.Path);
if (callFromEP)
{
fileIOPerm = new FileIOPermission(filePath, ‘r’);
fileIOPerm.assert();
// BP Deviation Documented
if (! WinAPIServer::pathExists(filePath))
throw error(strfmt(“@SYS90169”,filePath));
}
else
{
if (! WinAPI::pathExists(filePath))
throw error(strfmt(“@SYS90169”,filePath));
}
return filePath;
}
}
// Nocopy or archive
if (docuType.RecId && docuType.FilePlace != DocuFilePlace::Database)
{
if (docuType.ArchivePath)
{
// Type archivepath
filePath = endSlash(docuType.ArchivePath);
// TODO parametreye alınacak
// Biz yolu burda tanıumlıyoruz her EmplId için
filePath = strfmt(“C:\\fd\\%1\\”,_EmplId);
//       filePath izinlerini veriyoruz
permission = new InteropPermission(InteropKind::ClrInterop);
permission.assert();
if (callFromEP)
{
fileIOPerm = new FileIOPermission(filePath, ‘r’);
fileIOPerm.assert();
}
// eğer EmplId ye göre klasor yoksa oluşturuyoruz
if(!System.IO.Directory::Exists(filePath))
{
WinAPI::createDirectoryPath(filePath);
}
if (filePath && ! (callFromEP ?  WinAPIServer::pathExists(filePath) : WinAPI::pathExists(filePath)))
{
q = new Query();
q.addDataSource(tablenum(DocuType)).addRange(fieldnum(DocuType,TypeId)).value(queryValue(docuType.TypeId));
throw error(strfmt(“@SYS90175″,filePath),”,
SysInfoAction_FormrunQuery::newFormnameControlnameQuery(
formstr(docuType),
identifierstr(Setup_ArchivePath),q));
}
return filePath;
}
return endSlash(Docu::archivePath());
}
}
if (Session::isBusinessConnector())
{
// Use .NET to return the temporary directory on the
// Server or BC.NET tiers
new InteropPermission(InteropKind::ClrInterop).assert();
tempDirectory = endSlash(System.IO.Path::GetTempPath());
CodeAccessPermission::revertAssert();
return tempDirectory;
}
return endSlash(WinAPI::getFolderPath(#CSIDL_INTERNET_CACHE));
}
artık girilen EmplId ye göre Klasor oluşturup belgesini kaydedebiliyoruz.
kayıt işlemi böyle edit ve silme  işlemlerinde de güncelleme yapmak gerekiyor . Yazdıklarımız ışında onlarıda kolayca yapabilirsiniz.
fırsat bulduğumda bu gelişitmenin XPO sunu ekleyeceğim.
Selamlar.

Join the Discussion