środa, 30 stycznia 2013

Reaktywacja

Minęło sporo czasu od ostatniego wpisu, jako że po prostu zaniedbałem to co niegdyś zacząłem. Niemniej jednak postaram się ożywić ten blog i mam nadzieje, że poruszę kilka interesujących tematów.

Dzisiejszy wpis to coś niezbyt trudnego, związanego z problemem z którym borykał się jeden ze znajomych użytkowników XL-a. Idea była taka, aby podczas wywoływania wydruku faktury pokazywał się parametr "opis" z domyślną wartością wziętą z opisu tego konkretnego dokumentu FS. Problemem jest fakt, że w momencie wywołania wydruku nie ma jak się dobrać do GID-u faktury na której stoimy (pomijam doklejanie do filtra obowiązkowego czegoś na zasadzie 1=1, gdzie jedynki to GID-y, które potem można powycinać). W tym przypadku z pomocą może nam przyjść pole TrN_Aktywny, dzięki któremu możemy stworzyć parametr na zasadzie poniższego przykładu:

@PAR ?@S255|Opis|&Opis:{GetSQL('SELECT TnO_Opis FROM CDN.TraNag INNER JOIN CDN.TrNOpisy ON CDN.TraNag.TrN_GIDNumer=CDN.TrNOpisy.TnO_TrnNumer INNER JOIN CDN.Sesje ON CDN.TraNag.TrN_Aktywny=CDN.Sesje.SES_SesjaID AND SES_OpeIdent = '''& XLOpeIdent() &'''')} @? PAR@

Coś takiego spowoduje, że na oknie z parametrami, ten zdefiniowany powyżej będzie mieć domyślną wartość pobraną z opisu faktury, na której właśnie stoimy (Warto zaznaczyć, że w przypadku otwarcia kilku faktur jednocześnie przez jednego usera, warto się zabezpieczyć jakąś funkcją agregującą i pamiętać o tym, iż będzie to tylko ochrona przed błędem, a nie zwracanie dobrej wartości). Sposób ten jest o tyle fajny, że pozwala nam w parametrach wstawiać domyślne wartości pobrane z dowolnego miejsca w bazie które jest powiązane z fakturą na której użytkownik się znajduje (np. wartość atrybutu, który jest wypełniony na tej fakturze).

Dziękuje za zainteresowanie i do "poczytania" wkrótce :)