VZ | Název itemu s diakritikou |
| V jedné staré DB jsou použity názvy polí s diakritikou, např. numerické pole Číslodokladu. V jiné DB se spouští agent, který vyhledá podle nějakého identifikátoru fakturu a měl by vzít hodnotu z toho pole Číslodokladu. Z lokálu v debuggeru to funguje, ale při pravidelném spuštění na serveru to číslo nevezme.
If invoicedoc.HasItem("Číslodokladu") Then invNum = invoicedoc.GetItemValue("Číslodokladu") If Isarray(invNum) Then invoiceNumber$ = Cstr(invNum(0)) Else invoiceNumber$ = Cstr(invNum) End If Else e = Evaluate({@GetField("Číslodokladu")}, invoicedoc) If Isarray(e) Then invoiceNumber$ = Cstr(e(0)) Else invoiceNumber$ = Cstr(e) End If If invoiceNumber$ = "" Then invoiceNumber$ = "bez čísla?" End If doc.invoiceTerm = invoiceNumber$ Call doc.Save(True, False)
Původně to bylo bez toho Evaluate , protože na severu neprošlo ani to první "If invoicedoc.HasItem("Číslodokladu") Then". Ale i to Evaluate nejspíš s daným názvem pole neproběhne korektně. Vždy se přiřadí hodnota "bez čísla", přestože to číslo v dokumentech je. Jak zadat do LS korektně název takového debilního itemu začínajícího na Č? |
Tomáš Hanus | RE: Název itemu s diakritikou |
04.03.2010 13:01:16
ID: 3129.1
| A víme, kde je chyba? Respektive jestli to doběhne bez problémů či nedoběhne? Konkrétně konstrukce typu s diakritikou v názvu pole: If Not (invoicedoc is Nothing) Then If invoicedoc.HasItem("Číslodokladu") Then Print invoicedoc.GetItemValue("Číslodokladu")(0) End If End If u naplánovaného agenta s Domino 8.* verzí funguje bez problému. Osobně to sice nepoužívám, ale není s tím problém. Osobně typuji problém ve velkých a malých písmenech. S jistotou vím, že pokud zavoláte invoicedoc.GetItemValue("čÍSLODOKLADU"), tak se nic nevrátí. Zkuste invoicedoc.GetItemValue("ČÍSLODOKLADU"). Zkusil bych se rovněž podívat, jak se přesně jmenuje pole v dokumentu.
Pokud používám vždy velká písmena "ČÍSLODOKLADU", neměl jsem problém. Jindy to opravdu blbne. |
VZ | Velikost písmen ... |
04.03.2010 13:35:06
ID: 3129.2
| ... jsem kontroloval jako první. Změnit všechny písmena na velké můžu zkusit. A ještě mě napadlo napsat ten název "Číslodokladu" do nějakého pole třeba v profilu, aby si ho agent načetl. Ale na R6 serveru neprojde ani ten hasItem, jak jsem psal už na začátku, tak jsem doufal, aspoň to evaluate projde. Popravdě řečeno netuším, kdo tu DB a formuláře původně (cca v r. 1997) vytvořil a proč při tom použil pro názvy polí znaky z diakritikou. Ale když už to v té DB je a funguje to nějakých 13 let přes různé verze LN, tak snad nebude třeba přejmenovávat nebo doplňovat pole ve všech dokumentech, které se tam za ta léta nashromáždily ... |
VZ | Tak zatím nic nezabralo |
25.03.2010 08:57:51
ID: 3129.3
| Ani použití všech písmen velkých, ani natažení názvu itemu z profilu. Asi bude nutné si vzít za běhu všechny itemy v tom dokumentu a někam si vypsat jejich názvy. A pak z nich nějak zkusit vybrat ten správný. |
VZ | Vypadá to na chybu mezi klávesnicí a židlí |
01.04.2010 08:48:12
ID: 3129.4
| Dokument opravdu neměl požadovaný item, protože se tahal na serveru z jiné kolekce dokumentů. Zkrátka místo invoicecoll.GetFirstDocument tam bylo jen coll.GetFirstDocument. Taková pěkná aprílová chyba. |
Tomáš Hanus | RE: Vypadá to na chybu mezi klávesnicí a židlí |
01.04.2010 17:45:48
ID: 3129.5
| No jo, ale proč to fungovalo tu hezkou řádku let a teď to přestalo. Nebo tím byla myšlena ta stařičká databáze, ze které se jen berou data do nově vytvořené? Asi ano, ale chyba velmi častá, znám :) |
VZ | Problém není (a nebyl) |
08.04.2010 08:53:20
ID: 3129.6
| Když to bere správné dokumenty ze správné kolekce (a tedy ze správné stařičké DB), tak ten item Číslodokladu bez problémů najde. Zkrátka: problém s diakritikou nebyl. |