Page History
...
Elinizdeki bir nesneyi başka bir nesneye kopyalamak istediğinizde, bu işlemi Set komutuyla veritabanına gitmeden yapabilirsiniz.
Code Block |
---|
// Kaynak taşıma kabının Id si ile hedef taşıma kabı veritabanından okunuyor |
...
Container.Get( |
...
@@Container.Id, |
...
@@Container2) // Veritabanına gitmeden, kaynak taşıma kabı nesnesi hedef taşıma kabına atanıyor |
...
Set( |
...
@@Container2, @@Container) |
Get işlemi, okunan nesnenin içindeki bağlantılı nesneleri de otomatik doldurur. Eğer sadece ana nesneye ihtiyacınız varsa, Get komutunun 2. parametresine nesnenin adını yazabilirsiniz.
Code Block |
---|
// Bu işlem @@Address nesnesi ile birlikte ilgili @@Warehouse, @@WarehouseFloor, @@WarehouseZone, @@WarehouseBlock nesnelerini de veritabanından okuyup doldurur. |
...
Address.Get("Address='@AdresBarkod'") |
...
// Bu işlem sadece @Adres nesnesini veritabanından okuduğu adres bilgisiyle doldurur. |
...
Address.Get("Address='@AdresBarkod'",@Adres) |
Scriptteki tüm nesneler globaldir. Yani bir kez dolduğunda, boşaltılmadığı ya da başka bir komutla doldurulmadığı müddetçe dolu kalır. Kayıt hataları yaşamamak için, işlem öncesinde işlemi etkileyecek değişkenleri boşaltmalısınız.
Code Block |
---|
// ResetVariables komutu hafızadaki değişkenleri boşaltır. |
...
ResetVariables({"name":["@@ProductionOrder","@@ProductionOrderLine","@@WorkOrder","@@WorkOrderLine","@@OrderSlip","@@OrderSlipLine","@@Arp"]}) |
Sık yaptığınız işlemleri ortak bir forma taşıyarak oradan çağırabilir, scriptinizin daha kısa ve derli toplu olmasını sağlayabilirsiniz.
Code Block |
---|
Set(@YetkiKodu, "GIRIS") // Adres için kullanılacak yetki kodu değişkene atanıyor |
...
CallForm(AdresListeleSec) // Adres seçim formu çağrılıyor |
...
If(@AdresSecimSonucu = -1,Goto(BasaDon)) // Formdan hatalı sonuç dönmüşse script |
...
yönlendiriliyor BeginForm(AdresListeleSec) // Ortak adres seçim |
...
formu Set(@AdresSecimSonucu, 0) // Sonuç değişkeni |
...
sıfırlanıyor Address.List("AuthCode='@YetkiKodu'","",@AdresListesi) |
...
If(@AdresListesi. |
...
rowCount<1) ShowMessage({"title":"UYARI","message":"Tanımlı Adres Bulunamadı","buttons":"TAMAM"},@Secenek) |
...
Set(@AdresSecimSonucu, -1) // Sonuç değişkeni hatalı olarak |
...
belirleniyor Else() |
...
If(@AdresListesi.rowCount = 1) // Tek adres varsa direkt @@Address değişkenine |
...
atanıyor Address.Get(@AdresListesi.rows.1.Id) |
...
Else() // Birden çok adres varsa listeden seçip |
...
yaptırılıyor PopupView(@AdresListesi.rows,{"mode":"list","title":"Kabul Adres Listesi","fields":["Address|Adres Tanımı|15|L"]},@sira) |
...
Address.Get(@AdresListesi.rows.@sira.Id) |
...
EndIf() |
...
EndIf() |
...
ReturnForm() // Bu formu çağıran satıra geri dönülüyor |
...
EndForm() |
Sık kullandığınız sabitleri bir kez tanımlayıp, scriptin her yerinde kullanabilirsiniz.
Code Block |
---|
// Set komutu JSON yapısında değişken atamasını destekler. |
...
Set(@EmirDurum, {"Bekliyor":12,"IslemeAlindi":13, "Tamamlandi":14}) |
...
// Emir statüsü tamamlandı olarak belirleniyor. JSON nesnelerin alt nesnelerine . (nokta) ile erişilebilir. |
...
CustomState.Get(@EmirDurum.Tamamlandi) |
Gerekmedikçe, nesneleri veritabanından doldurmak için Sql komutu kullanmayın. List ve Get komutları, yetkiler dahil bir çok kontrolü yaparak verileri getirir.
Code Block |
---|
// Kullanıcının yetkisi olduğu-olmadığı, aktif firmaya ait olan-olmayan, kullanımda olan-olmayan bütün depoları getirir. |
...
Sql("SELECT * FROM SysWarehouse", @Depolar) |
...
// Sadece aktif firmaya ait, kullanımda olan ve o kullanıcının yetkisi olan depoları getirir. |
...
Warehouse.List("","", @Depolar) |
Gerekmedikçe, veritabanında güncelleme işlemleri için Sql komutu kullanmayın. Save komutu kaydetme sırasında bir çok kontrolü yapar.
Code Block |
---|
// Fiş statüsünü Entegre Edildi olarak günceller ama entegrasyonu tetiklemez. |
...
Sql("UPDATE Slip SET StateId=19", @sonuc) |
...
// Fiş statüsünü Entegre Edildi olarak günceller ve o statünün otomatik eylemi olarak ERP'ye entegre olmasını sağlar. |
...
CustomState.Get(19) |
...
Slip.Save() |