Język skryptowy systemu jest używany w Workflow Management, na przykład do formułowania warunku wstępnego lub warunku przejścia lub do określania operatorów, którzy nie są podsumowani w roli workflow.
Silnik workflow obsługuje zarówno własny język skryptowy systemu, jak i JavaScript w celu wyrażania złożonych relacji. Niniejsza dokumentacja zawiera szczegółowe informacje na temat poszczególnych funkcji OLTP języka skryptowego systemu. Funkcje OLTP to funkcje, których kontekst użycia wymaga bazy danych OLTP. Przykładami funkcji OLTP są loadPartner i loadItem, które otwierają partnera lub artykuł w bieżącej bazie danych OLTP.
Przykłady przedstawione w niniejszym dokumencie mają pomóc w zrozumieniu sposobu korzystania z funkcji i poleceń języka skryptowego systemu. Aby użyć przykładów w innych kontekstach aplikacji, może być konieczne ich dostosowanie. Niniejszy dokument zawiera również przykłady funkcji, które nie są częścią języka skryptowego systemu. W takim przypadku przykłady wskazują, w jaki sposób można osiągnąć tę samą lub podobną funkcjonalność przy użyciu języka skryptowego systemu.
Grupa docelowa
Grupą docelową tego dokumentu są programiści i konsultanci techniczni, którzy tworzą lub dostosowują workflow dla klientów, a także klienci, którzy zarządzają własnym workflow.
Niniejszy dokument zakłada zrozumienie zakresu funkcji Workflow Management widocznych dla użytkownika. Ponadto, czytelnik powinien posiadać podstawową znajomość SQL lub innego języka programowania w celu zrozumienia języka skryptowego systemu.
Definicje terminów
GUID
GUID jest skrótem od Globally Unique Identifier i odpowiada globalnie unikalnemu identyfikatorowi. GUID to 128-bitowy numer obliczany zgodnie ze schematem Open Software Foundation (OSF) dla rozproszonych środowisk obliczeniowych (DCE). Zawiera on między innymi adres IP komputera generującego, składnik czasu i składnik losowy. Oznacza to, że dwa niezależne komputery mogą zawsze obliczyć różne identyfikatory GUID bez synchronizacji. W Comarch ERP Enterprise identyfikatory GUID są reprezentowane jako tablice bajtów Java o długości 16 i są używane głównie jako kompaktowe klucze podstawowe i obce w ramach jednostek biznesowych.
Systemowy język skryptowy
Wyrażenia, warunki, polecenia, funkcje i deklaracje są używane do wyrażania złożonych relacji. Wszystkie te wyrażenia są częścią wspólnego języka skryptowego zwanego językiem skryptowym systemu. Składnia języka skryptowego systemu jest oparta na SQL, Pascal i Java. Język skryptowy systemu jest używany w Workflow Management, na przykład do formułowania warunku wstępnego lub warunku przejścia lub do określania operatorów, którzy nie są podsumowani w roli workflow.
Funkcje OLTP
Funkcje OLTP to funkcje, których kontekst użycia wymaga bazy danych OLTP. Funkcje OLTP obejmują:
- Funkcje dla organizacji
- Funkcje dla partnerów
- Funkcje dla pozycji (Funkcje pozycji)
- Funkcje dla kwot i walut (Funkcje walutowe)
- Funkcje dla ilości i jednostek miar (Funkcje jednostek miar)
- Funkcje kalendarzy fabrycznych (Funkcje kalendarza)
- Funkcje dla stanowisk (Funkcje nazwy stanowiska)
- Funkcje zgłoszeń serwisowych (Funkcje zgłoszeń serwisowych)
- Różne funkcje dla obiektów biznesowych (Różne funkcje dla obiektów biznesowych)
- Funkcje dla dynamicznych obiektów biznesowych (Funkcje dynamicznych obiektów biznesowych)
- Funkcje atrybutów workflow (Funkcje atrybutów workflow)
Funkcje dla organizacji
Funkcje dla organizacji obejmują funkcję otwierania organizacji i funkcje wyszukiwania ustawień niestandardowych:
- getCustomisingValue
- isCustomisingAvailable
- loadOrganisation
getCustomisingValue
Nazwa |
getCustomisingValue |
Opis |
getCustomizingValue zwraca skonfigurowane wartości funkcji konfiguracji OLTP. |
Podpisy |
CisObject getCustomizingValue(String function) CisObject getCustomizingValue(String function, Guid organisation) |
Parametry |
function to w pełni kwalifikowana nazwa techniczna funkcji konfiguracji OLTP. organisation to identyfikator guid organizacji, dla której ma zostać wysłane zapytanie o skonfigurowane wartości funkcji konfiguracji OLTP. Jeśli funkcja konfiguracji OLTP ma co najmniej jedno odniesienie organizacyjne, należy określić organizację. W aplikacji Obiekty deweloperskie można wyszukiwać dostępne funkcje konfiguracji OLTP i ich odniesienia organizacyjne, wywołując obiekty deweloperskie typu Funkcja. |
Wynik |
Funkcja zwraca część powiązaną z funkcją konfiguracji OLTP jako obiekt CisObject. Aby ocenić skonfigurowane wartości, należy przekonwertować część na typowany obiekt CisObject za pomocą funkcji cast. |
Źródła błędów |
Jeśli funkcja konfiguracyjna nie istnieje, dla typu danych CisObject zwracana jest wartość domyślna null. Jeśli określona organizacja nie istnieje lub funkcja konfiguracji OLTP nie jest aktywna dla określonej organizacji, wystąpi błąd wykonania. |
Przykłady |
cast(CisObject(com.cisag.app.general.Localization), getCustomizingValue(„com.cisag.app.general.Localization”, loadOrganization(„93000”):guid) zwraca skonfigurowane wartości funkcji konfiguracji OLTP Specyficzne funkcje krajowe dla organizacji 93000. |
Kontekst |
OLTP |
Uwagi |
Można wysyłać zapytania tylko do funkcji konfiguracyjnej na poziomie funkcji OLTP. Przed wykonaniem tej czynności należy użyć funkcji isCustomizingAvailable, aby upewnić się, że funkcja konfiguracji OLTP jest aktywna. |
Zobacz także |
isCustomisingAvailable |
const LocalisationCountry as valueSet(com.cisag.app.customizing.general.LocalisationCountry);
function create()
{
var p_organisation := loadOrganisation(parameters.ORGANIZATION);
var p_function := „com.cisag.app.general.Localisation”;
var r_isActivated := isCustomizingAvailable(p_function, p_organisation:guid);
var r_country := „”;
if (r_isActivated) {
var customisingPart :=
cast(CisObject(com.cisag.app.customizing.general.obj.Localisation),
getCustomizingValue(p_function, p_organisation:guid));
r_country := valueSetDescription(LocalisationCountry, customizingPart:country);
}
result.FUNCTION := p_function;
result.IS_ACTIVATED := r_isActivated;
result.COUNTRY := r_country;
}
isCustomisingAvailable
Nazwa |
isCustomisingAvailable |
Opis |
isCustomizingAvailable sprawdza, czy funkcja konfiguracji OLTP jest aktywna. |
Podpisy |
Boolean isCustomisingAvailable(String function) Boolean isCustomisingAvailable(String function, Guid organisation) |
Parametry |
function to w pełni kwalifikowana nazwa techniczna funkcji konfiguracji OLTP. organisation to identyfikator guid organizacji, dla której ma zostać wysłane zapytanie o to, czy funkcja konfiguracji OLTP jest aktywna. Jeśli funkcja konfiguracyjna ma co najmniej jedno odniesienie organizacyjne, należy określić organizację. Dostępne funkcje konfiguracyjne i ich odniesienia organizacyjne można sprawdzić w aplikacji Obiekty deweloperskie, wywołując obiekty deweloperskie typu Funkcja. |
Wynik |
Jeśli funkcja konfiguracji OLTP jest aktywna, funkcja zwraca true, w przeciwnym razie false. |
Źródła błędów |
Jeśli określona organizacja nie istnieje, wystąpi błąd wykonania. |
Przykłady |
isCustomizingAvailable(„com.cisag.app.general.Localization”, loadOrganisation(„93000”):guid) sprawdza, czy funkcja dostosowywania Specyficzne funkcje krajowe jest aktywna dla organizacji 93000. Funkcji getCustomizingValue należy użyć, aby określić, dla którego kraju aktywowane są funkcje specyficzne dla kraju. isCustomizingAvailable(„com.cisag.app.inventory.Identifiers”, getCustomizingValue(„com.cisag.app.General”):company) sprawdza, czy funkcja konfiguracji Specyfikacje jest aktywna dla klienta. |
Kontekst |
OLTP |
Uwagi |
Zapytania można wysyłać tylko do funkcji konfiguracji na poziomie funkcji OLTP. |
Zobacz także |
getCustomisingValue |
function create()
{
var p_function := „com.cisag.app.inventory.FixedReservation”;
var r_isAvailable := isCustomizingAvailable(p_function, getCustomizingValue(„com.cisag.app.General”):company);
result.FUNCTION := p_function;
result.VALUE := r_isAvailable;
}
loadOrganisation
Nazwa |
loadOrganisation |
Opis |
loadOrganisation otwiera organizację poprzez jej guid lub identyfikację. |
Podpisy |
CisObject(com.cisag.app.multiorg.obj.Organisation) loadOrganisation(String code) CisObject(com.cisag.app.multiorg.obj.Organisation) loadOrganisation(Guid guid) |
Parametry |
code jest identyfikatorem organizacji. guid to giud organizacji. |
Wynik |
Określona organizacja typu danych CisObject(com.cisag.app.multiorg.obj.Organisation). |
Źródła błędów |
Jeśli nie istnieje organizacja o określonym identyfikatorze lub identyfikatorze guid, dla obiektu CisObject zwracana jest wartość domyślna null. |
Przykłady |
loadOrganisation(„90000”) zwraca organizację o identyfikatorze 90000. loadOrganisation(getCustomizingValue(„com.cisag.app.General”):company) zwraca klienta. loadOrganisation(cast(Guid, getResultList(„SELECT o:guid FROM com.cisag.app.multiorg.obj.Organization o ORDER BY o:updateInfo.createTime ASC”, list(), 1)[0][0])) określa klienta przy założeniu, że klient jest zawsze wprowadzany jako pierwsza organizacja. |
Kontekst |
OLTP |
Uwagi |
Organizacja ma ten sam identyfikator guid, co powiązany z nią partner. Aby określić pełne właściwości organizacji, należy prześledzić relację Partner. Na przykład wyrażenie toLower(getCustomisingValue(„com.cisag.app.General”)->Company->AddressData->Country:isoCode) zwraca kraj klienta jako 2-cyfrowy kod ISO pisany małymi literami. |
Zobacz także |
loadPartner |
const OrganizationHierarchyType as valueSet(com.cisag.app.multiorg.OrganizationHierarchyType);
const Separator := „, „;
function create()
{
var p_id := parameters.CODE;
var r_types := „”;
var r_object as CisObject(com.cisag.app.multiorg.obj.Organisation);
r_object := loadOrganisation(parameters.CODE);
if (not isNull(r_object)) {
var OQL :=
„SELECT FROM com.cisag.app.multiorg.obj.OrganisationHierarchy oh ” +
„WHERE oh:organisation = ?”;
var oList := getCisObjectList(OQL, list(r_object:guid), 10);
for (oh as CisObject(com.cisag.app.multiorg.obj.OrganisationHierarchy) : oList)
r_types := r_types + Separator +
valueSetDescription(OrganisationHierarchyType, oh:type);
r_types := substring(r_types, length(Separator));
}
result.IS_NULL := isNull(r_object);
result.TYPES := r_types;
}
Funkcje dla partnerów
Funkcje dla partnerów obejmują funkcje otwierania partnerów i ich ról, a także inne dane związane z partnerami:
- getGreeting
- getPreferredCommunicationData
- getValediction
- loadCommunicationData
- loadContacts
- loadCustomer
- loadPartner
- loadPartnerAccountingData
- loadPartnerMarketingInfo
- loadResponsibleOfPartner
- loadSupplier
- loadTargetsOfPartnerRelations
- resolvePartner
- Dalsze deklaracje funkcji dla partnerów
getGreeting
Nazwa |
getGreeting |
Opis |
getGreeting zwraca spersonalizowane powitanie dla partnera. |
Podpisy |
String getGreeting(Guid person) String getGreeting(Guid person, String context) String getGreeting(Guid person, String context, String language) |
Parametry |
guid to identyfikator partnera. context to kontekst dla formuły powitania. Jeśli nie określono kontekstu, powitanie jest określane bez kontekstu. language to kod ISO języka. Jeśli język nie jest określony, używany jest bieżący język treści. Można to określić za pomocą funkcji setContentLangauge. |
Wynik |
Powitanie osobiste jest określane przy użyciu formuły powitania w aplikacji Formy grzecznościowe. Jeśli dla określonego kontekstu nie istnieje formuła powitania pasująca do zwrotu grzecznościowego i tytułu partnera, formuła powitania jest określana zgodnie ze zwrotem grzecznościowym i kontekstem. |
Źródła błędów |
Jeśli formuły powitania nie są dostępne, np. ponieważ kontekst runtime nie ma bazy danych OLTP, używana jest standardowa formuła powitania z funkcji konfiguracji Workflow Management. Standardowa formuła powitania jest również używana, jeśli u partnera nie wprowadzono żadnego powitania lub jeśli nie ma formuły powitania pasującej do powitania i kontekstu. |
Przykłady |
getGreeting(„70010”) zwraca formę grzecznościową dla partnera 70010. getGreeting(„70010”, „FORMAL”) zwraca osobiste powitanie z kontekstem FORMAL dla partnera 70010. getGreeting(„70010”, „”, „en”) zwraca osobiste powitanie bez specjalnego kontekstu dla partnera 70010 w języku angielskim. |
Kontekst |
OLTP |
Uwagi |
Jeśli odbiorca wiadomości e-mail nie jest wpisany jako użytkownik w systemie lub nie jest przypisany do partnera, funkcja getGreeting nie może być użyta do określenia osobistego powitania. |
Zobacz także |
getValediction |
function create()
{
var p_context := parameters.CONTEXT;
var p_language := parameters.CONTEXT;
var p_partner := loadPartner(parameters.PARTNER);
var r_greeting := „”;
if (not isNull(p_partner)) {
if (p_context <> „” and p_language <> „”)
r_greeting := getGreeting(p_partner:guid, p_context, p_language);
else if (p_context <> „” and p_language = „”)
r_greeting := getGreeting(p_partner:guid, p_context);
else if (p_context = „” and p_language <> „”)
r_greeting := getGreeting(p_partner:guid, „”, p_language);
inny
r_greeting := getGreeting(p_partner:guid, p_context, p_language);
}
result.GREETING := r_greeting;
}
W poniższym przykładzie powiadomienie e-mail o nowych zadaniach workflow ma zostać rozszerzone o osobiste powitanie dla operatora.
Wprowadzenie formuły grzecznościowej
Po pierwsze, należy upewnić się, że pozdrowienie jest przechowywane w partnerze dla osób, które mogą otrzymywać powiadomienia e-mail w Workflow Management. Aby użyć osobistego powitania neutralnego pod względem płci (np. dla trzeciej płci), można wprowadzić odpowiednie powitanie i zapisać je w partnerze.
Następnie wprowadzić formułę powitania w aplikacji Formy grzecznościowe. Dostępne są tam następujące symbole zastępcze (parametry) dla cząstek nazwy:
- {name}
- {givenName}
- {middleNames}
- {surname}
- {fullName}
Można użyć symbolu zastępczego {void}, aby pominąć osobiste powitanie lub zamknięcie w jednym języku, podczas gdy jest ono wyświetlane w innych językach. W funkcji konfiguracji Workflow Management symbol zastępczy odbiorcy jest również dostępny dla nazwy użytkownika odbiorcy. Jeśli użytkownik chce używać różnych powitań dla odbiorców wewnętrznych i zewnętrznych, należy zapisać konteksty w funkcji konfiguracji i wprowadzić odpowiednią formułę powitania.
Dostosowywanie szablonu wiadomości e-mail
Po wprowadzeniu danych podstawowych wymaganych dla osobistego powitania, należy wprowadzić szablon powiadomienia e-mail dla nowych zadań workflow. Standardowe szablony można wyszukiwać w tabeli łańcuchów com.cisag.sys.workflow.template.MailTemplates. (więcej informacji znajduje się w opisie funkcji setMailTemplate w dokumentacji Język skryptowy systemu: Funkcje workflow.)
Standardowy szablon dla nowych zadań workflow jest zdefiniowany we wpisie tabeli ciągów znaków ze stałą DEFAULT:
<html>
<title>New task: {$code} {$subject}</title>
<body>
<p>Witam {$odbiorca},</p>
<p>Jesteś nowym edytorem zadania <a href=”{$workitemUrl}”>{$subject}</a> w statusie "{$state}".</p>
<p>Zadanie powinno mieć priorytet "{$priority}" i zostać ukończone do {$endTime}. Aby uzyskać więcej informacji, zapoznaj się z aktywnością<a href=”{$activityUrl}”>{$code}</a> i następującym opisem zadania:</p>
<p><dir>{$description}</dir></p>
</body>
</html>
Ponieważ tabela ciągów znaków jest obiektem deweloperskim, standardowy szablon można dostosować tylko w systemie deweloperskim. W systemie produkcyjnym należy skopiować zawartość do pliku o nazwie Mailtemplate_en.html, który należy zapisać w Knowledge Store odpowiedniej bazy danych w katalogu Documents/Workflow/. Aby zdefiniować szablony w innych językach, należy zastąpić skrót de kodem ISO żądanego języka. Można tworzyć szablony w dowolnym języku i używać ich w definicjach działań, tzn. Użytkownik nie jest ograniczony do języków treści zainstalowanych w systemie.
Na koniec zamienić pierwszą linię po znaczniku <body> na
<p>{$greeting},</p>
Opcjonalnie można również dodać zamknięcie w linii przed znacznikiem końcowym </body>:
<p>{$valediction},</p>
Informacje na temat tego, jakie inne symbole zastępcze (parametry) są dostępne w szablonach wiadomości e-mail można znaleźć w dokumencie Silnik workflow.
getPreferredCommunicationData
Nazwa |
getPreferredCommunicationData |
Opis |
getPreferredCommunicationData zwraca preferowane połączenie komunikacyjne medium dla partnera. |
Podpisy |
String getPreferredCommunicationData(Guid partner, Number media) String getPreferredCommunicationData(String partner, Number media) String getPreferredCommunicationData(Guid partner, String medium) String getPreferredCommunicationData(String partner, String medium) |
Parametry |
partner to guid lub identyfikator partnera. media to numer medium komunikacyjnego przechowywanego w atrybucie media o tej samej nazwie w obiekcie biznesowym com.cisag.app.general.obj.CommunicationMethod. Użycie tego atrybutu nie jest już obsługiwane od wersji 5.1. medium to pełna nazwa techniczna medium komunikacyjnego zgodnie z atrybutem medium o tej samej nazwie. Aby określić media komunikacyjne dostępne w systemie, można na przykład wyeksportować wszystkie typy komunikacji za pośrednictwem BIS i sprawdzić atrybut medium. |
Wynik |
Funkcja zwraca preferowane połączenie komunikacyjne dla partnera. Uwzględniane są tylko połączenia określonego medium komunikacyjnego. Jeśli żadne połączenie komunikacyjne nie jest oznaczone jako preferowane dla nośnika, zwracane jest dowolne połączenie komunikacyjne dla tego nośnika. Jeśli nie istnieje żadne połączenie komunikacyjne dla kombinacji partnera i medium, zwracany jest pusty ciąg znaków. |
Źródła błędów |
Brak |
Przykłady |
getPreferredCommunicationData(„10010”, „com.cisag.app.general.CommunicationMediumEMail”) zwraca preferowany adres e-mail partnera 10010. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
loadCommunicationData |
function create()
{
var p_partner := parameters.PARTNER;
var p_methodString := parameters.METHOD_STRING;
var p_methodNumber := parameters.METHOD_NUMBER;
var r_communicationData as String;
if (parameters.METHOD_NUMBER <> 0)
r_communicationData := getPreferredCommunicationData(p_partner, p_methodNumber);
if (parameters.METHOD_STRING <> „”)
r_communicationData := getPreferredCommunicationData(p_partner, p_methodString);
result.DATA := r_communicationData;
}
getValediction
Nazwa |
getValediction |
Opis |
getValediction zwraca spersonalizowaną konkluzję dla partnera. |
Podpisy |
String getValediction(Guid person) String getValediction(Guid person, String context) String getValediction(Guid person, String context, String language) |
Parametry |
guid to identyfikator partnera. context to kontekst dla wniosku. Jeśli nie określono kontekstu, wniosek jest określany bez kontekstu. language to kod ISO języka. Jeśli język nie jest określony, używany jest bieżący język treści. Można to określić za pomocą funkcji setContentLangauge. |
Wynik |
Osobiste zamknięcie jest określane przy użyciu formuły zamknięcia w aplikacji Formy grzecznościowe. Jeśli nie ma formy grzecznościowej dla określonego kontekstu, która pasowałaby do zwrotu grzecznościowego i tytułu partnera, formuła powitania jest określana zgodnie ze zwrotem grzecznościowym i kontekstem. |
Źródła błędów |
Jeśli formuły powitania nie są dostępne, np. ponieważ kontekst runtime nie ma bazy danych OLTP, używana jest standardowa formuła zamknięcia z funkcji konfiguracji Workflow Management. Standardowa formuła zamknięcia jest również używana, jeśli w partnerze nie wprowadzono powitania lub jeśli nie ma formuły powitania pasującej do powitania i kontekstu. |
Przykłady |
getValediction(„70010”) zwraca osobistą konkluzję dla partnera 70010. getValediction(„70010”, „FORMAL”) zwraca spersonalizowany wniosek z kontekstem FORMAL dla partnera 70010. getValediction(„70010”, „”, „en”) zwraca osobisty wniosek bez żadnego specjalnego kontekstu dla partnera 70010 w języku angielskim. |
Kontekst |
OLTP |
Uwagi |
Jeśli odbiorca wiadomości e-mail nie jest zdefiniowany jako użytkownik w systemie lub nie jest przypisany do partnera, funkcja getValediction nie może być użyta do określenia osobistej konkluzji. |
Zobacz także |
getGreeting |
function create()
{
var p_context := parameters.CONTEXT;
var p_language := parameters.CONTEXT;
var p_partner := loadPartner(parameters.PARTNER);
var r_valediction := „”;
if (not isNull(p_partner)) {
if (p_context <> „” and p_language <> „”)
r_valediction := getValediction(p_partner:guid, p_context, p_language);
else if (p_context <> „” and p_language = „”)
r_valediction := getValediction(p_partner:guid, p_context);
else if (p_context = „” and p_language <> „”)
r_valediction := getValediction(p_partner:guid, „”, p_language);
inny
r_valediction := getValediction(p_partner:guid, p_context, p_language);
}
result.VALEDICTION := r_valediction;
}
loadCommunicationData
Nazwa |
loadCommunicationData |
Opis |
loadCommunicationData zwraca połączenia komunikacyjne typu komunikacyjnego dla partnera jako listę wpisanych obiektów CisObjects. |
Podpisy |
CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(String partner, String method) CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(String partner, Guid method) CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(Guid partner, String method) CisObject(com.cisag.app.general.obj.CommunicationData)[] loadCommunicationData(Guid partner, Guid method) |
Parametry |
partner to guid lub identyfikator partnera. method jest identyfikatorem typu komunikacji. Dostępne typy komunikacji można sprawdzić w aplikacji Sposoby komunikacji. |
Wynik |
Funkcja określa połączenia komunikacyjne partnera partner poprzez jego identyfikator guid lub identyfikator i zwraca je jako listę wpisanych obiektów CisObjects. Uwzględniane są tylko połączenia określonego typu komunikacji method. Jeśli połączenie komunikacyjne jest oznaczone jako preferowane, jest ono przesyłane jako pierwszy element na liście. |
Źródła błędów |
Jeśli nie ma danych komunikacyjnych dla typu komunikacji dla partnera, zwracana jest wartość null. |
Przykłady |
loadCommunicationData(„70010”, „300”) zwraca dane komunikacyjne partnera 70010 dla sposobu komunikacji 300. |
Kontekst |
OLTP |
Uwagi |
Jeśli żadne połączenie komunikacyjne nie jest oznaczone jako preferowane, wówczas jedno z niepreferowanych połączeń komunikacyjnych jest przekazywane jako pierwszy element listy. |
Zobacz także |
getPreferredCommunicationData |
function create()
{
var p_partner := parameters.PARTNER;
var p_method := parameters.METHOD;
var r_communicationData as String[];
var r_preferred := „”;
var r_description := „”;
var communicationData := loadCommunicationData(p_partner, p_method);
if (not isNull(communicationData)) {
for (cd as CisObject(com.cisag.app.general.obj.CommunicationData) : communicationData) {
add(r_communicationData, cd:commData);
if (cd:preferred) {
r_preferred := cd:commData;
r_description := cd->Method:description;
}
}
}
result.IS_NULL := isNull(communicationData);
result.DATA := r_communicationData;
result.PREFERRED := r_preferred;
result.DESCRIPTION := r_description;
}
loadContacts
Nazwa |
loadContacts |
Opis |
loadContact zwraca ogólne osoby kontaktowe partnera jako listę wpisanych obiektów CisObjects. |
Podpisy |
CisObject(com.cisag.app.general.obj.Partner)[] loadContacts(String partner) CisObject(com.cisag.app.general.obj.Partner)[] loadContacts(Guid partner) |
Parametry |
partner to guid lub identyfikator partnera. Ogólne osoby kontaktowe można sprawdzić w podstawowych danych partnera. |
Wynik |
Funkcja określa ogólne osoby kontaktowe partnera partner za pomocą ich identyfikatora guid lub identyfikacji i zwraca je jako listę wpisanych obiektów CisObjects. Jeśli jedna z osób kontaktowych jest oznaczona jako preferowana, jest ona przekazywana jako pierwszy element listy. |
Źródła błędów |
Jeśli nie ma ogólnych osób kontaktowych dla partnera, zwracana jest wartość null. |
Przykłady |
loadContacts(„10010”) zwraca ogólne osoby kontaktowe partnera 10010. |
Kontekst |
OLTP |
Uwagi |
Jeśli żadna osoba kontaktowa nie jest oznaczona jako preferowana, wówczas jedna z niepreferowanych osób kontaktowych jest przenoszona jako pierwszy element listy. Aby określić osoby kontaktowe w dziale sprzedaży i zaopatrzenia, należy użyć funkcji loadTargetsOfPartnerRelations dla typów relacji partnerskich Kontakt Sprzedaż i Kontakt Zakup. |
Zobacz także |
loadTargetsOfPartnerRelations |
function create()
{
var p_partner := parameters.PARTNER;
var r_contacts as String[];
var r_preferred := „”;
var contacts := loadContacts(p_partner);
if (not isNull(contacts)) {
for (p as CisObject(com.cisag.app.general.obj.Partner) : contacts) {
add(r_contacts, p:number);
if (r_preferred = „”)
r_preferred := p:number;
}
}
result.IS_NULL := isNull(contacts);
result.CONTACTS := r_contacts;
result.PREFERRED := r_preferred;
}
loadCustomer
Nazwa |
loadCustomer |
Opis |
loadCustomer zwraca dane klienta partnera. |
Podpisy |
CisObject(com.cisag.app.sales.obj.Customer) loadCustomer(String partner, String organisation) CisObject(com.cisag.app.sales.obj.Customer) loadCustomer(String partner, Guid organisation) CisObjectCustomer(com.cisag.app.sales.obj.Customer) load(Guid partner, String organisation) CisObject(com.cisag.app.sales.obj.Customer) loadCustomer(Guid partner, Guid organisation) |
Parametry |
partner to identyfikator lub identyfikator guid partnera, którego dane klienta mają zostać otwarte. organisation to identyfikator guid lub identyfikator organizacji sprzedaży. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane klienta określonego partnera jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych klienta dla partnera, dla obiektu CisObject zwracana jest wartość domyślna null. Jeśli organisation nie jest organizacją sprzedaży, wystąpi błąd uruchomienia. |
Przykłady |
loadCustomer(„10010”, „90000”) zwraca dane klienta partnera 10010 dla organizacji sprzedaży 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokowania danych klienta związany z organizacją można znaleźć w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitPartner. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych klienta. Informacje o tym, czy organizacja przetwarza własne dane klientów, czy je dziedziczy, można znaleźć w dokowanym oknie Struktura organizacyjna aplikacji Partnerzy. |
Zobacz także |
loadPartner, loadPartnerAccountingData, loadPartnerMarketingInfo, loadSupplier |
function create()
{
var p_partner := parameters.PARTNER;
var p_organisation := parameters.ORGANIZATION;
var r_customer := „”;
var customer := loadCustomer(p_partner, p_organisation);
if (not isNull(customer))
r_customer := customer->Partner:number;
result.IS_NULL := isNull(customer);
result.CUSTOMER := r_customer;
}
loadPartner
Nazwa |
loadPartner |
Opis |
loadPartner zwraca partnera jako typowany CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Partner) loadPartner(String number) CisObject(com.cisag.app.general.obj.Partner) loadPartner(Guid guid) |
Parametry |
number jest identyfikatorem partnera. guid to identyfikator guid partnera. |
Wynik |
Funkcja zwraca aktualnie obowiązującego partnera jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli nie ma partnera o identyfikatorze number lub identyfikatorze guid, dla obiektu CisObject zwracana jest wartość domyślna null. |
Przykłady |
loadPartner(„10010”) zwraca partnera 10010. |
Kontekst |
OLTP |
Uwagi |
Niezaktualizowane wersje partnera można otworzyć za pomocą funkcji getCisObjectList, na przykład określając czas ważności. |
Zobacz także |
loadCustomer, loadOrganisation, loadPartnerAccountingData, loadPartnerMarketingInfo, loadSupplier |
function create()
{
var p_partner := parameters.PARTNER;
var r_searchString := „”;
var partner := loadPartner(p_partner);
if (not isNull(partner))
r_searchString := partner:searchString;
result.IS_NULL := isNull(partner);
result.SEARCH_STRING := r_searchString;
}
loadPartnerAccountingData
Nazwa |
loadPartnerAccountingData |
Opis |
loadPartnerAccountingData zwraca dane księgowe partnera. |
Podpisy |
CisObject(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(String partner, String organisation) CisObject(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(String partner, Guid organisation) CisObjectCustomer(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(Guid partner, String organisation) CisObject(com.cisag.app.financials.obj.PartnerAccountingData) loadPartnerAccountingData(Guid partner, Guid organisation) |
Parametry |
partner to identyfikator lub guid partnera, którego dane faktury mają zostać otwarte. organisation to identyfikator lub identyfikator guid organizacji. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane faktury określonego partnera jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada żadnych danych faktury dla partnera, zwracana jest domyślna wartość null dla obiektu CisObject. Jeśli organisation nie jest firmą, wystąpi błąd wykonania. |
Przykłady |
loadPartnerAccountingData(„10010”, „90000”) zwraca dane księgowe partnera 10010 dla firmy 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokady danych partnera rozliczeniowego związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitPartner. |
Zobacz także |
loadCustomer, loadPartner, loadPartnerMarketingInfo, loadSupplier |
function create()
{
var p_partner := parameters.PARTNER;
var p_organisation := parameters.ORGANIZATION;
var r_accountingData := „”;
var accountingData := loadPartnerAccountingData(p_partner, p_organisation);
if (not isNull(accountingData))
r_accountingData := accountingData->Partner:number;
result.IS_NULL := isNull(accountingData);
result.ACCOUNTING_DATA := r_accountingData;
}
loadPartnerMarketingInfo
Nazwa |
loadPartnerMarketingInfo |
Opis |
loadPartnerMarketingInfo zwraca dane marketingowe partnera. |
Podpisy |
CisObject(com.cisag.app.sales.obj.Customer) loadPartnerMarketingInfo(String partner, String organisation) CisObject(com.cisag.app.sales.obj.Customer) loadPartnerMarketingInfo(String partner, Guid organisation) CisObjectCustomer(com.cisag.app.sales.obj.Customer) load(Guid partner, String organisation) CisObject(com.cisag.app.sales.obj.Customer) loadPartnerMarketingInfo(Guid partner, Guid organisation) |
Parametry |
partner to identyfikator lub identyfikator guid partnera, którego dane marketingowe mają zostać otwarte. organisation to identyfikator lub identyfikator guid organizacji. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane marketingowe określonego partnera jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych marketingowych dla partnera, dla obiektu CisObject zwracana jest wartość domyślna null. Jeśli organisation nie jest organizacją, wystąpi błąd uruchomienia. |
Przykłady |
loadPartnerMarketingInfo(„10010”, „90000”) zwraca dane marketingowe partnera 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokady danych marketingowych związany z organizacją można znaleźć w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitPartner. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych marketingowych. Można dowiedzieć się, czy organizacja przetwarza własne dane marketingowe, czy je dziedziczy w dokowanym oknie Struktura organizacyjna aplikacji Partnerzy. |
Zobacz także |
loadPartner, loadPartnerAccountingData, loadCustomer, loadSupplier |
function create()
{
var p_partner := parameters.PARTNER;
var p_organisation := parameters.ORGANIZATION;
var r_marketingInfo := „”;
var marketingInfo := loadPartnerMarketingInfo(p_partner, p_organisation);
if (not isNull(marketingInfo))
r_marketingInfo := marketingInfo>Partner:number;
result.IS_NULL := isNull(marketingInfo);
result.MARKETING_INFO := r_marketingInfo;
}
loadResponsibleOfPartner
Nazwa |
loadResponsibleOfPartner |
Opis |
loadResponsibleOfPartner zwraca odpowiedzialnego pracownika partnera. |
Podpisy |
CisObject(com.cisag.app.general.obj.Partner) loadResponsibleOfPartner(String partner) CisObject(com.cisag.app.general.obj.Partner) loadResponsibleOfPartner(Guid partner) |
Parametry |
partner to identyfikator lub identyfikator guid partnera, którego odpowiedzialny pracownik ma zostać otwarty. |
Wynik |
Funkcja zwraca partnera jako wpisany obiekt CisObject, który jest przypisany do partnera partner jako odpowiedzialnego pracownika. |
Źródła błędów |
Jeśli partner nie istnieje lub żaden odpowiedzialny pracownik nie jest przypisany do partnera, zwracana jest domyślna wartość null dla obiektu CisObject. |
Przykłady |
loadResponsibleOfPartner(„10010”) zwraca partnera, który jest przypisany do partnera 10010 jako odpowiedzialny pracownik. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
loadTargetsOfPartnerRelations |
function create()
{
var p_partner := parameters.PARTNER;
var r_responsible := „”;
var responsible := loadResponsibleOfPartner(p_partner);
if (not isNull(responsible))
r_responsible := responsible:number;
result.IS_NULL := isNull(responsible);
result.RESPONSIBLE := r_responsible;
}
loadSupplier
Nazwa |
loadSupplier |
Opis |
loadSupplier zwraca dane dostawcy partnera. |
Podpisy |
CisObject(com.cisag.app.purchasing.obj.Supplier) loadSupplier(String partner, String organisation) CisObject(com.cisag.app.purchasing.obj.Supplier) loadSupplier(String partner, Guid organisation) CisObjectSupplier(com.cisag.app.purchasing.obj.Supplier) loadSupplier(Guid partner, String organisation) CisObject(com.cisag.app.purchasing.obj.Supplier) loadSupplier(Guid partner, Guid organisation) |
Parametry |
partner to identyfikator lub identyfikator guid partnera, którego dane dostawcy mają zostać otwarte. organisation oznacza identyfikator lub identyfikator guid organizacji zakupowej. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane dostawcy określonego partnera jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych dostawcy dla partnera, dla obiektu CisObject zwracana jest wartość domyślna null. Jeśli organisation nie jest organizacją zakupową, wystąpi błąd uruchomienia. |
Przykłady |
loadSupplier(„10010”, „90000”) zwraca dane dostawcy partnera 10010 dla organizacji zakupowej 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokowania danych dostawcy związany z organizacją można znaleźć w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitPartner. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych dostawcy. Informacje o tym, czy organizacja przetwarza własne dane dostawcy, czy je dziedziczy, można znaleźć w dokowanym oknie Struktura organizacyjna aplikacji Partnerzy. |
Zobacz także |
loadCustomer, loadPartner, loadPartnerAccountingData, loadPartnerMarketingInfo |
function create()
{
var p_partner := parameters.PARTNER;
var p_organisation := parameters.ORGANIZATION;
var r_supplier := „”;
var supplier := loadSupplier(p_partner, p_organisation);
if (not isNull(supplier))
r_supplier := dostawca->partner:numer;
result.IS_NULL := isNull(dostawca);
result.SUPPLIER := r_supplier;
}
loadTargetsOfPartnerRelations
Nazwa |
loadTargetsOfPartnerRelations |
Opis |
help.loadTargetsOfPartnerRelations zwraca partnerów docelowych powiązania partnera dla partnera źródłowego. |
Podpisy |
CisObject(com.cisag.app.general.obj.Partner)[] loadTargetsOfPartnerRelations(Guid partner, Guid organisation, String type) CisObject(com.cisag.app.general.obj.Partner)[] loadTargetsOfPartnerRelations(String partner, String organisation, String type) |
Parametry |
partner to identyfikator lub identyfikator guid partnera źródłowego. organisation to identyfikator lub identyfikator guid organizacji, w której kontekście zdefiniowane jest powiązanie partnera. type jest identyfikatorem typu powiązania partnera. Dostępne typy relacji można sprawdzić w aplikacji Rodzaje powiązań między partnerami. |
Wynik |
Funkcja zwraca wszystkich partnerów, którzy są powiązani z partnerem źródłowym partner w kontekście organizacji organisation jako partnera docelowego poprzez powiązanie partnera typu type jako typowaną listę. Jeśli relacja partnerska jest oznaczona jako preferowana, jej partner docelowy jest przenoszony jako pierwszy element na liście. |
Źródła błędów |
Jeśli nie istnieje powiązanie partnera z określonymi danymi, zwracana jest pusta lista. Jeśli nie istnieje typ powiązania o nazwie type, zwracana jest wartość null. |
Przykłady |
loadTargetsOfPartnerRelations(„10010”, „00000”, „Responsible”)[0] zwraca odpowiedzialnego pracownika partnera 10010. loadTargetsOfPartnerRelations(„10010”, „90000”, „Contact sales”) zwraca osoby kontaktowe ds. sprzedaży partnera 10010 w kontekście organizacji sprzedaży 90000. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
loadResponsibleOfPartner, substitute, superior |
function create()
{
var p_sourcePartner := parameters.SOURCE_PARTNER;
var p_organisation := parameters.ORGANIZATION;
var p_relation := parameters.RELATION;
var r_targetPartners := „”;
var targetPartners :=
loadTargetsOfPartnerRelations(p_sourcePartner, p_organisation, p_relation);
if (not isNull(targetPartners))
for (p as CisObject(com.cisag.app.general.obj.Partner) : targetPartners)
r_targetPartners := r_targetPartners + ” ” + p:number;
result.IS_NULL := isNull(r_targetPartners);
result.TARGET_PARTNERS := substring(r_targetPartners, 1);
}
W poniższym przykładzie należy utworzyć definicję procesu, za pomocą której użytkownik może wysłać wiadomość e-mail do dowolnej osoby kontaktowej klienta zamówienia sprzedaży. Proces powinien być uruchamiany za pomocą menu kontekstowego zamówienia sprzedaży i oferować użytkownikowi wszystkie dozwolone osoby kontaktowe z adresem e-mail w polu wyboru.
Najpierw należy utworzyć definicję procesu z węzłem akcji typu Interaktywny węzeł e-mail.
Definicja zdarzenia
Następnie wprowadź zdarzenie Zdarzenie użytkownika dla obiektu biznesowego com.cisag.app.sales.obj.SalesOrder w węźle startowym. Można użyć warunku przejścia, aby określić warunki, w których zdarzenie jest aktywowane w menu kontekstowym zamówienia sprzedaży. Aby zaoferować akcję tylko dla zamówień sprzedaży o statusie W opracowaniu i Zwolnione, należy wprowadzić następujący warunek przejścia:
parameters.object:status = 1 lub parameters.object:status = 2
Aby zaoferować promocję tylko pracownikowi odpowiedzialnemu za zamówienie sprzedaży, należy wprowadzić następujący warunek przejścia:
parameters.userGuid = parameters.object:responsible
Aby zapobiec zwracaniu przez wyrażenie wartości null, jeśli żaden odpowiedzialny pracownik nie jest zapisany w zamówieniu sprzedaży, można użyć pierwszej funkcji i porównać ją ze stałą ZERO_GUID, jeśli odpowiedzialny ma wartość null:
parameters.userGuid = cast(Guid, first(parameters.object:responsible, ZERO_GUID))
Jeśli zamiast tego użytkownik porówna z parameters.userGuid, funkcja będzie dostępna dla każdego użytkownika, gdy tylko żaden odpowiedzialny pracownik nie zostanie wprowadzony do zamówienia sprzedaży. W przeciwnym razie funkcja jest dostępna tylko dla odpowiedzialnego pracownika:
parameters.userGuid = cast(Guid, first(parameters.object:responsible, parameters.userGuid))
Wyniki działalności
Aby zaoferować możliwe osoby kontaktowe w polu wyboru podczas uruchamiania procesu, należy wprowadzić pole wyników RECIPIENTS typu pola Dynamic multiple selection field w definicji działania dla węzła początkowego.
W funkcji applyDefaults należy zainicjować pole RECIPIENTS z adresami e-mail klienta (klienta) i jego ogólnych osób kontaktowych, a także osób kontaktowych w dziale sprzedaży, jak opisano poniżej.
const State as valueSet(com.cisag.sys.workflow.ActivityState);
const EmailMethod := „300”; /* zgodnie z aplikacją „Metody komunikacji” */
function create()
{
/* zapisanie informacji o zdarzeniu do przetworzenia */
process.order := parameters.object;
process.orderText := parameters.object->Type:code + „-” + parameters.object:number;
process.customer := parameters.object->CustomerData->CustomerPartner;
}
function applyDefaults()
{
/* ocena informacji o zdarzeniu */
var order := parameters.object;
var company := loadOrganisation(getCustomizingValue(„com.cisag.app.General”):company);
var customer := parameters.object->CustomerData->CustomerPartner;
var invoicingOrganisation := parameters.object->InvoicingPartyData->Organisation;
/* inicjalizacja dynamicznego pola wielokrotnego wyboru z kontaktami klienta i sprzedaży */
var contactList as CisObject(com.cisag.app.general.obj.Partner)[];
add(contactList, order->CustomerData->CustomerPartner);
contactList := loadTargetsOfPartnerRelations(customer:guid, company:guid, „Contact”);
contactList := union(contactList, loadTargetsOfPartnerRelations(customer:guid, invoicingOrganisation:guid, „Contact sales”));
/* pobierz adresy e-mail wszystkich kontaktów */
var communicationData as CisObject(com.cisag.app.general.obj.CommunicationData)[];
var selectionValues := new(HashMap);
for (p : contactList) {
communicationData := loadCommunicationData(p:guid, EmailMethod);
for (email : communicationData) {
selectionValues[email:commData] := email:commData + ” (” + p:searchString + „)”;
}
}
/* formatowanie i inicjalizacja dynamicznego pola wielokrotnego wyboru */
formatSelectionField(„RECIPIENTS”, selectionValues);
}
function validate(state as Number)
{
if (state = State.DONE) {
if (size(results.RECIPIENTS) = 0)
sendMessage(results.RECIPIENTS_id, „WARNING_MSG”, list());
} else {
}
}
function close(state as Number)
{
/* zapisanie danych wprowadzonych przez użytkownika do przetworzenia */
process.recipients := results.RECIPIENTS;
}
Należy pamiętać, że nie można zapytać o zmienne procesu w funkcji applyDefaults, ponieważ applyDefaults jest wywoływana przed funkcją create w węźle startowym procesu ręcznego.
Zmienne procesowe
Zmienne procesowe używane w definicji procesu są wprowadzane z następującymi typami danych:
- customer as CisObject(com.cisag.app.general.obj.Partner)
- order as CisObject(com.cisag.app.sales.obj.SalesOrder)
- orderText as String
- odbiorcy jako String
Linki
W zdarzeniu Działanie użytkownika jednostka biznesowa jest automatycznie powiązana z węzłem początkowym, a tym samym z procesem. W związku z tym nie trzeba wykonywać funkcji addAttachment(parameters.object), aby później znaleźć proces za pomocą akcji Query processes w menu kontekstowym zamówienia sprzedaży.
Przetwarzanie
W węźle akcji typu Interaktywny węzeł e-mail należy wprowadzić odbiorców zgodnie z process.recipients.
const State as valueSet(com.cisag.sys.workflow.ActivityState);
const Separator := „, „;
function create()
{
/* format aktywności */
formatSubject(„orderText”, process.orderText);
formatSubject(„date”, format(process.order:date, „yyyy-MM-dd”));
/* ustaw opcje poczty */
var mailRecipientsTo := „”;
for (recipient : process.recipients)
mailRecipientsTo := mailRecipientsTo + Separator + recipient;
mailRecipientsTo := substring(mailRecipientsTo, length(Separator));
setMailRecipientsTo(mailRecipientsTo);
/* ustawia replyTo na adres e-mail inicjatora */
var mailReplyTo := cast(String, getResultList(„CONFIGURATION”,
„SELECT u:emailAddress FROM com.cisag.sys.configuration.obj.User u ” +
„WHERE u:guid = ?”, list(userGuid(process.Initiator)), 1)[0][0]);
setMailReplyTo(mailReplyTo);
}
Aby natychmiast otworzyć działanie dla węzła akcji, należy wybrać tryb automatycznego otwarcia następnego działania dla trybu ciągłego przetwarzania w definicji działania dla węzła startowego. Należy wskazać wyzwalacz jako procesor w węźle akcji.
Jeśli wyzwalacz zakończy działanie typu Interaktywny węzeł e-mail, wiadomość e-mail zostanie wysłana do odbiorcy (odbiorców). Jeśli działanie zostanie zakończone bez przetwarzania, wiadomość e-mail nie zostanie wysłana.
Wysłana wiadomość e-mail może zostać sprawdzona w dowolnym momencie za pośrednictwem zakończonego działania. Działanie nie jest jednak kompletnym dowodem wysłania lub dostarczenia. Informacje te są zazwyczaj dostępne tylko za pośrednictwem używanego serwera pocztowego.
Korzystanie z modułów tekstowych
Proces ten można rozszerzyć o znormalizowane moduły tekstowe, które są zintegrowane z definicją działania za pomocą zapytania OQL. Na przykład węzeł początkowy może również oferować użytkownikowi pole wyboru tematu. Dla każdego tematu tworzony jest oddzielny moduł tekstowy. Używając konwencji nazewnictwa, węzeł startowy inicjalizuje dynamiczne pole wyboru ze wszystkimi modułami tekstowymi, które zaczynają się na przykład od SO_ lub innego prefiksu. Moduły tekstowe mogą również zawierać szereg predefiniowanych parametrów, które są wypełniane określonymi wartościami z zamówienia sprzedaży lub partnera za pomocą funkcji formatu.
Dzięki takiemu rozwiązaniu możliwe byłoby tworzenie nowych, gotowych szablonów wiadomości e-mail dla niemal każdego tematu bez konieczności dostosowywania definicji workflow.
Aplikacja Stanowiska służy do wprowadzania lub edytowania zadań. Stanowisko to zarówno przypisanie czynności zawodowej (funkcji) do jednego lub większej liczby pracowników, jak i klasyfikacja w strukturze firmy (strukturze organizacyjnej). W strukturze organizacyjnej stanowiska opisują poszczególne funkcjonalne miejsca pracy i ich wzajemne relacje.
Aplikacja Partnerzy oferuje również możliwość mapowania struktury organizacyjnej. Korzystając z własnych rodzajów relacji między partnerami, można indywidualnie dostosować strukturę organizacyjną do swojej organizacji. Na przykład można wprowadzić typy relacji partnerskich Przełożony, Podwładny i Zastępca, aby zmapować mniej więcej te same funkcje, co zadania wykorzystujące relacje partnerskie i używać ich w Workflow Management.
Gdy wyrażenie superior(parameters.userGuid) określa przełożonych użytkownika za pomocą relacji stanowisk, poniższe wyrażenie określi partnerów przełożonych za pomocą relacji partnerskich rodzaju Przełożony w kontekście organizacji 90000:
loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, „90000”, „Superior”)
Aby określić użytkowników powiązanych z partnerami przełożonych w przypadku przekroczenia limitu czasu, każdy partner musi zostać podzielony na użytkowników:
var superiorUsers as Guid[];
var superiors as loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, „90000”, „Superior”);
for (p : superiors)
add(superiorUsers, resolvePartner(p:guid));
Jeśli relacje partnerów są uszeregowane, preferowany partner może zostać wybrany za pomocą pojedynczego wyrażenia:
resolvePartner(loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, „90000”, „Superior”)[0]:guid)
Jeśli rodzaje relacji partnerskich Przełożony i Podwładny są relacjami dwukierunkowymi, wówczas poniższe wyrażenie określi wszystkich podległych pracowników użytkownika:
loadTargetsOfPartnerRelations(getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner, „90000”, „Superior”)
Jeśli w funkcji konfiguracji Regulacje dot. delegowań nie zdefiniowano pochodzenia dla wartości domyślnych zastępców, zastępcy muszą być wprowadzani indywidualnie w aplikacji Nieobecności. Można użyć funkcji getCisObjectList, aby sprawdzić wprowadzone tam zastępstwa i użyć ich jako nowych operatorów, na przykład w przypadku przekroczenia limitu czasu.
Poniższa definicja działania typu wywołanie funkcji określa wszystkie zastępstwa użytkownika bez uwzględniania okresu ważności lub statusu nieobecności użytkownika:
function create()
{
var p_user := parameters.USER;
var r_substitutes := „”;
var subs := getCisObjectList(„REPOSITORY”, „SELECT FROM com.cisag.sys.workflow.obj.Substitute o WHERE o:userGuid = ?”, list(userGuid(p_user)), 99);
for (u as CisObject(com.cisag.sys.workflow.obj.Substitute) : subs)
r_substitutes := r_substitutes + „, ” + userName(u:substituteGuid);
result.SUBSTITUTES := substring(r_substitutes, 2);
}
resolvePartner
Nazwa |
resolvePartner |
Opis |
resolvePartner zwraca listę z identyfikatorami wszystkich użytkowników przypisanych do partnera. |
Podpisy |
Guid[] resolvePartner(Guid partner) |
Parametry |
partner to identyfikator guid partnera, którego przypisani użytkownicy mają zostać określeni. |
Wynik |
Funkcja zwraca listę identyfikatorów wszystkich użytkowników powiązanych z partnerem. |
Źródła błędów |
Jeśli użytkownik nie jest przypisany do partnera w bieżącym kontekście wykonawczym, zwracana jest pusta lista. |
Przykłady |
Funkcji resolvePartner można użyć w definicji działania, na przykład w celu zdefiniowania pracownika odpowiedzialnego za partnera lub dokument jako operatora działania. resolvePartner(„70010”) zwraca listę z identyfikatorami wszystkich użytkowników przypisanych do partnera 70010. resolvePartner(loadResponsibleOfPartner(parameters.object:guid):guid) określa wszystkich użytkowników, którzy są przypisani do odpowiedzialnego pracownika partnera, do którego odwołuje się parameters.object. Jeśli żaden odpowiedzialny pracownik nie jest przypisany do partnera, wówczas loadResponsibleOfPartner, a zatem również resolvePartner zwraca wartość null. resolvePartner(parameters.object->Responsible:guid) określa wszystkich użytkowników, którzy są przypisani do odpowiedzialnego pracownika dokumentu, do którego odwołuje się parameters.object. minus(resolvePartner(getByPrimaryKey(CisObject( com.cisag.app.general.obj.UserAssignment), parameters.userGuid):partner), list(parameters.userGuid)) określa tych użytkowników, którzy są przypisani do tego samego partnera co użytkownik, który wywołał zdarzenie typu Jednostka biznesowa. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
resolveRole (więcej informacji znajduje się w dokumentacji Język skryptowy systemu: Funkcje podstawowe), resolveJobTitle |
function create()
{
var p_partner := parameters.PARTNER;
var r_users := „”;
var partner := loadPartner(p_partner);
if (not isNull(partner)) {
var users := resolvePartner(partner:guid);
for (u as Guid : users)
r_users := r_users + ” ” + userName(u);
}
result.USERS := substring(r_users, 1);
}
Dalsze deklaracje funkcji dla partnerów
Niniejszy rozdział sugeruje dalsze deklaracje funkcji dla partnerów, które można wprowadzić i używać w systemie. Deklaracje funkcji nie są gwarantowane i mają przede wszystkim pomóc w nauce języka skryptowego systemu.
loadPartnerOfUser
Nazwa |
loadPartnerOfUser |
Opis |
loadPartnerOfUser zwraca partnera powiązanego z użytkownikiem. |
Podpisy |
CisObject(com.cisag.app.general.obj.Partner) loadPartnerOfUser(Guid user) |
Parametry |
user to identyfikator użytkownika, którego partner ma zostać otwarty. |
Wynik |
Funkcja zwraca partnera powiązanego z użytkownikiem jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli użytkownik nie jest przypisany do partnera w bieżącym kontekście wykonawczym, zwracana jest domyślna wartość null dla obiektu CisObject. |
Przykłady |
loadPartnerOfUser(userGuid(„ADMINISTRATOR”)) zwraca partnera, do którego przypisany jest użytkownik ADMINISTRATOR. loadPartnerOfUser(parameters.userGuid) zwraca partnera, do którego przypisany jest użytkownik, który wywołał zdarzenie typu Jednostka biznesowa. |
Kontekst |
OLTP |
Uwagi |
Partner użytkownika, do którego odnosi się parameters.userGuid, może być również określony za pomocą następującego wyrażenia: getByPrimaryKey(CisObject(com.cisag.app.general.obj.UserAssignment), parameters.userGuid) |
Zobacz także |
resolvePartner |
function create()
{
var p_user := parameters.USER;
var r_partner := „”;
var partnerOfUser as CisObject(com.cisag.app.general.obj.Partner);
var user := userGuid(p_user);
if (not user = INVALID_GUID) {
partnerOfUser := loadPartnerOfUser(user);
if (not isNull(partnerOfUser))
r_partner := partnerOfUser:number;
}
result.IS_NULL := isNull(partnerOfUser);
result.PARTNER := r_partner;
}
function loadPartnerOfUser(user as Guid) as CisObject(com.cisag.app.general.obj.Partner)
{
back
getByPrimaryKey(
CisObject(com.cisag.app.general.obj.UserAssignment),
user)->Partner;
}
Funkcje dla artykułów (Funkcje artykułów)
Funkcje artykułów obejmują funkcje otwierania artykułu i jego użycia:
- loadInventoryItem
- loadIteme
- loadItemAccountingData
- loadItemPlanningData
- loadProductionItem
- loadPurchaseItem
- loadSalesItem
loadInventoryItem
Nazwa |
loadInventoryItem |
Opis |
loadInventoryItem zwraca dane logistyczne magazynu artykułu jako typowy obiekt CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadInventoryItem(String item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadInventoryItem(String item, Guid organisation) CisObject(com.cisag.app.general.obj.Item) loadInventoryItem(Guid item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadInventoryItem(Guid item, guid organisation) |
Parametry |
item to identyfikator lub identyfikator guid artykułu. organisation to identyfikator lub identyfikator guid organizacji logistyki magazynowej. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane logistyki magazynu jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych logistyki magazynowej dla pozycji, dla obiektu CisObject zwracana jest wartość domyślna null. Jeśli organisation nie jest organizacją logistyki magazynowej, wystąpi błąd uruchomienia. |
Przykłady |
loadInventoryItem(„10010”, „90000”) zwraca dane logistyczne magazynu dla artykułu 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokady danych logistyki magazynowej związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitItem. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych logistyki magazynowej. Informacje o tym, czy organizacja przetwarza własne dane logistyki magazynowej, czy je dziedziczy, można znaleźć w dokowanym oknie Struktura organizacyjna aplikacji Artykuły. Dane, które są również rejestrowane na podstawie lokalizacji przechowywania, można otworzyć za pomocą funkcji getByPrimaryKey, getByBusinessKey lub getCisObjectList. Wartości domyślne dla różnych lokalizacji przechowywania zawierają wartość ZEROGUID w atrybucie storageArea. |
Zobacz także |
loadItem, loadItemAccountingData, loadItemPlanningData, loadProductionItem, loadPurchaseItem, loadSalesItem |
function create()
{
var p_item := parameters.ITEM;
var p_organisation := parameters.ORGANIZATION;
var r_classification1 := „”;
var inventoryItem := loadInventoryItem(p_item, p_organisation);
if (not isNull(inventoryItem))
r_classification1 := cast(String, first(inventoryItem->Classification1:path, „”));
result.IS_NULL := isNull(inventoryItem);
result.CLASSIFICATION1 := r_classification1;
}
loadItem
Nazwa |
loadItem |
Opis |
loadItem zwraca artykuł jako typowany CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadItem(String number) CisObject(com.cisag.app.general.obj.Item) loadItem(Guid guid) |
Parametry |
number jest identyfikatorem artykułu. guid to identyfikator guid artykułu. |
Wynik |
Funkcja zwraca aktualnie obowiązujący artykuł jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli nie istnieje artykuł o identyfikatorze number lub identyfikatorze guid, dla obiektu CisObject zwracana jest wartość domyślna null. |
Przykłady |
loadItem(„10010”) zwraca artykuł 10010. |
Kontekst |
OLTP |
Uwagi |
Nieaktualne wersje artykułu można otworzyć za pomocą funkcji getCisObjectList, na przykład określając czas ważności. |
Zobacz także |
loadInventoryItem, loadItemAccountingData, loadItemPlanningData, loadProductionItem, loadPurchaseItem, loadSalesItem |
function create()
{
var p_item := parameters.ITEM;
var r_description := „”;
var item := loadItem(p_item);
if (not isNull(item))
r_description := item:description;
result.IS_NULL := isNull(item);
result.DESCRIPTION := r_description;
}
loadItemAccountingData
Nazwa |
loadItemAccountingData |
Opis |
loadItemAccountingData zwraca dane księgowe artykułu jako typowy obiekt CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadItemAccountingData(String item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadItemAccountingData(String item, Guid organisation) CisObject(com.cisag.app.general.obj.Item) loadItemAccountingData(Guid item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadItemAccountingData(Guid item, guid organisation) |
Parametry |
item to identyfikator lub identyfikator guid artykułu. organisation to identyfikator lub identyfikator guid firmy. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane faktury jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli firma nie posiada żadnych danych księgowych dla artykułu, zwracana jest domyślna wartość null dla obiektu CisObject. Jeśli organisation nie jest organizacją, wystąpi błąd uruchomienia. |
Przykłady |
loadItemAccountingData(„10010”, „90000”) zwraca dane księgowe dla artykułu 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokady danych faktury związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitItem. Dane, które są również rejestrowane dla określonych lokalizacji przechowywania, można otworzyć za pomocą funkcji getByPrimaryKey, getByBusinessKey lub getCisObjectList. Wartości domyślne dla różnych lokalizacji przechowywania zawierają wartość ZEROGUID w atrybucie storageArea. |
Zobacz także |
loadInventoryItem, loadItem, loadItemPlanningData, loadProductionItem, loadPurchaseItem, loadSalesItem |
function create()
{
var p_item := parameters.ITEM;
var p_organisation := parameters.ORGANIZATION;
var r_cogClassification := „”;
var itemAccountingData := loadItemAccountingData(p_item, p_organisation);
if (not isNull(itemAccountingData))
r_cogClassification := cast(String, first(itemAccountingData->CogClassification:path, „”));
result.IS_NULL := isNull(itemAccountingData);
result.COG_CLASSIFICATION := r_cogClassification;
}
loadItemPlanningData
Nazwa |
loadItemPlanningData |
Opis |
loadItemPlanningData zwraca dane planowania artykułu jako typowy obiekt CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadItemPlanningData(String item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadItemPlanningData(String item, Guid organisation) CisObject(com.cisag.app.general.obj.Item) loadItemPlanningData(Guid item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadItemPlanningData(Guid item, guid organisation) |
Parametry |
item to identyfikator lub identyfikator guid artykułu. organisation to identyfikator lub identyfikator guid organizacji logistyki magazynowej. |
Wynik |
Funkcja zwraca aktualnie prawidłowe dane dyspozycji miejsca przechowywania jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych planowania dla artykułu, zwracana jest domyślna wartość null dla obiektu CisObject. Jeśli organisation nie jest organizacją logistyki magazynowej, wystąpi błąd uruchomienia. |
Przykłady |
loadItemPlanningData(„10010”, „90000”) zwraca dane planowania dla artykułu 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokowania danych planowania związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitItem. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych planowania. Można dowiedzieć się, czy organizacja przetwarza własne dane planowania, czy je dziedziczy w dokowanym oknie Struktura organizacyjna aplikacji Artykuły. Dane planowania magazynu można otworzyć za pomocą funkcji getByPrimaryKey, getByBusinessKey lub getCisObjectList. Wartości domyślne lokalizacji magazynu zawierają wartość ZEROGUID w atrybucie storageArea. |
Zobacz także |
loadInventoryItem, loadItem, loadItemAccountingData, loadProductionItem, loadPurchaseItem, loadSalesItem |
function create()
{
var p_item := parameters.ITEM;
var p_organisation := parameters.ORGANIZATION;
var r_planner := „”;
var itemPlanningData := loadItemPlanningData(p_item, p_organisation);
if (not isNull(itemPlanningData))
r_planner := cast(String, first(itemPlanningData->Planner:number, „”));
result.IS_NULL := isNull(itemPlanningData);
result.PLANNER := r_planner;
}
loadProductionItem
Nazwa |
loadProductionItem |
Opis |
loadProductionItem zwraca dane produkcyjne artykułu jako typowy obiekt CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadProductionItem(String item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadProductionItem(String item, Guid organisation) CisObject(com.cisag.app.general.obj.Item) loadProductionItem(Guid item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadProductionItem(Guid item, guid organisation) |
Parametry |
item to identyfikator lub identyfikator guid artykułu. organisation to identyfikator lub identyfikator guid organizacji logistyki magazynowej. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane produkcyjne jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych produkcyjnych dla artykułu, zwracana jest domyślna wartość null dla obiektu CisObject. Jeśli organisation nie jest organizacją logistyki magazynowej, wystąpi błąd uruchomienia. |
Przykłady |
loadProductionItem(„10010”, „90000”) zwraca dane produkcyjne dla artykułu 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokady danych produkcyjnych związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitItem. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych produkcyjnych. Można dowiedzieć się, czy organizacja przetwarza własne dane produkcyjne, czy je dziedziczy w dokowanym oknie Struktura organizacyjna aplikacji Artykuły. |
Zobacz także |
loadInventoryItem, loadItem, loadItemAccountingData, loadItemPlanningData, loadPurchaseItem, loadSalesItem |
function create()
{
var p_item := parameters.ITEM;
var p_organisation := parameters.ORGANIZATION;
var r_defaultStorageArea := „”;
var productionItem := loadProductionItem(p_item, p_organisation);
if (not isNull(productionItem))
r_defaultStorageArea := cast(String, first(productionItem->DefaultStorageArea:code, „”));
result.IS_NULL := isNull(productionItem);
result.DEFAULT_STORAGE_AREA := r_defaultStorageArea;
}
loadPurchaseItem
Nazwa |
loadPurchaseItem |
Opis |
loadPurchaseItem zwraca dane zakupowe artykułu jako typowy obiekt CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadPurchaseItem(String item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadPurchaseItem(String item, Guid organisation) CisObject(com.cisag.app.general.obj.Item) loadPurchaseItem(Guid item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadPurchaseItem(Guid item, guid organisation) |
Parametry |
item to identyfikator lub identyfikator guid artykułu. organisation oznacza identyfikator lub identyfikator guid organizacji zakupowej. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane zakupowe jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych zakupowych dla artykułu, zwracana jest domyślna wartość null dla obiektu CisObject. Jeśli organisation nie jest organizacją zakupową, wystąpi błąd uruchomienia. |
Przykłady |
loadPurchaseItem(„10010”, „90000”) zwraca dane zakupowe dla artykułu 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokowania danych zakupowych związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitItem. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych zakupowych. Można dowiedzieć się, czy organizacja przetwarza własne dane zakupowe, czy je dziedziczy w dokowanym oknie Struktura organizacyjna aplikacji Artykuły. |
Zobacz także |
loadInventoryItem, loadItem, loadItemAccountingData, loadItemPlanningData, loadProductionItem, loadSalesItem |
function create()
{
var p_item := parameters.ITEM;
var p_organisation := parameters.ORGANIZATION;
var r_defaultStorageArea := „”;
var purchaseItem := loadPurchaseItem(p_item, p_organisation);
if (not isNull(purchaseItem))
r_defaultStorageArea := cast(String, first(purchaseItem->DefaultStorageArea:code, „”));
result.IS_NULL := isNull(purchaseItem);
result.DEFAULT_STORAGE_AREA := r_defaultStorageArea;
}
loadSalesItem
Nazwa |
loadSalesItem |
Opis |
loadSalesItem zwraca dane sprzedaży artykułu jako wpisany obiekt CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Item) loadSalesItem(String item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadSalesItem(String item, Guid organisation) CisObject(com.cisag.app.general.obj.Item) loadSalesItem(Guid item, String organisation) CisObject(com.cisag.app.general.obj.Item) loadSalesItem(Guid item, guid organisation) |
Parametry |
item to identyfikator lub identyfikator guid artykułu. organisation to identyfikator lub identyfikator guid organizacji sprzedaży. |
Wynik |
Funkcja zwraca aktualnie obowiązujące dane sprzedaży jako wpisany obiekt CisObject. |
Źródła błędów |
Jeśli organizacja nie posiada danych sprzedaży dla artykułu, zwracana jest domyślna wartość null dla obiektu CisObject. Jeśli organisation nie jest organizacją sprzedaży, wystąpi błąd uruchomienia. |
Przykłady |
loadSalesItem(„10010”, „90000”) zwraca dane sprzedaży dla artyukułu 10010 dla organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Status blokady danych sprzedaży związany z organizacją znajduje się w obiekcie biznesowym com.cisag.app.general.obj.OrganizationalUnitItem. Określa on również, która organizacja jest odpowiedzialna za przetwarzanie danych sprzedaży. Można dowiedzieć się, czy organizacja przetwarza własne dane sprzedaży, czy je dziedziczy w dokowanym oknie Struktura organizacyjna aplikacji Artykuły. |
Zobacz także |
loadInventoryItem, loadItem, loadItemAccountingData, loadItemPlanningData, loadProductionItem, loadPurchaseItem |
function create()
{
var p_item := parameters.ITEM;
var p_organisation := parameters.ORGANIZATION;
var r_defaultStorageArea := „”;
var salesItem := loadSalesItem(p_item, p_organisation);
if (not isNull(salesItem))
r_defaultStorageArea := cast(String, first(salesItem->DefaultStorageArea:code, „”));
result.IS_NULL := isNull(salesItem);
result.DEFAULT_STORAGE_AREA := r_defaultStorageArea;
}
Funkcje dla kwot i walut (Funkcje walutowe)
Funkcje dla kwot i walut obejmują loadCurrency do otwierania waluty.
loadCurrency
Nazwa |
loadCurrency |
Opis |
loadCurrency zwraca walutę jako typowany CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Currency) loadCurrency(String isoCode) CisObject(com.cisag.app.general.obj.Currency) loadCurrency(Guid guid) |
Parametry |
guid to identyfikator guid waluty. isoCode jest identyfikatorem waluty. |
Wynik |
Funkcja zwraca aktualnie obowiązującą walutę jako wpisany obiekt CisObject. |
Źródła błędów |
Brak |
Przykłady |
(loadCurrency(„EUR”) zwraca typowany CisObject dla waluty z kodem ISO EUR. loadCurrency(getCorporateCurrency(cast(Guid, getAttribute(parameters.object, „_organisation”)))):isoCode zwraca kod ISO kluczowej waluty organizacji, w której kontekście zarejestrowano obiekt biznesowy, do którego odwołuje się parameters.object. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
function create()
{
var p_isoCode := parameters.ISO_CODE;
var r_currency := loadCurrency(p_isoCode);
result.IS_NULL := isNull(r_currency);
if (not isNull(r_currency))
result.DESCRIPTION := r_currency:description;
}
Dalsze deklaracje funkcji dla kwot i walut
W tym rozdziale przedstawiono dalsze deklaracje funkcji dla kwot i walut, które można wprowadzić i używać w systemie. Deklaracje funkcji nie są gwarantowane i mają na celu przede wszystkim zapoznanie użytkownika z językiem skryptów systemowych.
- amountCorporate
- convertCurrency
- getCorporateCurrency
- getCurrency1
- getCurrency2
- getCurrency3
amountCorporate
Nazwa |
amountCorporate |
Opis |
amountCorporate zwraca kwotę w walucie wiodacej organizacji. |
Podpisy |
Number amountCorporate(Number amount1, Number amount2, Number amount3, Guid organisation) Number amountCorporate(domesticAmount CisObject( com.cisag.app.general.obj.DomesticAmount, Guid organisation) |
Parametry |
amount1 to kwota w Walucie wewnętrznej 1. amount2 to kwota w Walucie wewnętrznej 2. amount3 to kwota w Walucie wewnętrznej 3. domesticAmount to część dla waluty krajowej. organisation to identyfikator organizacji, dla której zarejestrowano kwotę w walucie wewnętrznej. |
Wynik |
Funkcja zwraca kwotę w walucie wewnętrznej domesticAmount w walucie wiodącej organizacji. Jeśli Waluta wewnętrzna 1 organisation jest walutą wiodącą, zwracana jest wartość amount1. Jeśli Waluta wewnętrzna 2 organisation jest walutą wiodącą, zwracana jest wartość amount2. Jeśli Waluta wewnętrzna 3 organisation jest walutą wiodącą, zwracana jest wartość amount3. Jeśli organisation nie jest firmą, używana jest waluta wiodąca firmy, do której przypisana jest organisation. |
Źródła błędów |
Brak |
Przykłady |
amountCorporate( parameters.object:totalValues. amountCorporate(dboDomesticAmount(„EXTPartner”, loadPartner(„10010”), „CREDIT_LIMIT_ALT”), loadOrganisation(„90000”):guid) zwraca wartość pola dodatkowego typu Kwota w walucie wewnętrznej w walucie głównej firmy 90000. |
Kontekst |
OLTP |
Uwagi |
Obiekty biznesowe z kwotą w walucie lokalnej mają atrybuty _organisation i _currencyCombo. Pierwszy atrybut odnosi się do organizacji, dla której zarejestrowano kwotę w walucie wewnętrznej. Drugi atrybut odnosi się do kombinacji walut wewnętrznych używanych przez organizację lub kwoty w walucie wewnętrznej. |
Zobacz także |
getCorporateCurrency |
function create()
{
var p_orderType := parameters.ORDER_TYPE;
var p_orderNumber := parameters.ORDER_NUMBER;
var orderType := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrderType), p_orderType);
var order := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrder), orderType:guid, p_orderNumber);
var totalGrossValueCorporate := amountCorporate(
order:totalValues.grossValueDomestic.amount1,
order:totalValues.grossValueDomestic.amount2,
order:totalValues.grossValueDomestic.amount3,
cast(Guid, getAttribute(order, „_organisation”)));
result.VALUE := totalGrossValueCorporate;
}
function amountCorporate(amount1 as Number, amount2 as Number, amount3 as Number, org as Guid) as Number
{
var amountCorporate := 0;
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, loadOrganisation(org):financialsOrganization);
if (not isNull(baseFunction)) {
if (baseFunction:corporateCurrency = 1)
amountCorporate := amount1;
if (baseFunction:corporateCurrency = 2)
amountCorporate := amount2;
if (baseFunction:corporateCurrency = 3)
amountCorporate := amount3;
}
return amountCorporate;
}
function amountCorporate2(domesticAmount as CisObject(com.cisag.app.general.obj.DomesticAmount), org as Guid) as Number
{
var amountCorporate := 0;
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, loadOrganisation(org):financialsOrganization);
if (not isNull(baseFunction)) {
if (baseFunction:corporateCurrency = 1)
amountCorporate := domesticAmount:amount1;
if (baseFunction:corporateCurrency = 2)
amountCorporate := domesticAmount:amount2;
if (baseFunction:corporateCurrency = 3)
amountCorporate := domesticAmount:amount3;
}
return amountCorporate;
}
convertCurrency
Nazwa |
convertCurrency |
Opis |
convertCurrency konwertuje kwotę na inną walutę. |
Podpisy |
Number convertCurrency(Number amount, Guid source, Guid target) Number convertCurrency(Number amount, Guid source, Guid target, Timestamp conversionDate) |
Parametry |
amount to kwota do przeliczenia. source to identyfikator guid lub identyfikacja waluty źródłowej. target to identyfikator guid lub identyfikacja waluty docelowej. |
Wynik |
Funkcja przelicza kwotę z waluty źródłowej na walutę docelową. Jeśli nie określono conversionDate, kwota jest przeliczana zgodnie z aktualnie obowiązującymi kursami wymiany. |
Źródła błędów |
Jeśli nie ma prawidłowego kursu wymiany, zwracana jest kwota 0. |
Przykłady |
convertCurrency(parameters.object:totalValues.grossValue.amount, parameters.object:totalValues.grossValue.currency, getCorporateCurrency(cast(Guid, getAttribute(parameters.object, „_organisation”)))) konwertuje całkowitą kwotę brutto zamówienia sprzedaży, do którego odwołuje się parameters.object w walucie wiodącej po aktualnie obowiązującym kursie wymiany. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
const ExchangeRateQuotation as valueSet(com.cisag.app.general.ExchangeRateQuotation);
function create()
{
var p_amount := parameters.AMOUNT;
var p_source := parameters.SOURCE;
var p_target := parameters.TARGET;
var p_conversionDate := parameters.CONVERSION_DATE;
var r_convertedAmountAt := 0;
var convertedAmountAt := convertCurrencyAt(p_amount, loadCurrency(p_source):guid, loadCurrency(p_target):guid, p_conversionDate);
if (not isNull(convertedAmountAt))
r_convertedAmountAt := convertedAmountAt;
result.IS_NULL := isNull(r_convertedAmountAt);
result.CONVERTED_AMOUNT := r_convertedAmountAt;
}
function convertCurrency(amount as Number, sourceCurrency as Guid, targetCurrency as Guid) as Number
{
var convertedAmount := 0;
var useReverseQuotation := false;
var company := cast(Guid, getCustomisingValue(„com.cisag.app.General”):company);
var exchangeRateUse := cast(Guid, getCustomisingValue(„com.cisag.app.general.Base”, company):exchangeRateUse);
var quotation := getCustomisingValue(„com.cisag.app.general.Base”, company):exchangeRateQuotation;
var factor := 1;
var exchangeRate := getByBusinessKey(CisObject(com.cisag.app.general.obj.ExchangeRate), exchangeRateUse, sourceCurrency, targetCurrency);
if (isNull(exchangeRate)) {
exchangeRate := getByBusinessKey(CisObject(com.cisag.app.general.obj.ExchangeRate), exchangeRateUse, targetCurrency, sourceCurrency);
useReverseQuotation := true;
}
if (not isNull(exchangeRate)) {
if (exchangeRate:factor = 2) factor := 10;
if (exchangeRate:factor = 3) factor := 100;
if (exchangeRate:factor = 4) factor := 1000;
if (exchangeRate:factor = 5) factor := 10000;
if ((useReverseQuotation = false and quotation = ExchangeRateQuotation.DIRECT) or
(useReverseQuotation = true and quotation = ExchangeRateQuotation.INDIRECT))
convertedAmount := (amount * factor) / exchangeRate:middleRate;
another
convertedAmount := (amount * exchangeRate:middleRate) / factor;
}
return convertedAmount;
}
function convertCurrencyAt(amount as Number, sourceCurrency as Guid, targetCurrency as Guid, conversionDate as Timestamp) as Number
{
var convertedAmount := 0;
var useReverseQuotation := false;
var company := cast(Guid, getCustomisingValue(„com.cisag.app.General”):company);
var exchangeRateUse := cast(Guid, getCustomisingValue(„com.cisag.app.general.Base”, company):exchangeRateUse);
var quotation := getCustomisingValue(„com.cisag.app.general.Base”, company):exchangeRateQuotation;
var factor := 1;
var OQL :=
„SELECT FROM com.cisag.app.general.obj.ExchangeRate o ” +
„WHERE o:exchangeRateUse = ? AND o:sourceCurrency = ? AND o:targetCurrency = ? ” +
” AND o:validFrom <= toTimeStamp(„” + timeZoneId(today()) + „”, ” +
format(year(conversionDate)) + „, ” + format(month(conversionDate)) + „, ” + format(day(conversionDate)) + „, ” + „.
format(hour(conversionDate)) + „, ” + format(minute(conversionDate)) + „, ” + format(second(conversionDate)) + „, ” + „, ” + „.
format(millisecond(conversionDate)) + „) ” +
” AND o:validUntil > toTimeStamp(„” + timeZoneId(today()) + „”, ” +
format(year(conversionDate)) + „, ” + format(month(conversionDate)) + „, ” + format(day(conversionDate)) + „, ” + „.
format(hour(conversionDate)) + „, ” + format(minute(conversionDate)) + „, ” + format(second(conversionDate)) + „, ” + „, ” + „.
format(millisecond(conversionDate)) + „)”;
var oList := getCisObjectList(„OLTP”, OQL, list(exchangeRateUse, sourceCurrency, targetCurrency), 1);
if (size(oList) = 0) {
oList := getCisObjectList(„OLTP”, OQL, list(exchangeRateUse, targetCurrency, sourceCurrency), 1);
useReverseQuotation := true;
}
for (exchangeRate as CisObject(com.cisag.app.general.obj.ExchangeRate) : oList) {
if (exchangeRate:factor = 2) factor := 10;
if (exchangeRate:factor = 3) factor := 100;
if (exchangeRate:factor = 4) factor := 1000;
if (exchangeRate:factor = 5) factor := 10000;
if ((useReverseQuotation = false and quotation = ExchangeRateQuotation.DIRECT) or
(useReverseQuotation = true and quotation = ExchangeRateQuotation.INDIRECT))
convertedAmount := (amount * factor) / exchangeRate:middleRate;
other
convertedAmount := (amount * exchangeRate:middleRate) / factor;
}
return convertedAmount;
}
getCorporateCurrency
Nazwa |
getCorporateCurrency |
Opis |
getCorporateCurrency zwraca identyfikator waluty wiodącej organizacji. |
Podpisy |
Guid getCorporateCurrency(Guid organisation) |
Parametry |
organisation to identyfikator organizacji, dla której ma zostać określona waluta wiodąca. |
Wynik |
Funkcja zwraca identyfikator waluty wiodącej organizacji organisation. Jeśli organisation nie jest firmą, zwracana jest waluta wiodąca firmy, do której przypisana jest organisation. |
Źródła błędów |
Brak |
Przykłady |
loadCurrency(getCorporateCurrency(cast(Guid, getAttribute(parameters.object, „_organisation”)))):isoCode zwraca kod ISO waluty wiodącej organizacji, w której kontekście zarejestrowano obiekt biznesowy, do którego odwołuje się parameters.object. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
amountCorporate |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var r_corporateCurrency := getCorporateCurrency(loadOrganisation(p_organisation):guid);
result.PRIMARY_CURRENCY := loadCurrency(r_corporateCurrency):isoCode;
}
function getCorporateCurrency(org as Guid) as Guid
{
var corporateCurrency as Guid;
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, loadOrganisation(org):financialsOrganization);
if (not isNull(baseFunction)) {
corporateCurrency := baseFunction:corporateCurrencyGuid;
}
return corporateCurrency;
}
getCurrency1
Nazwa |
getCurrency1 |
Opis |
getCurrency1 zwraca guid dla Waluty wewnętrznej 1 klienta. |
Podpisy |
Guid getCurrency1() |
Parametry |
Brak |
Wynik |
Funkcja zwraca identyfikator guid dla Waluty wewnętrznej 1 klienta. |
Źródła błędów |
Brak |
Przykłady |
loadCurrency(getCurrency1()):isoCode zwraca kod ISO Waluty wewnętrznej 1 klienta. |
Kontekst |
OLTP |
Uwagi |
Dla firmy można zdefiniować maksymalnie 3 waluty wewnętrzne. Waluty wewnętrzne 2 i 3 są specyficzne dla organizacji. Z drugiej strony Waluta wewnętrzna 1 jest ustandaryzowana dla całego klienta, tj. wszystkie firmy mają tę samą Walutę wewnętrzną 1. |
Zobacz także |
getCurrency2, getCurrency3 |
function create()
{
var r_currency1 := getCurrency1();
result.CURRENCY1 := loadCurrency(r_currency1):isoCode;
}
function getCurrency1() as Guid
{
var currency1 as Guid;
var company := loadOrganisation(getCustomizingValue(„com.cisag.app.General”):company);
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, company:guid);
if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency1 := combination:currency1;
}
return currency1;
}
getCurrency2
Nazwa |
getCurrency2 |
Opis |
getCurrency2 zwraca identyfikator guid dla Waluty wewnętrznej 2 organizacji. |
Podpisy |
Guid getCurrency2(Guid organisation) |
Parametry |
Brak |
Wynik |
Funkcja zwraca identyfikator guid dla Waluty wewnętrznej 2 dla organisation. Jeśli organisation nie jest firmą, zwracana jest Waluta wewnętrzna 2 firmy, do której przypisana jest organisation. |
Źródła błędów |
Jeśli nie określono Waluty wewnętrznej 2 dla organisation, zwracana jest wartość null. |
Przykłady |
loadCurrency(getCurrency2(cast(Guid, getAttribute(parameters.object, „_organisation”)))):isoCode zwraca kod ISO drugiej waluty wewnętrznej organizacji, w której kontekście zarejestrowano obiekt biznesowy, do którego odwołuje się parameters.object. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
getCurrency1, getCurrency3 |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var r_currency2 := getCurrency2(loadOrganisation(p_organization):guid);
result.IS_NULL := isNull(r_currency2);
if (not isNull(r_currency2))
result.CURRENCY2 := loadCurrency(r_currency2):isoCode;
}
function getCurrency2(organisation as Guid) as Guid
{
var currency2 as Guid;
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, loadOrganisation(organisation):guid);
if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency2 := combination:currency2;
}
return currency2;
}
getCurrency3
Nazwa |
getCurrency3 |
Opis |
getCurrency3 zwraca guid dla Waluty wewnętrznej 3 organizacji. |
Podpisy |
Guid getCurrency3(Guid organisation) |
Parametry |
Brak |
Wynik |
Funkcja zwraca identyfikator guid dla trzeciej waluty wewnętrznej organisation. Jeśli organisation nie jest firmą, zwracana jest trzecia waluta wewnętrzna firmy, do której przypisana jest organisation. |
Źródła błędów |
Jeśli nie określono trzeciej waluty wewnętrznej dla organisation, zwracana jest wartość null. |
Przykłady |
loadCurrency(getCurrency3(cast(Guid, getAttribute(parameters.object, „_organisation”)))):isoCode zwraca kod ISO trzeciej waluty wewnętrznej organizacji, w której kontekście zarejestrowano obiekt biznesowy, do którego odwołuje się parameters.object. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
getCurrency1, getCurrency2 |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var r_currency3 := getCurrency3(loadOrganisation(p_organization):guid);
result.IS_NULL := isNull(r_currency3);
if (not isNull(r_currency3))
result.CURRENCY3 := loadCurrency(r_currency3):isoCode;
}
function getCurrency3(organisation as Guid) as Guid
{
var currency3 as Guid;
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, loadOrganisation(organisation):guid);
if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency3 := combination:currency3;
}
return currency3;
}
Funkcje dla ilości i jednostek miar (Funkcje jednostek miar)
Funkcje dla ilości i jednostek miar obejmują loadUom do otwierania jednostki.
loadUom
Nazwa |
loadUom |
Opis |
loadUom zwraca jednostkę jako typowany CisObject. |
Podpisy |
CisObject(com.cisag.app.general.obj.Currency) loadUom(String code) CisObject(com.cisag.app.general.obj.Currency) loadUom(Guid guid) |
Parametry |
guid to identyfikator guid jednostki. code jest identyfikatorem jednostki. |
Wynik |
Funkcja zwraca jednostkę o określonym identyfikatorze guid lub identyfikatorze jako wpisany obiekt CisObject. |
Źródła błędów |
Brak |
Przykłady |
loadUom(„kg”) zwraca typowany CisObject dla jednostki o kodzie kg. loadUom(parameters.object:totalQuantity.uom):code zwraca identyfikację jednostki, w której wprowadzono pozycję zamówienia sprzedaży, do której odnosi się parameters.object. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
function create()
{
var p_code := parameters.CODE;
var r_uom := loadUom(p_code);
result.IS_NULL := isNull(r_uom);
if (not isNull(r_uom))
result.DESCRIPTION := r_uom:description;
}
Funkcje kalendarzy firmowych (Funkcje kalendarza)
Funkcje kalendarza firmowego obejmują funkcje oceny typów dni i dodawania dni roboczych do czasu zgodnie z kalendarzem firmowym:
- addWorkingDays
- getDayType
- workingDays
addWorkingDays
Nazwa |
addWorkingDays |
Opis |
addWorkingDays dodaje dni robocze do czasu zgodnie ze standardowym kalendarzem pracy organizacji. |
Podpisy |
Timestamp addWorkingDays(String organisation, Timestamp time, Number days) Timestamp addWorkingDays(Guid organisation, Timestamp time, Number days) |
Parametry |
organisation to identyfikator lub identyfikator guid organizacji. time to czas, do którego mają zostać dodane dni robocze. days to liczba dni roboczych do dodania. |
Wynik |
Funkcja zwraca czas time i days dni robocze, zgodnie z kalendarzem firmowym z typem kalendarza firmowego zapisanym w funkcji konfiguracyjnej Podstawowe dla organizacji organisation. Wynikiem jest zawsze dzień roboczy. |
Źródła błędów |
Jeśli dla organizacji nie wprowadzono kalendarza firmowego ze standardowym typem kalendarza firmowego, funkcja prowadzi do błędu uruchomienia. |
Przykłady |
addWorkingDays(„90000”, now(), 10) zwraca czas 10 dni roboczych w przyszłości zgodnie ze standardowym kalendarzem firmowym organizacji 90000. addWorkingDays(„90000”, now(), -10) zwraca czas 10 dni roboczych w przeszłości. setActivityDuration(seconds(activity:creationTime, addWorkingDays(parameters.object->OrderDeliveryData->StorageArea:organisationalUnit, endOfDay(activity:creationTime), 3)) ustawia planowany koniec działania na koniec trzeciego dnia roboczego zgodnie ze standardowym kalendarzem firmowym organizacji logistyki magazynowej magazynu zapisanego w zamówieniu sprzedaży (parameters.object). |
Kontekst |
OLTP |
Uwagi |
Należy użyć funkcji addWorkingDays, aby określić planowany czas przetwarzania działania workflow za pomocą funkcji setActivityWorkDuration. |
Zobacz także |
workingDays |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var p_time := parameters.TIME;
var p_days := parameters.DAYS;
var r_addWorkingDays := addWorkingDays(loadOrganisation(p_organization):guid, p_time, p_days);
result.IS_NULL := isNull(r_addWorkingDays);
if (not isNull(r_addWorkingDays))
result.NEW_TIME := r_addWorkingDays;
}
Poniższy przykład z definicji działania help.js.addWorkingDays pokazuje, w jaki sposób deklaracje zapisane w JavaScript mogą wywoływać metody w Javie. Korzystając z JavaScript, różne metody odczytu są dostępne w klasach Java, które nie wyzwalają transakcji bazodanowych.
/**
* Przesunięcie daty o określoną liczbę dni
* Parametry:
* calendarType domyślny typ kalendarza organizacji
* data rozpoczęcia
* liczba dni (dozwolone są liczby ujemne)
* onlyWorkingDays używa tylko dni roboczych
* resultIsWorkingDay wynik musi być dniem roboczym
* standardiseResult wynik jest początkiem dnia w strefie czasowej
* Wartość zwracana: data wyniku
* Podpis:
* public CisDate addDays(byte[] calendarType, CisDate date,
* int days, boolean onlyWorkingDays, boolean resultIsWorkDay,
* boolean standardizeResult) throws IllegalStateException
*/
function create()
{
var p_organisation = parameters.ORGANIZATION;
var p_date = parameters.DATE;
var p_workingDays = parameters.WORKING_DAYS;
var p_onlyWorkingDays = parameters.ONLY_WORKING_DAYS != 0;
var p_resultIsWorkingDay = parameters.RESULT_IS_WORKING_DAY != 0;
var p_standardizeResult = true;
var cisEnvironment = Java.type(„com.cisag.pgm.appserver.CisEnvironment”).getInstance();
var objectManager = cisEnvironment.getObjectManager();
var organisation = objectManager.getObject(Java.type(„com.cisag.app.multiorg.obj.Organisation”).buildByCodeKey(p_organisation));
var calendarViewLogic = Java.type(„com.cisag.app.general.calendar.log.CalendarViewLogic”).getInstance();
var calendarTypeGuid = calendarViewLogic.getDefaultCalendarType(organisation.getGuid()) ;
var context = cisEnvironment.getContext();
var cisCalendar = context.getCisCalendar();
var date = Java.type(„com.cisag.pgm.datatype.CisDateUtility”).createCisDate(cisCalendar.getTimeZoneGuid(), p_date);
var resultDate = calendarViewLogic.addDays(calendarTypeGuid, date, p_workingDays, p_onlyWorkingDays, p_resultIsWorkingDay, p_standardizeResult);
result.RESULT_DATE = resultDate;
}
Definicja działania help.js.addWorkingDays.call pokazuje, jak można wywołać help.js.addWorkingDays.
function create()
{
var params := new(HashMap);
params.ORGANIZATION := parameters.ORGANIZATION;
params.DATE := parameters.DATE;
params.WORKING_DAYS := parameters.WORKING_DAYS;
params.ONLY_WORKING_DAYS := parameters.ONLY_WORKING_DAYS;
params.RESULT_IS_WORKING_DAY := parameters.RESULT_IS_WORKING_DAY;
var calendarDays := call(„help.js.addWorkingDays”, params);
result.RESULT_DATE := cast(Timestamp, calendarDays.RESULT_DATE);
}
getDayType
Nazwa |
getDayType |
Opis |
getDayType zwraca typ dnia punktu w czasie zgodnie ze standardowym kalendarzem pracy organizacji. |
Podpisy |
Number getDayType(String organisation, Timestamp time) Number getDayType(Guid organisation, Timestamp time) |
Parametry |
organisation to identyfikator lub identyfikator guid organizacji. time to godzina, której typ dnia ma zostać określony. |
Wynik |
Funkcja zwraca typ dnia time zgodnie z kalendarzem firmowym z typem kalendarza firmowego przechowywanym w funkcji konfiguracyjnej Podstawowe dla organizacji organisation. Typ dnia jest oparty na ValueSet com.cisag.app.general.DayType i ma następujące wartości. 1. Dzień roboczy 2. Brak dnia roboczego 3. Święto państwowe |
Źródła błędów |
Jeśli dla organizacji nie wprowadzono kalendarza firmowego ze standardowym typem kalendarza firmowego, funkcja prowadzi do błędu uruchomienia. |
Przykłady |
getDayType(„90000”, now()) zwraca typ dnia dzisiejszego zgodnie ze standardowym kalendarzem firmowym organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
const DayType as valueSet(com.cisag.app.general.DayType);
function create()
{
var p_organisation := parameters.ORGANIZATION;
var p_time := parameters.TIME;
var r_dayType := getDayType(loadOrganisation(p_organization):guid, p_time);
result.IS_NULL := isNull(r_dayType);
if (not isNull(r_dayType))
result.DAY_TYPE := valueSetDescription(DayType, r_dayType);
}
workingDays
Nazwa |
workingDays |
Opis |
workingDays zwraca liczbę dni roboczych między dwoma punktami w czasie zgodnie ze standardowym kalendarzem pracy organizacji. |
Podpisy |
Number workingDays(String organisation, Timestamp from, Timestamp until) Number workingDays(Guid organisation, Timestamp from, Timestamp until) |
Parametry |
organisation to identyfikator lub identyfikator guid organizacji. from to punkt w czasie pierwszego dnia kalendarzowego. until oznacza moment w ostatnim dniu kalendarzowym. |
Wynik |
Funkcja zwraca liczbę dni roboczych między dniami kalendarzowymi from i until zgodnie z kalendarzem firmowym z typem kalendarza firmowego zapisanym w funkcji konfiguracyjnej Podstawowe dla organizacji organisation. Jeśli dwa punkty w czasie from i until znajdują się w tym samym dniu kalendarzowym, zwracana jest wartość 0. |
Źródła błędów |
Jeśli dla organizacji nie wprowadzono kalendarza firmowego ze standardowym typem kalendarza firmowego, funkcja prowadzi do błędu uruchomienia. |
Przykłady |
workingDays(„90000”, parameters.object:date, now()) zwraca liczbę dni roboczych między dokumentem, do którego odwołuje się parametr parameters.object, a bieżącym dniem. Jeśli wydruk jest oceniany podczas generowania i wyprowadzania dowodu dostawy, np. dla zamówienia sprzedaży, może to być czas w dniach roboczych między wprowadzeniem zamówienia sprzedaży a dostawą. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
addWorkingDays |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var p_from := parameters.FROM;
var p_until := parameters.UNTIL;
r_workingDays := workingDays(loadOrganisation(p_organization):guid, p_from, p_until);
result.IS_NULL := isNull(r_workingDays);
if (not isNull(r_workingDays))
result.WORKING_DAYS := r_workingDays;
}
Funkcje dla stanowisk (Funkcje nazwy stanowiska)
Funkcje dla stanowisk obejmują funkcje rozwiązywania zadania na przypisanych użytkowników oraz funkcje analizy relacji między stanowiskami:
- resolveJobTitle
- substitute
- superior
resolveJobTitle
Nazwa |
resolveJobTitle |
Opis |
resolveJobTitle rozwiązuje zadanie w przewodnikach użytkownika. |
Podpisy |
Guid[] resolveJobTitle(Guid jobTitle) Guid[] resolveJobTitle(String jobTitle, String organisation) Guid[] resolveJobTitle(String jobTitle, Guid organisation) |
Parametry |
jobTitle to identyfikator lub nazwa stanowiska. organisation to identyfikator guid lub identyfikacja organizacji. |
Wynik |
Lista identyfikatorów użytkowników wszystkich użytkowników przypisanych do partnera, dla którego istnieje relacja partnerska ze stanowiskiem. |
Źródła błędów |
Jeśli stanowisko nie istnieje, wystąpi błąd wykonania. |
Przykłady |
resolveJobTitle(„SALES”) zwraca listę z identyfikatorami wszystkich użytkowników, dla których istnieje relacja partnerska ze stanowiskiem SALES w dowolnej organizacji. resolveJobTitle(„SALES”, „90000”) ogranicza wynik do stanowisk organizacji 90000. |
Kontekst |
OLTP |
Uwagi |
Relacje między partnerami mogą być rejestrowane w aplikacji Stanowiska. |
Zobacz także |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var p_jobTitle := parameters.JOB_TITLE;
var r_users := „”;
var users as Guid[];
users := resolveJobTitle(p_jobTitle, p_organisation);
if (not isNull(users)) {
for (u : users)
r_users := r_users + ” ” + userName(u);
}
result.IS_NULL := isNull(users);
result.USERS := substring(r_users, 1);
}
Substitute
Nazwa |
substitute |
Opis |
substitute zwraca zastępców użytkownika lub listę użytkowników. |
Podpisy |
Guid[] substitute(Guid user) Guid[] substitute(Guid user, Guid organisation) Guid[] substitute(Guid user, String organisation) Guid[] substitute(Guid[] users) Guid[] substitute(Guid[] users, Guid organisation) Guid[] substitute(Guid[] users, String organisation) |
Parametry |
users to lista zastępców użytkownika. user to identyfikator użytkownika. organisation to identyfikator guid lub identyfikacja organizacji. |
Wynik |
Funkcja oblicza identyfikatory użytkowników zastępców dla zestawu identyfikatorów użytkowników przy użyciu relacji zadań typu substitute i zwraca je w postaci listy. Opcjonalnie można uwzględnić kontekst organizacyjny stanowisk w środowisku wielofirmowym. Uwzględniane są tylko relacje partnerskie typu person. Jeśli stanowisko ma relację partnerską typu organisation, jest ona ignorowana. |
Źródła błędów |
Brak. |
Przykłady |
substitute(„70010”) zwraca listę zawierającą identyfikatory wszystkich zastępców użytkownika 70010 we wszystkich organizacjach. substitute(„70010”, „90000”) ogranicza wynik zastępców organizacji 90000. W wyrażeniu dla nowych pracowników po upływie limitu czasu aktywności, substitute(currentWorkers()) zwraca listę z identyfikatorami użytkowników zastępujących tych użytkowników, którzy jeszcze nie ukończyli swoich zadań. |
Kontekst |
OLTP |
Uwagi |
Relacje zastępcze mogą być rejestrowane w aplikacji Stanowiska. |
Zobacz także |
superior |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var p_user := parameters.USER;
var r_substitutes := „”;
var substitutes as Guid[];
if (userGuid(p_user) <> INVALID_GUID) {
if (p_organisation <> „”)
substitutes := substitute(userGuid(p_user), p_organisation);
other
substitutes := substitute(userGuid(p_user));
for (u : substitutes) {
r_substitutes := r_substitutes + ” ” + userName(u);
}
}
result.IS_EMPTY := isEmpty(substitutes);
result.SUBSTITUTE := trim(r_substitutes);
}
superior
Nazwa |
superior |
Opis |
superior zwraca przełożonego dla użytkownika lub listy użytkowników. |
Podpisy |
Guid[] superior(Guid user) Guid[] superior(Guid user, Guid organisation) Guid[] superior(Guid user, String organisation) Guid[] superior(Guid[] users) Guid[] superior(Guid[] users, Guid organisation) Guid[] superior(Guid[] users, String organisation) |
Parametry |
users to lista przełożonych użytkownika. user to identyfikator użytkownika. organisation to identyfikator guid lub identyfikacja organizacji. |
Wynik |
Funkcja oblicza identyfikatory użytkowników przełożonych dla zestawu identyfikatorów użytkowników przy użyciu relacji zadań typu supervisor i zwraca je w postaci listy. Opcjonalnie można uwzględnić kontekst organizacyjny stanowisk w środowisku wielofirmowym. Uwzględniane są tylko relacje partnerskie typu person. Jeśli stanowisko ma relację partnerską typu organisation, jest ona ignorowana. |
Źródła błędów |
Brak. |
Przykłady |
superior(„70010”) zwraca listę zawierającą identyfikatory wszystkich przełożonych użytkownika 70010 we wszystkich organizacjach. superior(„70010”, „90000”) ogranicza wynik do przełożonych stanowisk w organizacji 90000. W wyrażeniu dla nowych pracowników po upływie limitu czasu aktywności, superior(currentWorkers()) zwraca listę z identyfikatorami użytkowników przełożonych tych użytkowników, którzy jeszcze nie ukończyli swoich zadań. |
Kontekst |
OLTP |
Uwagi |
Relacje z przełożonymi mogą być rejestrowane w aplikacji Stanowiska. |
Zobacz także |
substitute |
function create()
{
var p_organisation := parameters.ORGANIZATION;
var p_user := parameters.USER;
var r_superiors := „”;
var superiors as Guid[];
if (userGuid(p_user) <> INVALID_GUID) {
if (p_organisation <> „”)
superiors := superior(userGuid(p_user), p_organisation);
other
superiors := superior(userGuid(p_user));
for (u : superiors) {
r_superiors := r_superiors + ” ” + userName(u);
}
}
result.IS_EMPTY := isEmpty(superiors);
result.SUPERIOR := trim(r_superiors);
}
Funkcje zgłoszeń serwisowych (Funkcje zgłoszeń serwisowych)
Funkcje dla zgłoszeń wsparcia obejmują supportRequestReferences, która zwraca zgłoszenia wsparcia powiązane ze zgłoszeniem wsparcia.
supportRequestReferences
Nazwa |
supportRequestReferences |
Opis |
supportRequestReferences zwraca wszystkie zgłoszenia powiązane ze zgłoszeniem. |
Podpisy |
CisObject(com.cisag.app.internal.obj.SupportRequest)[] supportRequestReferences (CisObject(com.cisag.app.internal.obj.SupportRequest) supportRequest , Number referenceType) |
Parametry |
supportRequest to zgłoszenie pomocy technicznej. number jest typem relacji ValueSet com.cisag.app.internal.SupportRequestReferenceType z następującymi stałymi: 1. Zobacz 2. W zależności od 3. Do przetestowania z 4. Dalsze zlecenie rozwoju 5. Oryginalne zgłoszenie wsparcia 6. Dostarczone zamówienie deweloperskie 7. Dostarczone żądanie wsparcia 8. Powiązane dostarczanie wsparcia 9. Powiązane dostarczanie wsparcia 10. Korekta w systemie następcy 11. Korekta w poprzednim systemie |
Wynik |
Funkcja zwraca wszystkie zgłoszenia pomocy technicznej i zlecenia rozwoju powiązane ze zgłoszeniem pomocy technicznej lub zleceniem rozwoju. |
Źródła błędów |
Brak. |
Przykłady |
supportRequestReferences(parameters.object, 2) zwraca listę z identyfikatorami zależnych zgłoszeń wsparcia i zleceń rozwoju w definicji działania z definicją zdarzenia typu Jednostka biznesowa dla obiektu biznesowego com.cisag.app.internal.obj.SupportRequest. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
Różne funkcje dla obiektów biznesowych (Różne funkcje dla obiektów biznesowych)
Inne funkcje dla obiektów biznesowych obejmują createOrderKey, która jest używana do tworzenia dokumentów, oraz nextNumberRangeNumber, która generuje liczbę z zakresu liczb.
createOrderKey
Nazwa |
createOrderKey |
Opis |
createOrderKey zwraca część com.cisag.app.general.obj.OrderKey dla dokumentu. |
Podpisy |
CisObject(com.cisag.app.general.obj.OrderKey) createOrderKey(Guid header, Guid detail) |
Parametry |
header to identyfikator dokumentu. detail to identyfikator pozycji. Jeśli użytkownik chce utworzyć klucz OrderKey bez odniesienia do pozycji dokumentu, nalezy użyć wartości null dla detail. |
Wynik |
Funkcja tworzy nową instancję części com.cisag.app.general.obj.OrderKey dla dokumentu lub pozycji dokumentu. |
Źródła błędów |
Brak |
Przykłady |
list(createOrderKey(parameters.object:guid, null)) zwraca listę z częścią com.cisag.app.general.obj.OrderKey dla dokumentu, do którego odwołuje się parameters.object. list(createOrderKey(parameters.entity:guid, parameters.object:guid)) zwraca listę z częścią com.cisag.app.general.obj.OrderKey dla pozycji dokumentu, do której odwołuje się parameters.object. |
Kontekst |
OLTP |
Uwagi |
Wiele aplikacji działających w tle do generowania dokumentów wykorzystuje parametr OrderKey struktury danych typu list, np. parametr Orders aplikacji działającej w tle com.cisag.app.sales.confirmation.log.Confirmation. Aby wywołać takie aplikacje w tle w działaniu workflow, należy użyć funkcji list, jak opisano w powyższych przykładach. |
Zobacz także |
function create()
{
var p_orderType := parameters.ORDER_TYPE;
var p_header := parameters.HEADER;
var p_detail := parameters.DETAIL;
var orderType := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrderType), p_orderType);
var header := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrder), orderType:guid, p_header);
var detail := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrderDetail), header:guid, p_detail, 0);
var orderKey := createOrderKey(header:guid, detail:guid);
result.ORDER_KEY_HEADER := orderKey:header;
result.ORDER_KEY_DETAIL := orderKey:detail;
}
nextNumberRangeNumber
Nazwa |
nextNumberRangeNumber |
Opis |
nextNumberRangeNumber generuje nową liczbę ze schematu numeracji. |
Podpisy |
String nextNumberRangeNumber(String code) String nextNumberRangeNumber(Guid guid) |
Parametry |
code jest identyfikacją schematu numeracji. guid to identyfikator guid schematu numeracji. |
Wynik |
Funkcja generuje nową liczbę ze schematu numeracji. Schemat numeracji jest identyfikowany za pomocą identyfikatora GUID lub nazwy. Funkcja zwraca nowo wygenerowaną liczbę. |
Źródła błędów |
Brak |
Przykłady |
nextNumberRangeNumber(„WFM”) generuje nowy numer ze schematu numeracji z identyfikatorem WFM. |
Kontekst |
OLTP |
Uwagi |
W niektórych jurysdykcjach na przykład numery faktur sprzedaży są kompletne. Dlatego numer ze schematu numeracji takiej jednostki biznesowej należy generować tylko wtedy, gdy numer ten jest również używany. Aby utworzyć unikalny numer dla pliku przechowywanego w kstore, można na przykład wprowadzić nowy schemat numeracji do celów ogólnych, który nie jest używany dla dokumentów końcowych. |
Zobacz także |
function create()
{
var p_numberRange := parameters.NUMBER_RANGE;
var r_number := nextNumberRangeNumber(p_numberRange);
result.IS_NULL := isNull(r_number);
result.NUMBER := r_number;
}
Funkcje dla dynamicznych obiektów biznesowych (Funkcje dynamicznych obiektów biznesowych)
Funkcje dla dynamicznych obiektów biznesowych obejmują funkcje getter do odpytywania o wartość innego pola, funkcje setter do przypisywania wartości do innego pola oraz funkcje validate do sprawdzania, czy wartość może być przypisana do innego pola. Z pomocą funkcji resetDbo można zresetować wartość do wartości domyślnej. Jeśli dodatkowe pole nie ma wartości domyślnej, wartość jest resetowana do wartości domyślnej typu danych.
Funkcje pobierające:
- dboCisDate
- dboCisObject
- dboDomesticAmount
- dboForeignAmount
- dboGuid
- dboNumber
- dboQuantity
- dboString
- dboText
- dboTextContentType
- dboTimestamp
- dboValueSet
- dboValueSetDescription
- dboValueSetName
Funkcje pobierające dla list wartości:
- dboListCisDate
- dboListCisObject
- dboListDomesticAmount
- dboListForeignAmount
- dboListGuid
- dboListNumber
- dboListQuantity
- dboListString
- dboListTimestamp
- dboListValueSet
- dboListValueSetDescription
- dboListValueSetName
Funkcja resetowania:
- resetDbo
Funkcje ustawiające:
- setDboCisDate
- setDboCisObject
- setDboDomesticAmount
- setDboForeignAmount
- setDboGuid
- setDboNumber
- setDboQuantity
- setDboString
- setDboText
- setDboTimestamp
- setDboValueSet
- setDboValueSetName
Funkcje ustawiające dla list wartości:
- setDboListCisDate
- setDboListCisObject
- setDboListDomesticAmount
- setDboListForeignAmount
- setDboListGuid
- setDboListNumber
- setDboListQuantity
- setDboListString
- setDboListTimestamp
- setDboListValueSet
- setDboListValueSetName
Sprawdzanie poprawności funkcji:
- validateDboCisDate
- validateDboCisObject
- validateDboDomesticAmount
- validateDboForeignAmount
- validateDboGuid
- validateDboNumber
- validateDboQuantity
- validateDboString
- validateDboTimestamp
- validateDboValueSet
- validateDboValueSetName
Funkcje pobierające
dboCisDate
Nazwa |
dboCisDate |
Opis |
dboCisDate zwraca wartość innego pola typu Date lub Date and time. |
Podpisy |
CisDate dboCisDate(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego obszaru nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość innego pola typu Date lub Date and time jako CisDate. Jeśli do pola dodatkowego nie przypisano daty lub daty i godziny, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość domyślna null typu danych CisDate. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboCisDate(„EXTPartner”, loadPartner(„70010”), „DATE_OF_BIRTH”) zwraca dodatkowe pole. isNull(dboCisDate(„EXTPartner”, loadPartner(„70010”), „DATE_OF_BIRTH”)) sprawdza, czy do dodatkowego pola przypisana jest data. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListCisDate, setDboCisDate, setDboListCisDate, validateDboCisDate |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValue := dboCisDate(„EXTPartner”, p_partner, p_name);
if (not isNull(dboValue))
r_dboValue := cast(String, dboValue);
result.IS_ASSIGNED := not isNull(dboValue);
result.DBO_VALUE := r_dboValue;
}
dboCisObject
Nazwa |
dboCisObject |
Opis |
dboCisObject zwraca wartość innego pola typu Business Entity. |
Podpisy |
CisObjectReference dboCisObject(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość innego pola typu Business Entity jako nieokreślone CisObjectReference. Aby użyć wyniku, należy przekonwertować nieokreślone odniesienie na odniesienie do żądanego obiektu biznesowego za pomocą funkcji cast. Jeśli do pola dodatkowego nie jest przypisana żadna jednostka biznesowa, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość domyślna null typu danych CisObjectReference. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
cast(CisObjectReference(com.cisag.app.general.obj.Partner), dboCisObject(„EXTPartner”, loadPartner(„70010”), „SPOUSE”)) zwraca partnera zapisanego w polu dodatkowym jako typowaną CisObjectReference. isNull(dboListCisObject(„EXTPartner”, loadPartner(„70010”), „SPOUSE”)) sprawdza, czy obiekt biznesowy jest przypisany do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListCisObject, setDboCisObject, setDboListCisObject, validateDboCisObject |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValue := dboCisObject(„EXTPartner”, p_partner, p_name);
if (not isNull(dboValue))
r_dboValue := cast(CisObject(com.cisag.app.general.obj.Partner), dboValue):number;
result.IS_ASSIGNED := not isNull(dboValue);
result.DBO_VALUE := r_dboValue;
}
dboDomesticAmount
Nazwa |
dboDomesticAmount |
Opis |
dboDomesticAmount zwraca wartość innego pola typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej. |
Podpisy |
CisObject(com.cisag.app.general.obj.DomesticAmount) dboDomesticAmount(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość pola dodatkowego typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej jako część typowaną CisObject(com.cisag.app.general.obj.DomesticAmount). Kwota lub cena jest zwracana w kombinacji waluty wewnętrznej organizacji, dla której wprowadzono dodatkowe pole. Jeśli do pola dodatkowego nie przypisano kwoty lub ceny w walucie wewnętrznej, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest część o wartości domyślnej 0 typu danych number we wszystkich trzech walutach wewnętrznych. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboDomesticAmount(„EXTPartner”, loadPartner(„10010”), „CREDIT_LIMIT_ALT”):amount1 zwraca wartość pola dodatkowego dla partnera w pierwszej walucie wewnętrznej. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListDomesticAmount, setDboDomesticAmount, setDboListDomesticAmount, validateDboDomesticAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboDomesticAmount(„EXTPartner”, p_partner, p_name):amount1;
result.DBO_VALUE := r_dboValue;
}
dboForeignAmount
Nazwa |
dboForeignAmount |
Opis |
dboForeignAmount zwraca wartość innego pola typu Amount lub Price. |
Podpisy |
CisObject(com.cisag.app.general.obj.ForeignAmount) dboForeignAmount(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość innego pola typu Amount lub Price jako typowaną część CisObject(com.cisag.app.general.obj.ForeignAmount). Jeśli do pola dodatkowego nie przypisano kwoty lub ceny, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest część z wartością domyślną 0 typu danych number dla kwoty lub ceny oraz z wartością domyślną null typu danych guid jako walutą. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboForeignAmount(„EXTPartner”, loadPartner(„10010”), „LIMIT”):amount zwraca kwotę lub cenę w walucie obcej. loadCurrency(dboForeignAmount(„EXTPartner”, loadPartner(„10010”), „LIMIT”):currency):isoCode zwraca kod ISO waluty obcej. isNull(dboForeignAmount(„EXTPartner”, loadPartner(„10010”), „LIMIT”):currency) sprawdza, czy do pola dodatkowego przypisana jest kwota lub cena. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListForeignAmount, setDboForeignAmount, setDboListForeignAmount, validateDboForeignAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValue := dboForeignAmount(„EXTPartner”, p_partner, p_name);
if (not isNull(dboValue:currency))
r_dboValue := format(dboValue:amount, „#0.00″) + ” ” + loadCurrency(dboValue:currency):isoCode;
result.IS_ASSIGNED := not isNull(dboValue:currency);
result.DBO_VALUE := r_dboValue;
}
dboGuid
Nazwa |
dboGuid |
Opis |
dboGuid zwraca wartość innego pola typu Classification. |
Podpisy |
Guid dboGuid(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość dodatkowego pola typu Classification jako guid obiektu biznesowego com.cisag.app.general.extension.obj.EntityExtensionHierarchy, który zawiera właściwości przypisanej klasyfikacji. Jeśli do pola dodatkowego nie przypisano żadnej klasyfikacji, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość domyślna null typu danych guid. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
getByPrimaryKey(CisObject(com.cisag.app.general.extension.obj.EntityExtensionHierarchy), dboGuid(„EXTPartner”, loadPartner(„70010”), „HOME_OFFICE”)):path zwraca ścieżkę dodatkowego pola typu Classification dla partnera. isNull(dboGuid(„EXTPartner”, loadPartner(„70010”), „LOCATION”)) sprawdza, czy klasyfikacja jest przypisana do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
Należy użyć wyniku, aby otworzyć klasyfikację, np. za pomocą funkcji getByPrimaryKey i ocenić dalsze atrybuty. Dodatkowe pola typu Classification są zapisywane w obiekcie biznesowym com.cisag.app.general.extension.obj.EntityExtensionHierarchy. |
Zobacz także |
dboListGuid, setDboGuid, setDboListGuid, validateDboGuid |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValue := dboGuid(„EXTPartner”, p_partner, p_name);
if (not isNull(dboValue)) {
var classification := getByPrimaryKey(CisObject(com.cisag.app.general.extension.obj.EntityExtensionHierarchy), dboValue);
r_dboValue := classification:path + ” ” + classification:description;
}
result.IS_ASSIGNED := not isNull(dboValue);
result.DBO_VALUE := r_dboValue;
}
dboNumber
Nazwa |
dboNumber |
Opis |
dboNumber zwraca wartość innego pola typu Decimal. |
Podpisy |
Number dboNumber(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość drugiego pola typu Decimal jako liczbę. Jeśli do pola dodatkowego nie przypisano liczby dziesiętnej, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość domyślna 0 typu danych number. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboNumber(„EXTPartner”, loadPartner(„10010”), „CREDIT_POINTS”) zwraca wartość dodatkowego pola dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListNumber, setDboNumber, setDboListNumber, validateDboNumber |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboNumber(„EXTPartner”, p_partner, p_name);
result.DBO_VALUE := r_dboValue;
}
dboQuantity
Nazwa |
dboQuantity |
Opis |
dboQuantity zwraca wartość innego pola typu Quantity. |
Podpisy |
CisObject(com.cisag.app.general.obj.Quantity) dboQuantity(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość dodatkowego pola typu Quantity jako typowaną część CisObject(com.cisag.app.general.obj.Quantity). Jeśli do innego pola nie przypisano żadnej ilości, zwracana jest liczba 0 dla ilości i wartość ZERO_GUID dla jednostki. Jeśli do pola dodatkowego nie jest przypisana żadna ilość, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest część z wartością domyślną 0 typu danych number dla ilości (amount) i z wartością ZERO_GUID dla jednostki (uom), nawet jeśli 0 jest wartością domyślną typu danych guid. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboQuantity(„EXTPartner”, loadPartner(„70010”), „WEIGHT”):amount zwraca wartość pola dodatkowego dla partnera jako liczbę. loadUom(dboQuantity(„EXTPartner”, loadPartner(„70010”), „WEIGHT”):uom):code zwraca identyfikację jednostki pola dodatkowego. dboQuantity(„EXTPartner”, loadPartner(„10010”), „WEIGHT”):uom <> ZERO_GUID sprawdza, czy ilość jest przypisana do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListQuantity, setDboQuantity, setDboListQuantity, validateDboQuantity |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValue := dboQuantity(„EXTPartner”, p_partner, p_name);
if (not isNull(dboValue:uom))
r_dboValue := format(dboValue:amount, „#0.00″) + ” ” + loadUom(dboValue:uom):code;
result.IS_ASSIGNED := dboValue:uom <> ZERO_GUID;
result.DBO_VALUE := r_dboValue;
}
dboString
Nazwa |
dboString |
Opis |
dboString zwraca wartość innego pola typu Text, Email address lub Uniform Resource Locator (URL). |
Podpisy |
String dboString(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość dodatkowego pola typu Text, Email address lub Uniform Resource Locator. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, jako wartość domyślna typu danych string zwracany jest pusty ciąg znaków. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboString(„EXTPartner”, loadPartner(„10010”), „REFERENCE”) zwraca wartość dodatkowego pola dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListString, setDboString, setDboListString, validateDboString |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboString(„EXTPartner”, p_partner, p_name);
result.DBO_VALUE := r_dboValue;
}
dboText
Nazwa |
dboText |
Opis |
dboText zwraca wartość innego pola typu Long text. |
Podpisy |
String dboText(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość dodatkowego pola typu Long text w języku treści bieżącego kontekstu. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość null. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboText(„EXTPartner”, loadPartner(„10010”), „NOTES”) zwraca wartość dodatkowego pola dla partnera. isNull(dboText(„EXTPartner”, loadPartner(„10010”), „NOTES”)) sprawdza, czy do pola dodatkowego przypisany jest tekst. |
Kontekst |
OLTP |
Uwagi |
Ponieważ definicja kolejnego pola typu Long text nie obsługuje ani listy wartości, ani ograniczeń, nie istnieją funkcje dboListText, setDboListText i validateDboText. |
Zobacz także |
dboTextContentType, setDboText |
function create()
{
var p_name := parameters.NAME;
var p_language := parameters.LANGUAGE;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var oldContentLanguage := getNLSContentLanguage();
var oldDisplayLanguage := getNLSDisplayLanguage();
setNLSLanguages(p_language);
/* var dboValue := dboText(„EXTPartner”, p_partner, p_name);*/
var dboValue := dboString(„EXTPartner”, p_partner, p_name);
setNLSContentLanguage(oldContentLanguage);
setNLSDisplayLanguage(oldDisplayLanguage);
if (not isNull(dboValue))
r_dboValue := dboValue;
result.IS_ASSIGNED := not isNull(dboValue);
result.DBO_VALUE := r_dboValue;
}
dboTextContentType
Nazwa |
dboTextContentType |
Opis |
dboTextContentType zwraca typ zawartości innego pola typu Long text. |
Podpisy |
Number dboTextContentType(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca typ zawartości dodatkowego pola typu Long text. Typ zawartości jest jednym z wpisów ValueSet com.cisag.sys.gui.HTMLEditorContentValueSet: HTML lub tylko tekst. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracany jest typ zawartości wartości domyślnej pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość domyślna 0 typu danych number. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboTextContentType(„EXTPartner”, loadPartner(„10010”), „DETAILS”) zwraca typ zawartości dodatkowego pola dla partnera. dboTextContentType(„EXTPartner”, loadPartner(„10010”), „NOTES”) = 0 sprawdza, czy do pola dodatkowego przypisany jest tekst. |
Kontekst |
OLTP |
Uwagi |
Jeśli użytkownik chce wyświetlić wartość innego pola typu Long text w opisie działania, może użyć funkcji formatActivityHtml dla typu zawartości (1) i funkcji formatActivity dla typu zawartości Tylko tekst (2). |
Zobacz także |
dboText, setDboText |
const ContentType as valueSet(com.cisag.sys.gui.HTMLEditorContentValueSet);
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboTextContentType(„EXTPartner”, p_partner, p_name);
result.IS_ASSIGNED := r_dboValue > 0;
result.DBO_VALUE := valueSetDescription(ContentType, r_dboValue);
}
dboTimestamp
Nazwa |
dboTimestamp |
Opis |
dboTimestamp zwraca wartość innego pola typu Date and time lub Date. |
Podpisy |
Timestamp dboTimestamp(Timestamp schemaName, CisObject object, Timestamp attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość innego pola typu Date and time lub Date jako godzinę. Jeśli do pola dodatkowego nie przypisano daty i godziny lub daty, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość null, nawet jeśli stała UNDEFINED_DATE jest rzeczywistą wartością domyślną typu danych Timestamp. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboTimestamp(„EXTPartner”, loadPartner(„10010”), „LAST_ACCESS”) zwraca wartość drugiego pola dla partnera. isNull(dboTimestamp(„EXTPartner”, loadPartner(„10010”), „LAST_ACCESS”)) sprawdza, czy do dodatkowego pola przypisana jest data i godzina lub data. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboListTimestamp, setDboTimestamp, setDboListTimestamp, validateDboTimestamp |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboTimestamp(„EXTPartner”, p_partner, p_name);
result.IS_ASSIGNED := r_dboValue <> UNDEFINED_DATE;
result.DBO_VALUE := r_dboValue;
}
dboValueSet
Nazwa |
dboValueSet |
Opis |
dboValueSet zwraca wartość liczbową wyboru innego pola typu Selection field. |
Podpisy |
Number dboValueSet(ValueSet schemaName, CisObject object, ValueSet attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartość liczbową dodatkowego pola typu Selection field jako liczbę. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest wartość domyślna 0 typu danych number. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboValueSet(„EXTPartner”, loadPartner(„10010”), „SIZE”) zwraca wartość liczbową dodatkowego pola dla partnera. dboValueSet(„EXTPartner”, loadPartner(„10010”), „SIZE”) > 0 sprawdza, czy wartość jest przypisana do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
Wartość liczbowa (ID) nie jest wyświetlana we właściwościach innego pola typu Selection field. W większości przypadków wartość liczbowa odpowiada kolejności, w jakiej zostały wprowadzone wpisy. |
Zobacz także |
dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboValueSet(„EXTPartner”, p_partner, p_name);
result.IS_ASSIGNED := r_dboValue > 0;
result.DBO_VALUE := r_dboValue;
}
dboValueSetDescription
Nazwa |
dboValueSetDescription |
Opis |
dboValueSetDescription zwraca opis wyboru innego pola typu Selection field. |
Podpisy |
String dboValueSetDescription(String schemaName, CisObject object, String at-tributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca nazwę dodatkowego pola typu Selection field jako ciąg znaków w języku treści bieżącego kontekstu. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, jako wartość domyślna typu danych String zwracany jest pusty ciąg znaków. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboValueSetDescription(„EXTPartner”, loadPartner(„10010”), „SIZE”) zwraca opis dodatkowego pola dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboValueSet, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_language := parameters.LANGUAGE;
var p_partner := loadPartner(parameters.PARTNER);
var oldLanguage := getNLSContentDisplayLanguage;
setNLSDisplayLanguage(p_language);
var r_dboValue := dboValueSetDescription(„EXTPartner”, p_partner, p_name);
setNLSDisplayLanguage(oldLanguage);
result.IS_ASSIGNED := dboValueSet(„EXTPartner”, p_partner, p_name) > 0;
result.DBO_VALUE := r_dboValue;
}
dboValueSetName
Nazwa |
dboValueSetName |
Opis |
dboValueSetName zwraca stałą wartość wyboru kolejnego pola typu Selection field. |
Podpisy |
String dboValueSetName(String schemaName, CisObject object, String attribu-teName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca stałą wartość drugiego pola typu Selection field jako ciąg znaków. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, jako wartość domyślna typu danych String zwracany jest pusty ciąg znaków. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboValueSetName(„EXTPartner”, loadPartner(„10010”), „SIZE”) zwraca stałą wartość dodatkowego pola dla partnera. dboValueSetName(„EXTPartner”, loadPartner(„10010”), „SIZE”) = „” sprawdza, czy wartość jest przypisana do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboValueSet, dboValueSetDescription, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := dboValueSetName(„EXTPartner”, p_partner, p_name);
result.IS_ASSIGNED := r_dboValue <> „”;
result.DBO_VALUE := r_dboValue;
}
Funkcje pobierające dla list wartości
dboListCisDate
Nazwa |
dboListCisDate |
Opis |
dboListCisDate zwraca listę wartości innego pola typu Date lub Date and time. |
Podpisy |
CisDate[] dboListCisDate(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Date lub Date and time jako listę CisDates. Jeśli do pola dodatkowego nie przypisano daty lub daty i godziny, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy o wartości domyślnej null typu danych CisDate. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListCisDate(„EXTPartner”, loadPartner(„70010”), „APPRAISAL_DATES”) zwraca listę wartości dodatkowego pola dla partnera. toTimestamp(dboListCisDate(„EXTPartner”, loadPartner(„70010”), „DATE_OF_BIRTH”))[0] <> UNDEFINED_DATE) sprawdza, czy do pola dodatkowego przypisana jest data czy data i godzina. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboCisDate, setDboCisDate, setDboListCisDate, validateDboCisDate |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListCisDate(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
if (isNull(element))
r_dboValue := r_dboValue + „[null] „;
else if (toTimestamp(element) = UNDEFINED_DATE)
r_dboValue := r_dboValue + „[UNDEFINED_DATE] „;
else if (toTimestamp(element) = MIN_DATE)
r_dboValue := r_dboValue + „[MIN_DATE] „;
else if (toTimestamp(element) = MAX_DATE)
r_dboValue := r_dboValue + „[MAX_DATE] „;
other
r_dboValue := r_dboValue + „[” + format(element, „rrrr-MM-dd”) + „] „;
result.IS_ASSIGNED := isNull(dboValueList[0]);
result.DBO_VALUE := trim(r_dboValue);
}
dboListCisObject
Nazwa |
dboListCisObject |
Opis |
dboListCisObject zwraca listę wartości innego pola typu Business Entity. |
Podpisy |
CisObjectReference[] dboListCisObject(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości dodatkowego pola typu Business Entity jako listę nieokreślonych CisObjectReference. Aby użyć wyniku, należy przekonwertować poszczególne elementy listy na żądany obiekt biznesowy za pomocą funkcji cast. Jeśli do pola dodatkowego nie jest przypisana żadna jednostka biznesowa, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy o wartości domyślnej null typu danych CisObjectReference. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListCisObject(„EXTPartner”, loadPartner(„70010”), „CHILDREN”) zwraca listę wartości pola dodatkowego dla partnera. isNull(dboListCisObject(„EXTPartner”, loadPartner(„70010”), „CHILDREN”)[0]) sprawdza, czy obiekt biznesowy jest przypisany do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboCisObject, setDboCisObject, setDboListCisObject, validateDboCisObject |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListCisObject(„EXTPartner”, p_partner, p_name);
for (element as CisObject(com.cisag.app.general.obj.Partner) : dboValueList)
if (isNull(element))
r_dboValue := r_dboValue + „[null] „;
other
r_dboValue := r_dboValue + „[” + cast(CisObject(com.cisag.app.general.obj.Partner), element):number + „] „;
result.IS_ASSIGNED := not isNull(dboValueList[0]);
result.DBO_VALUE := trim(r_dboValue);
}
dboListDomesticAmount
Nazwa |
dboListDomesticAmount |
Opis |
dboListDomesticAmount zwraca listę wartości innego pola typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej. |
Podpisy |
CisObject(com.cisag.app.general.obj.DomesticAmount)[] dboListDomesticAmount(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej jako listę wpisanych części CisObject(com.cisag.app.general.obj.DomesticAmount). Jeśli do pola dodatkowego nie przypisano kwoty lub ceny w walucie wewnętrznej, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest część o wartości domyślnej 0 typu danych number we wszystkich trzech walutach wewnętrznych. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListDomesticAmount(„EXTPartner”, loadPartner(„10010”), „CREDIT_LIMIT_ALT”) zwraca listę wartości pola dodatkowego dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboDomesticAmount, setDboDomesticAmount, setDboListDomesticAmount, validateDboDomesticAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var currency1 := loadCurrency(getCurrency1()):isoCode;
var dboValueList := dboListDomesticAmount(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
r_dboValue := r_dboValue + „[” + format(element:amount1, „#.00″) + ” ” + currency1 + „] „;
result.DBO_VALUE := trim(r_dboValue);
}
function getCurrency1() as Guid
{
var currency1 as Guid;
var company := loadOrganisation(getCustomizingValue(„com.cisag.app.General”):company);
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, company:guid);
if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency1 := combination:currency1;
}
return currency1;
}
dboListForeignAmount
Nazwa |
dboListForeignAmount |
Opis |
dboListForeignAmount zwraca listę wartości innego pola typu Amount lub Price. |
Podpisy |
CisObject(com.cisag.app.general.obj.ForeignAmount)[] dboListForeignAmount(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Amount lub Price jako listę z typowanymi częściami CisObject(com.cisag.app.general.obj.ForeignAmount). Jeśli do pola dodatkowego nie przypisano kwoty lub ceny, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy z częścią, z wartością domyślną 0 typu danych number dla kwoty lub ceny oraz z wartością domyślną null typu danych Guid jako walutą. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListForeignAmount(„EXTPartner”, loadPartner(„10010”), „CREDIT_LIMIT_LOCAL”) zwraca listę wartości pola dodatkowego dla partnera. isNull(dboListForeignAmount(„EXTPartner”, loadPartner(„10010”), „LIMIT”)[0]:currency) sprawdza, czy do pola dodatkowego przypisana jest kwota lub cena. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboForeignAmount, setDboForeignAmount, setDboListForeignAmount, validateDboForeignAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListForeignAmount(„EXTPartner”, p_partner, p_name);
for (element as CisObject(com.cisag.app.general.obj.ForeignAmount) : dboValueList)
if (isNull(element:currency))
r_dboValue := r_dboValue + „[null] „;
else if (element:currency = ZERO_GUID)
r_dboValue := r_dboValue + „[ZERO_GUID] „;
inny
r_dboValue := r_dboValue + „[” + format(element:amount, „#0.00″) + ” ” + loadCurrency(element:currency):isoCode + „] „;
result.IS_ASSIGNED := not isNull(dboValueList[0]:currency);
result.DBO_VALUE := trim(r_dboValue);
}
dboListGuid
Nazwa |
dboListGuid |
Opis |
dboListGuid zwraca listę wartości innego pola typu Classification. |
Podpisy |
Guid[] dboListGuid(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Classification jako listę guidów obiektu biznesowego com.cisag.app.general.extension.obj.EntityExtensionHierarchy, który zawiera właściwości przypisanych klasyfikacji. Jeśli do pola dodatkowego nie przypisano żadnej klasyfikacji, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy o wartości domyślnej null typu danych Guid. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListGuid(„EXTPartner”, loadPartner(„70010”), „HOME_OFFICE”) zwraca listę wartości pola dodatkowego dla partnera. isNull(dboListGuid(„EXTPartner”, loadPartner(„70010”), „HOME_OFFICE”))[0] sprawdza, czy wartość jest przypisana do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
Należy użyć wyniku, aby otworzyć klasyfikację, np. za pomocą funkcji getByPrimaryKey i ocenić dalsze atrybuty. Dodatkowe pola typu Classification są zapisywane w obiekcie biznesowym com.cisag.app.general.extension.obj.EntityExtensionHierarchy. |
Zobacz także |
dboGuid, setDboGuid, setDboListGuid, validateDboGuid |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListGuid(„EXTPartner”, p_partner, p_name);
var classification as CisObject(com.cisag.app.general.extension.obj.EntityExtensionHierarchy);
for (element : dboValueList)
if (isNull(element))
r_dboValue := r_dboValue + „[null] „;
else {
classification := getByPrimaryKey(CisObject(com.cisag.app.general.extension.obj.EntityExtensionHierarchy), element);
r_dboValue := r_dboValue + „[” + classification:path + ” ” + classification:description + „] „;
}
result.IS_ASSIGNED := not isNull(dboValueList[0]);
result.DBO_VALUE := trim(r_dboValue);
}
dboListNumber
Nazwa |
dboListNumber |
Opis |
dboListNumber zwraca listę wartości innego pola typu Decimal. |
Podpisy |
Number[] dboListNumber(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Decimal jako listę liczb. Jeśli do pola dodatkowego nie przypisano liczby dziesiętnej, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy i wartością domyślną 0 typu danych Number. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListNumber(„EXTPartner”, loadPartner(„10010”), „CREDIT_POINTS”) zwraca listę wartości dodatkowego pola dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboNumber, setDboNumber, setDboListNumber, validateDboNumber |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListNumber(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
r_dboValue := r_dboValue + „[” + element + „] „;
result.DBO_VALUE := trim(r_dboValue);
}
dboListQuantity
Nazwa |
dboListQuantity |
Opis |
dboListQuantity zwraca listę wartości innego pola typu Quantity. |
Podpisy |
CisObject(com.cisag.app.general.obj.Quantity)[] dboListQuantity(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Quantity jako listę wpisanych części CisObject(com.cisag.app.general.obj.Quantity). Jeśli do pola dodatkowego nie jest przypisana żadna ilość, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy z częścią o wartości domyślnej 0 typu danych Number dla kwoty i wartością ZERO_GUID dla jednostki (uom), nawet jeśli zero jest wartością domyślną typu danych Guid. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListQuantity(„EXTPartner”, loadPartner(„70010”), „DIMENSIONS”) zwraca listę wartości pola dodatkowego dla partnera. dboLstQuantity(„EXTPartner”, loadPartner(„10010”), „DIMENSIONS”)[0]:uom = ZERO_GUID sprawdza, czy ilość jest przypisana do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboQuantity, setDboQuantity, setDboListQuantity, validateDboQuantity |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListQuantity(„EXTPartner”, p_partner, p_name);
for (element as CisObject(com.cisag.app.general.obj.Quantity) : dboValueList)
if (isNull(element))
r_dboValue := r_dboValue + „[null] „;
else if (element:uom = ZERO_GUID)
r_dboValue := r_dboValue + „ZERO_GUID „;
inny
r_dboValue := r_dboValue + „[” + element:amount + ” ” + loadUom(element:uom):code + „] „;
result.IS_ASSIGNED := dboValueList[0]:uom <> ZERO_GUID;
result.DBO_VALUE := trim(r_dboValue);
}
dboListString
Nazwa |
dboListString |
Opis |
dboListString zwraca listę wartości innego pola typu Text, Long text, E-mail address lub Uniform Resource Locator (URL). |
Podpisy |
String[] dboListString(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości innego pola typu Text, Long text, Email address lub Uniform Resource Locator jako listę ciągów znaków. Jeśli do pola dodatkowego nie zostanie przypisana żadna wartość, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, jako wartość domyślna typu danych String zwracana jest lista z pojedynczym elementem listy i pustym ciągiem znaków. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListString(„EXTPartner”, loadPartner(„10010”), „EXTERNAL_REFERENCE”) zwraca listę wartości dodatkowego pola dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboString, setDboString, setDboListString, validateDboString |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListString(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
r_dboValue := r_dboValue + „[” + element + „] „;
result.DBO_VALUE := trim(r_dboValue);
}
dboListTimestamp
Nazwa |
dboListTimestamp |
Opis |
dboListTimestamp zwraca listę wartości innego pola typu Date and time lub Date. |
Podpisy |
Timestamp[] dboListTimestamp(Timestamp schemaName, CisObject object, Timestamp attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca listę wartości pola dodatkowego typu Date and time lub Date jako listę punktów w czasie. Jeśli do pola dodatkowego nie przypisano daty i godziny lub daty, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy o wartości domyślnej null, nawet jeśli stała UNDEFINED_DATE jest wartością domyślną typu danych Timestamp. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListTimestamp(„EXTPartner”, loadPartner(„10010”), „LAST_ACCESS”) zwraca listę wartości dodatkowego pola dla partnera. not isNull(dboListTimestamp(„EXTPartner”, loadPartner(„10010”), „LAST_ACCESS”)[0]) sprawdza, czy czas jest przypisany do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboTimestamp, setDboTimestamp, setDboListTimestamp, validateDboTimestamp |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListTimestamp(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
if (element = UNDEFINED_DATE)
r_dboValue := r_dboValue + „[UNDEFINED_DATE] „;
else if (element = MIN_DATE)
r_dboValue := r_dboValue + „[MIN_DATE] „;
else if (element = MAX_DATE)
r_dboValue := r_dboValue + „[MAX_DATE] „;
other
r_dboValue := r_dboValue + „[” + format(element, „yyyy-MM-dd hh:mm:ss”) + „] „;
result.IS_ASSIGNED := dboValueList[0] <> UNDEFINED_DATE;
result.DBO_VALUE := trim(r_dboValue);
}
dboListValueSet
Nazwa |
dboListValueSet |
Opis |
dboListValueSet zwraca wartości liczbowe listy wartości innego pola typu Selection field. |
Podpisy |
Number[] dboListValueSet(ValueSet schemaName, CisObject object, ValueSet attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca wartości liczbowe listy wartości pola dodatkowego typu Selection field jako listę liczb. Jeśli do pola dodatkowego nie przypisano żadnej wartości, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, zwracana jest lista z pojedynczym elementem listy i wartością domyślną 0 typu danych Number. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListValueSet(„EXTPartner”, loadPartner(„10010”), „PREFERENCES”) zwraca wartości liczbowe listy wartości pola dodatkowego dla partnera. dboListValueSet(„EXTPartner”, loadPartner(„10010”), „PREFERENCES”)[0] > 0 sprawdza, czy wartość jest przypisana do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
Wartość liczbowa (ID) nie jest wyświetlana we właściwościach innego pola typu Selection field. W większości przypadków wartość liczbowa odpowiada kolejności, w jakiej zostały wprowadzone wpisy. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var dboValueList := dboListValueSet(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
if (element <> 0)
r_dboValue := r_dboValue + „[” + format(element, „0”) + „] „;
result.IS_ASSIGNED := dboValueList[0] <> 0;
result.DBO_VALUE := trim(r_dboValue);
}
dboListValueSetDescription
Nazwa |
dboListValueSetDescription |
Opis |
dboListValueSetDescription zwraca listę wartości z opisami wyboru kolejnego pola typu Selection field. |
Podpisy |
String[] dboListValueSetDescription(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca nazwy listy wartości dodatkowego pola typu Selection field jako listę ciągów znaków. Jeśli do pola dodatkowego nie zostanie przypisana żadna wartość, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, jako wartość domyślna typu danych String zwracana jest lista z pojedynczym elementem listy i pustym ciągiem znaków. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListValueSetDescription(„EXTPartner”, loadPartner(„10010”), „PREFERENCES”) zwraca opis listy wartości pola dodatkowego dla partnera. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_language := parameters.LANGUAGE;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var oldContentLanguage := getNLSContentLanguage();
var oldDisplayLanguage := getNLSDisplayLanguage();
setNLSLanguages(p_language);
var r_dboValue := dboListValueSetDescription(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
r_dboValue := r_dboValue + „[” + element + „] „;
setNLSContentLanguage(oldContentLanguage);
setNLSDisplayLanguage(oldDisplayLanguage);
result.DBO_VALUE := r_dboValue;
}
dboListValueSetName
Nazwa |
dboListValueSetName |
Opis |
dboValueSetName zwraca listę wartości ze stałymi nazwami wyboru kolejnego pola typu Selection field. |
Podpisy |
String[] dboListValueSetName(String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Funkcja zwraca stałe wartości listy wartości innego pola typu Selection field jako listę ciągów znaków. Jeśli do pola dodatkowego nie zostanie przypisana żadna wartość, zwracana jest wartość domyślna pola dodatkowego. Jeśli pole dodatkowe nie ma wartości domyślnej, jako wartość domyślna typu danych String zwracana jest lista z pojedynczym elementem listy i pustym ciągiem znaków. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
dboListValueSetName(„EXTPartner”, loadPartner(„10010”), „PREFERENCES”) zwraca stałe wartości listy wartości pola dodatkowego dla partnera. dboListValueSetName(„EXTPartner”, loadPartner(„10010”), „SIZE”)[0] > „” sprawdza, czy wartość jest przypisana do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
|
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var r_dboValue := „”;
var r_dboValue := dboListValueSetName(„EXTPartner”, p_partner, p_name);
for (element : dboValueList)
r_dboValue := r_dboValue + „[” + element + „] „;
result.IS_ASSIGNED := dboValueList[0] <> „”;
result.DBO_VALUE := r_dboValue;
}
Funkcja resetowania
resetDbo
Nazwa |
resetDbo |
Opis |
resetDbo resetuje wartość innego pola do wartości domyślnej lub oryginalnej. |
Podpisy |
resetDbo (String schemaName, CisObject object, String attributeName) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. |
Wynik |
Polecenie resetuje pole dodatkowe do wartości domyślnej. Jeśli pole dodatkowe nie ma wartości domyślnej, pole dodatkowe jest resetowane do tej samej wartości, którą zwracają funkcje getter, jeśli ani wartość domyślna, ani wartość nie są przypisane. W większości przypadków odpowiada to wartości domyślnej używanego typu danych. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, polecenie nie może zostać wykonane. |
Przykłady |
resetDbo („EXTPartner”, loadPartner(„70010”), „BALANCE”) usuwa wartość z drugiego pola. |
Kontekst |
OLTP |
Uwagi |
Polecenie resetDbo usuwa wartość z pola dodatkowego. W przypadku niektórych typów pól można osiągnąć ten sam rezultat, przypisując wartość domyślną lub standardową wartość typu danych do pola dodatkowego. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
resetDbo („EXTPartner”, p_partner, p_name);
}
Funkcje ustawiające
setDboCisDate
Nazwa |
setDboCisDate |
Opis |
setDboCisDate przypisuje wartość do innego pola typu Date. |
Podpisy |
Boolean setDboCisDate(String schemaName, CisObject object, String attributeName, CisDate date) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. date to wartość, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje datę date do pola dodatkowego. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i date nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboCisDate(„EXTItem”, loadItem(„10010”), „LAST_DATE”, today()) przypisuje dzisiejszą datę do drugiego pola. setDboCisDate(„EXTItem”, loadItem(„10010”), „NEXT_DATE”, addDays(cast(CisDate, first(dboCisDate(„EXTItem”, loadItem(„10010”), „NEXT_DATE”), today()), 90)) zwiększa datę w drugim polu o 90 dni. Jeśli dodatkowe pole nie ma prawidłowej wartości, przyjmowana jest dzisiejsza data. |
Kontekst |
OLTP |
Uwagi |
setDboCisDate(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(CisDate)) próbuje przypisać wartość domyślną null typu danych CisDate do dodatkowego pola. Należy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboCisDate, dboListCisDate, setDboListCisDate, validateDboCisDate |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_offset := parameters.OFFSET;
var dboSuccess := false;
var oldDboValue := cast(CisDate, first(dboCisDate(„EXTPartner”, p_partner, p_name), today()));
var newDboValue := addDays(oldDboValue, p_offset);
var dboSuccess := setDboCisDate(„EXTPartner”, p_partner, p_name, newDboValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboCisObject
Nazwa |
setDboCisObject |
Opis |
setDboCisObject przypisuje wartość do innego pola typu Business Entity. |
Podpisy |
Boolean setDboCisObject(String schemaName, CisObject object, String attributeName, CisObjectReference objectReference) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. objectReference to obiekt CisObject, który ma zostać przypisany do dodatkowego pola. |
Wynik |
Funkcja przypisuje CisObjectReference objectReference do dodatkowego pola. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i objectReference nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboCisObject(„EXTItem”, parameters.object, „SUBMITTER”, getByPrimaryKey(CisObject( com.cisag.app.general.obj.UserAssignment), parameters.userGuid)->Partner) przypisuje do pola dodatkowego partnera, którego użytkownik wywołał zdarzenie typu Business Entity lub User Action. |
Kontekst |
OLTP |
Uwagi |
setDboCisObject(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(CisObject)) próbuje przypisać wartość domyślną null typu danych CisObject do dodatkowego pola. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboCisObject, dboListCisObject, setDboListCisObject, validateDboCisObject |
function create()
{
var p_name := parameters.NAME;
var p_item := loadItem(parameters.ITEM);
var p_user := parameters.USER;
var dboSuccess := false;
dboSuccess := setDboCisObject(„EXTItem”, item, p_name, loadPartnerOfUser(userGuid(p_user)));
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
function loadPartnerOfUser(user as Guid) as CisObject(com.cisag.app.general.obj.Partner)
{
powrót
getByPrimaryKey(
CisObject(com.cisag.app.general.obj.UserAssignment),
użytkownik)->Partner;
}
setDboDomesticAmount
Nazwa |
setDboDomesticAmount |
Opis |
setDboDomesticAmount przypisuje wartość do innego pola typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej. |
Podpisy |
Boolean setDboDomesticAmount(String schemaName, CisObject object, String attributeName, Number domesticAmount) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. domesticAmount to kwota lub cena w walucie głównej organizacji, dla której wprowadzono dodatkowe pole. |
Wynik |
Funkcja przypisuje kwotę lub cenę domesticAmount do pola dodatkowego w walucie wiodącej organizacji, dla której wprowadzono pole dodatkowe. Jeśli w ramach dostosowywania zdefiniowano inne waluty wewnętrzne, kwota jest przeliczana z waluty wiodącej na inne waluty wewnętrzne po bieżącym kursie wymiany. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli dla innego pola zdefiniowano ograniczenia, a kwota lub cena w walucie wewnętrznej jest niedozwolona, funkcja zwraca wartość false. Jeśli przypisanie powiodło się, funkcja aktualizuje również datę konwersji walut. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboDomesticAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, 10000) przypisuje kwotę lub cenę 10000 w walucie wewnętrznej do dodatkowego pola dla partnera. setDboDomesticAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, dboDomesticAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”) + 1000) zwiększa kwotę lub cenę w walucie wewnętrznej o 1000. |
Kontekst |
OLTP |
Uwagi |
setDboDomesticAmount(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number)) próbuje przypisać domyślną wartość 0 typu danych Number do dodatkowego pola. Należy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboDomesticAmount, dboListDomesticAmount, setDboListDomesticAmount, validateDboDomesticAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_amount := parameters.AMOUNT;
var dboSuccess := false;
dboSuccess := setDboDomesticAmount(„EXTPartner”, p_partner, p_name, p_amount);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboForeignAmount
Nazwa |
setDboForeignAmount |
Opis |
setDboForeignAmount przypisuje wartość do innego pola typu Amount lub Price. |
Podpisy |
Boolean setDboForeignAmount(String schemaName, CisObject object, String attributeName, CisObject(com.cisag.app.general.obj.ForeignAmount) foreignAmount) Boolean setDboForeignAmount(String schemaName, CisObject object, String attributeName, Number amount, Guid currency) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amount to kwota lub cena w walucie obcej, która ma zostać przypisana do pola dodatkowego. currency to identyfikator waluty obcej. foreignAmount to część, która ma zostać przypisana. |
Wynik |
Funkcja przypisuje kwotę lub cenę w walucie obcej do pola dodatkowego. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli dla innego pola zdefiniowano ograniczenia, a kwota lub cena w walucie obcej jest niedozwolona, funkcja zwraca wartość false. Jeśli przypisanie powiodło się, funkcja aktualizuje również datę konwersji walut. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. Nawet jeśli currency nie jest ani null, ani prawidłową walutą, zwracana jest wartość null. |
Przykłady |
setDboForeignAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, 10000, loadCurrency(„USD”):guid) przypisuje kwotę lub cenę 10000 USD do pola dodatkowego. setDboForeignAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, dboForeignAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”):amount + 1000, dboForeignAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”):guid) zwiększa kwotę lub cenę o 1000. |
Kontekst |
OLTP |
Uwagi |
setDboForeignAmount(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number), new(Guid)) próbuje przypisać wartość domyślną 0 typu danych Number i wartość domyślną null typu danych Guid do dodatkowego pola. Należy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboForeignAmount, dboListForeignAmount, setDboListForeignAmount, validateDboForeignAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_amount := parameters.AMOUNT;
var p_currency := parameters.CURRENCY;
var dboSuccess := false;
var currencyGuid := loadCurrency(p_currency):guid;
if (isNull(currencyGuid))
currencyGuid := getCurrency1();
dboSuccess := setDboForeignAmount(„EXTPartner”, p_partner, p_name, p_amount, p_currency);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
function getCurrency1() as Guid
{
var currency1 as Guid;
var company := loadOrganisation(getCustomizingValue(„com.cisag.app.General”):company);
var baseFunction := getCustomisingValue(„com.cisag.app.general.Base”, company:guid);
if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency1 := combination:currency1;
}
return currency1;
}
setDboGuid
Nazwa |
setDboGuid |
Opis |
setDboGuid przypisuje wartość do innego pola typu Classification. |
Podpisy |
Boolean setDboGuid(String schemaName, CisObject object, String attributeName, String path) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. path to pełna ścieżka klasyfikacji, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje klasyfikację ze ścieżką path do dodatkowego pola. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli dla innego pola zdefiniowano ograniczenia, a ścieżka jest niedozwolona, funkcja zwraca wartość false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboGuid(„EXTItem”, loadItem(„10010”), „NACE”, „J-62-01”) przypisuje klasyfikację o określonej ścieżce do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
setDboGuid(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) próbuje przypisać pusty ciąg znaków do dodatkowego pola jako domyślną wartość typu danych String. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Ponieważ funkcja setDboGuid oczekuje ciągu znaków, ale dboGuid zwraca identyfikator Guid, nie można przypisać wartości innego pola do innego pola bez dodatkowego skryptu. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboGuid, dboListGuid, setDboListGuid, validateDboGuid |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_path := parameters.PATH;
var dboSuccess := false;
dboSuccess := setDboGuid(„EXTPartner”, p_partner, p_name, p_path);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboNumber
Nazwa |
setDboNumber |
Opis |
setDboNumber przypisuje wartość do innego pola typu Decimal. |
Podpisy |
Boolean setDboNumber(String schemaName, CisObject object, String attributeName, Number decimal) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. decimal to liczba, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje liczbę decimal do dodatkowego pola. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli dla pola dodatkowego zdefiniowano ograniczenia, a liczba jest nieprawidłowa, funkcja zwraca wartość false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboNumber(„EXTPartner”, loadPartner(„70010”), „YEAR_OF_BIRTH”, 2000) przypisuje liczbę 2000 do dodatkowego pola dla partnera. setDboNumber(„EXTPartner”, loadPartner(„10010”), „RETURNS”, dboNumber(„EXTPartner”, loadPartner(„70010”), „RETURNS”) + 1) zwiększa wartość drugiego pola o 1. |
Kontekst |
OLTP |
Uwagi |
setDboNumber(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number)) próbuje przypisać domyślną wartość 0 typu danych Number do dodatkowego pola. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboNumber, dboListGuid, setDboListNumber, validateDboNumber |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_number := parameters.NUMBER;
var dboSuccess := false;
dboSuccess := setDboNumber(„EXTPartner”, p_partner, p_name, p_number);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboQuantity
Nazwa |
setDboQuantity |
Opis |
setDboQuantity przypisuje wartość do innego pola typu Quantity. |
Podpisy |
Boolean setDboQuantity(String schemaName, CisObject object, String attributeName, CisObject(com.cisag.app.general.obj.Quantity) quantity) Boolean setDboQuantity(String schemaName, CisObject object, String attributeName, Number amount, Guid uom) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amount to ilość, która ma zostać przypisana do pola dodatkowego. uom to identyfikator jednostki miary. quantity to część, która ma zostać przypisana. |
Wynik |
Funkcja przypisuje ilość do pola dodatkowego. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a ilość jest nieprawidłowa, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. Nawet jeśli uom nie jest ani null, ani prawidłową jednostką miary, zwracana jest wartość null. |
Przykłady |
setDboQuantity(„EXTItem”, loadItem(„10010”), „MAX_LOAD”, 1000, loadUnit(„kg”):guid) przypisuje ilość 1000 kg do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
setDboQuantity(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number), ZERO_GUID) próbuje przypisać domyślną wartość 0 typu danych Number i Guid ZERO_GUID do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboQuantity, dboListQuantity, setDboListQuantity, validateDboQuantity |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_amount := parameters.AMOUNT;
var p_uom := parameters.UOM;
var dboSuccess := false;
var uomGuid := loadUom(p_uom):guid;
if (isNull(uomGuid))
uomGuid := loadUom(„kg”):guid;
dboSuccess := setDboQuantity(„EXTPartner”, p_partner, p_name, p_amount, p_uom);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboString
Nazwa |
setDboString |
Opis |
setDboString przypisuje wartość do innego pola typu Text, Email address lub Uniform Resource Locator (URL). |
Podpisy |
Boolean setDboString(String schemaName, CisObject object, String attributeName, String text) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. text to ciąg znaków, który ma zostać przypisany do dodatkowego pola. |
Wynik |
Funkcja przypisuje ciąg znaków do pola dodatkowego. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli dla pola dodatkowego zdefiniowano ograniczenia, a ciąg znaków jest nieprawidłowy, funkcja zwraca wartość false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboDomesticAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, 10000) przypisuje kwotę lub cenę 10000 w walucie wewnętrznej do dodatkowego pola dla partnera. setDboDomesticAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, dboDomesticAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”) + 1000) zwiększa kwotę lub cenę w walucie wewnętrznej o 1000. |
Kontekst |
OLTP |
Uwagi |
setDboString(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) próbuje przypisać pusty ciąg znaków do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboString, dboListString, setDboListString, validateDboString |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_text := parameters.TEXT;
var dboSuccess := false;
dboSuccess := setDboString(„EXTPartner”, p_partner, p_name, p_text);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboText
Nazwa |
setDboText |
Opis |
setDboText przypisuje wartość do innego pola typu Long text. |
Podpisy |
Boolean setDboText(String schemaName, CisObject object, String attributeName, String longText, Number contentType) Boolean setDboText(String schemaName, CisObject object, String attributeName, String longText, Number contentType, String language) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. longText to ciąg znaków, który ma zostać przypisany do dodatkowego pola. contentType jest wartością z ValueSet com.cisag.sys.gui.HTMLEditorContentValueSet. language to kod ISO języka treści. |
Wynik |
Funkcja przypisuje ciąg znaków text do pola dodatkowego. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli dla innego pola zdefiniowano ograniczenia, a ciąg znaków jest nieprawidłowy, funkcja zwraca wartość false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboText(„EXTItem”, loadItem(„10010”), „OLD_TEXT”, 2, loadItem(„10010”):longDescription, getContentLanguage()) przypisuje długi opis w języku treści bieżącego kontekstu do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
setDboText(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) próbuje przypisać pusty ciąg znaków do dodatkowego pola. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboText, dboTextContentType |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_contentType := parameters.CONTENT_TYPE;
var p_language := parameters.LANGUAGE;
var p_text := parameters.TEXT;
var dboSuccess := false;
if (isNull(valueSetName(„com.cisag.sys.gui.HTMLEditorContentValueSet”, p_contentType)))
p_contentType := 2; /* tylko tekst */
if (isNull(getByBusinessKey(CisObject(com.cisag.app.general.obj.Language), p_language)))
dboSuccess := setDboText(„EXTPartner”, p_partner, p_name, p_text, p_contentType);
inny
dboSuccess := setDboText(„EXTPartner”, p_partner, p_name, p_text, p_contentType, p_language);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboTimestamp
Nazwa |
setDboTimestamp |
Opis |
setDboTimestamp przypisuje wartość do innego pola typu Date and time. |
Podpisy |
Boolean setDboTimestamp(String schemaName, CisObject object, Timestamp attributeName, Timestamp timestamp) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. timestamp to wartość, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje czas timestamp do dodatkowego pola. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a timestamp nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboTimestamp(„EXTItem”, loadItem(„10010”), „LAST_DATE”, now()) przypisuje bieżący czas do drugiego pola. |
Kontekst |
OLTP |
Uwagi |
setDboTimestamp(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Timestamp)) próbuje przypisać wartość domyślną UNDEFINED_DATE typu danych CisDate do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboTimestamp, dboListTimestamp, setDboListTimestamp, validateDboTimestamp |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_offset := parameters.OFFSET;
var dboSuccess := false;
var oldDboValue := dboTimestamp(„EXTPartner”, p_partner, p_name);
if (oldDboValue = UNDEFINED_DATE)
oldDboValue := now();
var newDboValue := addDays(oldDboValue, p_offset);
var dboSuccess := setDboTimestamp(„EXTPartner”, p_partner, p_name, newDboValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboValueSet
Nazwa |
setDboValueSet |
Opis |
setDboValueSet przypisuje numeryczną identyfikację wyboru do innego pola typu Selection field. |
Podpisy |
Boolean setDboValueSet(String schemaName, CisObject object, ValueSet attributeName, Number id) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. id to numeryczny identyfikator wyboru, który ma zostać przypisany do dodatkowego pola. |
Wynik |
Funkcja przypisuje wybór id do dodatkowego pola. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli id nie jest prawidłową wartością ValueSet, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboValueSet(„EXTItem”, loadItem(„10010”), „APPROVAL”, 0) przypisuje liczbę 0 do dodatkowego pola dla partnera w celu usunięcia wyboru. |
Kontekst |
OLTP |
Uwagi |
setDboValueSet(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number)) próbuje przypisać domyślną wartość 0 typu danych Number do dodatkowego pola. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_id := parameters.ID;
var dboSuccess := false;
if (isNull(valueSetName(„com.cisag.app.general.docman.DocumentStatus”, p_id)))
p_id := 0; /* domyślnie */
dboSuccess := setDboValueSet(„EXTPartner”, p_partner, p_name, p_id);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboValueSetName
Nazwa |
setDboValueSetName |
Opis |
setDboValueSetName przypisuje nazwę selekcji do innego pola typu Selection field. |
Podpisy |
Boolean setDboValueSetName(String schemaName, CisObject object, ValueSet attributeName, String constant) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. constant to nazwa selekcji, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje constant wyboru do dodatkowego pola. Jeśli przypisanie powiodło się, funkcja zwraca wartość true. Jeśli constant nie jest prawidłową wartością ValueSet, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboValueSetName(„EXTItem”, loadItem(„10010”), „APPROVAL”, „APPPROVED”) przypisuje wartość APPROVED do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
setDboValueSetName(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) próbuje przypisać pusty ciąg znaków do dodatkowego pola jako domyślną wartość typu danych Number. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboListValueSet, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_constant := parameters.CONSTANT;
var dboSuccess := false;
var dboSuccess := setDboValueSet(„EXTPartner”, p_partner, p_name, p_constant);
if (not isNull(dboSuccess) and not dboSuccess)
dboSuccess := setDboValueSet(„EXTPartner”, p_partner, p_name, 0);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
Funkcje ustawiające dla list wartości
setDboListCisDate
Nazwa |
setDboListCisDate |
Opis |
setDboListCisDate przypisuje listę wartości do innego pola typu Date. |
Podpisy |
Boolean setDboListCisDate(String schemaName, CisObject object, String attributeName, CisDate[] dateList[]) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. dateList to lista wartości, która ma zostać przypisana do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości dateList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboCisDate jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListCisDate(„EXTItem”, loadItem(„10010”), „DATES”, list(addDays(today(), -1), today(), addDays(today(), 1))) przypisuje listę wartości z datą wczorajszą, dzisiejszą i jutrzejszą do drugiego pola. |
Kontekst |
OLTP |
Uwagi |
setDboListCisDate(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(CisDate)) próbuje przypisać wartość domyślną null typu danych CisDate do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboCisDate, dboListCisDate, setDboCisDate, validateDboCisDate |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var dboSuccess := false;
var newElement := today();
var valueList := dboListCisDate(„EXTPartner”, p_partner, p_name);
if (isNull(valueList[0]))
valueList[0] := newElement;
inny
add(valueList, newElement);
dboSuccess := setDboListCisDate(„EXTPartner”, p_partner, p_name, valueList);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListCisObject
Nazwa |
setDboListCisObject |
Opis |
setDboListCisObject przypisuje listę wartości do innego pola typu Business Entity. |
Podpisy |
Boolean setDboListCisObject(String schemaName, CisObject object, String attributeName, CisObject[] valueList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. valueList to lista wartości, która ma zostać przypisana do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości valueList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboCisObject jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListCisObject(„EXTItem”, loadItem(„10010”), „APPROVERS”, list(loadPartner(„70010”))) przypisuje listę wartości z partnerem 70010 do pola dodatkowego. setDboListCisObject(„EXTItem”, loadItem(„10010”), „APPROVERS”, union(minus(dboListCisObject(„EXTItem”, loadItem(„10010”), „APPROVERS”), list(new(Guid))), list(loadPartner(„70010”)))) dodaje partnera 70010 do listy wartości. setDboListCisObject(„EXTItem”, loadItem(„10010”), „APPROVERS”, minus(dboListCisObject(„EXTItem”, loadItem(„10010”), „APPROVERS”), list(loadPartner(„70010”)))) usuwa partnera 70010 z listy wartości. |
Kontekst |
OLTP |
Uwagi |
setDboListCisObject(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(CisObject)) próbuje przypisać wartość domyślną null typu danych CisObject do dodatkowego pola. Należy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboCisObject, dboListCisObject, setDboCisObject, validateDboCisObject |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var dboSuccess := false;
var newElement := today();
var valueList := dboListCisDate(„EXTPartner”, p_partner, p_name);
if (isNull(valueList[0]))
valueList[0] := newElement;
inny
add(valueList, newElement);
dboSuccess := setDboListCisDate(„EXTPartner”, p_partner, p_name, valueList);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListDomesticAmount
Nazwa |
setDboListDomesticAmount |
Opis |
setDboListDomesticAmount przypisuje listę wartości do innego pola typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej. |
Podpisy |
Boolean setDboListDomesticAmount(String schemaName, CisObject object, String attributeName, Number[] domesticAmountList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. domesticAmountList to lista wartości, która ma zostać przypisana do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości domesticAmountList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca wartość false. Funkcja validateDboDomesticAmount jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListDomesticAmount(„EXTItem”, loadItem(„10010”), „AMOUNTS”, list(500, 600)) przypisuje listę wartości z wartościami 500 i 600 do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
setDboListDomesticAmount(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(Number))) próbuje przypisać domyślną wartość 0 typu danych Number do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboDomesticAmount, dboListDomesticAmount, setDboDomesticAmount, validateDboDomesticAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_amount1 := parameters.AMOUNT1;
var p_amount2 := parameters.AMOUNT2;
var dboSuccess := false;
dboSuccess := setDboListDomesticAmount(„EXTPartner”, p_partner, p_name, list(p_amount1, p_amount2));
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListForeignAmount
Nazwa |
setDboListForeignAmount |
Opis |
setDboListForeignAmount przypisuje listę wartości do innego pola typu Amount lub Price. |
Podpisy |
Boolean setDboListForeignAmount(String schemaName, CisObject object, String attributeName, CisObject( com.cisag.app.general.obj.ForeignAmount)[] foreignAmountList) Boolean setDboListForeignAmount(String schemaName, CisObject object, String attributeName, Number[] amountList, Guid[] currencyList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amountList to lista wartości z kwotami lub cenami w walucie obcej, które mają zostać przypisane do drugiego pola. currencyList to lista wartości z identyfikatorem walut obcych. foreignAmountList to lista wartości z częściami, które mają zostać przypisane. |
Wynik |
Funkcja przypisuje listę wartości z kwotami lub cenami w walucie obcej do drugiego pola. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboForeignAmount jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListForeignAmount(„EXTItem”, loadItem(„10010”), „AMOUNTS”, list(500, 600), list(loadCurrency(„SEK”), loadCurrency(„NOK”)) przypisuje listę wartości z wartościami 500 SEK i 600 NOK do drugiego pola. |
Kontekst |
OLTP |
Uwagi |
setDboListForeignAmount(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(Number)), list(new(Guid)))) próbuje przypisać domyślną wartość 0 typu danych Number i domyślną wartość null typu danych Guid do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboForeignAmount, dboListForeignAmount, setDboForeignAmount, validateDboForeignAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_amount1 := parameters.AMOUNT1;
var p_amount2 := parameters.AMOUNT2;
var p_currency1 := parameters.CURRENCY1;
var p_currency2 := parameters.CURRENCY2;
var dboSuccess := false;
var currency1Guid := loadCurrency(p_currency1):guid;
if (isNull(currency1Guid))
currency1Guid := getCurrency1();
var currency2Guid := loadCurrency(p_currency2):guid;
if (isNull(currency2Guid))
currency2Guid := getCurrency1();
dboSuccess := setDboListForeignAmount(„EXTPartner”, p_partner, p_name, list(p_amount1, p_amount2), list(currency1Guid, currency2Guid));
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
function getCurrency1() as Guid
{
var currency1 as Guid;
var company := loadOrganisation(getCustomizingValue(„com.cisag.app.General”):company);
var baseFunction := getCustomizingValue(„com.cisag.app.general.Base”, company:guid);
if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency1 := combination:currency1;
}
return currency1;
}
setDboListGuid
Nazwa |
setDboListGuid |
Opis |
setDboListGuid przypisuje listę wartości do innego pola typu Classification. |
Podpisy |
Boolean setDboListGuid(String schemaName, CisObject object, String attributeName, String[] pathList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. pathList to lista wartości zawierająca ścieżki klasyfikacji, które mają zostać przypisane do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości pathList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboGuid jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListGuid(„EXTItem”, loadItem(„10010”), „NACE”, list(„J-62-01”, „P-85-5”)) przypisuje klasyfikacje z określonymi ścieżkami do dodatkowego pola. setDboListGuid(„EXTItem”, loadItem(„10010”), „NACE”, union(minus(dboListGuid(„EXTItem”, loadItem(„10010”), „NACE”)), list(new(Guid))), list(„J-62-02”))) dodaje klasyfikację o określonej ścieżce do listy wartości. setDboListGuid(„EXTItem”, loadItem(„10010”), „NACE”, minus(dboListGuid(„EXTItem”, loadItem(„10010”), „NACE”), list(„P-85-5”))) usuwa klasyfikację o określonej ścieżce z listy wartości. |
Kontekst |
OLTP |
Uwagi |
setDboListGuid(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(String)) próbuje przypisać do dodatkowego pola listę z pustym ciągiem znaków jako domyślną wartością typu danych String. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Ponieważ funkcja setDboListGuid oczekuje listy ciągów znaków, ale dboListGuid zwraca listę identyfikatorów, nie można przypisać wartości innego pola do innego pola bez dodatkowego skryptowania. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboGuid, dboListGuid, setDboGuid, validateDboGuid |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_path := parameters.PATH;
var dboSuccess := false;
dboSuccess := setDboListGuid(„EXTPartner”, p_partner, p_name, union(minus(dboListGuid(„EXTPartner”, p_partner, „NACE”)), list(new(Guid))), list(p_path)));
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListNumber
Nazwa |
setDboListNumber |
Opis |
setDboListNumber przypisuje listę wartości do innego pola typu Decimal. |
Podpisy |
Boolean setDboListNumber(String schemaName, CisObject object, String attributeName, Number[] numberList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż „com.cisag”, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. numberList to lista wartości, która ma zostać przypisana do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości numberList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboNumber jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListNumber(„EXTItem”, loadItem(„10010”), „NUMBERS”, list(1, 2, 3)) przypisuje listę wartości o wartościach 1, 2 i 3 do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
setDboListNumber(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(Number)) próbuje przypisać domyślną wartość 0 typu danych Number do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działań. |
Zobacz także |
dboNumber, dboListNumber, setDboNumber, validateDboNumber |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_number := parameters.NUMBER;
var dboSuccess := false;
var valueList := dboListNumber(„EXTPartner”, p_partner, p_name);
add(valueList, p_number);
dboSuccess := setDboListNumber(„EXTPartner”, p_partner, p_name, valueList);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListQuantity
Nazwa |
setDboListQuantity |
Opis |
setDboListQuantity przypisuje listę wartości do innego pola typu Quantity. |
Podpisy |
Boolean setDboListQuantity(String schemaName, CisObject object, String attributeName, CisObject(com.cisag.app.general.obj.Quantity)[] quantityList) Boolean setDboListQuantity(String schemaName, CisObject object, String attributeName, Number[] amountList, Guid[] uomList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amountList to lista wartości z ilościami, które mają zostać przypisane do pola dodatkowego. uomList to lista wartości z identyfikatorem jednostki miary. quantityList to lista wartości z częściami, które mają zostać przypisane. |
Wynik |
Funkcja przypisuje listę wartości z ilościami do drugiego pola. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboQuantity jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListQuantity(„EXTItem”, loadItem(„10010”), „TIME”, list(5), list(loadUom(„day”)) przypisuje listę wartości z ilością 5 dni do drugiego pola. |
Kontekst |
OLTP |
Uwagi |
setDboListQuantity(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(Number)), list(ZERO_GUID)) próbuje przypisać wartość domyślną 0 dla typu danych Number i wartość ZERO_GUID dla typu danych Guid do dodatkowego pola. Należy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboQuantity, dboListQuantity, setDboQuantity, validateDboQuantity |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_amount1 := parameters.AMOUNT1;
var p_amount2 := parameters.AMOUNT2;
var p_uom1 := parameters.UOM1;
var p_uom2 := parameters.UOM2;
var dboSuccess := false;
var defaultUomGuid := loadUom(„kg”):guid;
var uom1Guid := loadUom(p_uom1):guid;
if (isNull(uom1Guid))
uom1Guid := defaultUomGuid;
var uom2Guid := loadUom(p_uom2):guid;
if (isNull(uom2Guid))
uom2Guid := defaultUomGuid;
dboSuccess := setDboListQuantity(„EXTPartner”, p_partner, p_name, list(p_amount1, p_amount2), list(uom1Guid, uom2Guid));
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListString
Nazwa |
setDboListString |
Opis |
setDboListString przypisuje wartość do innego pola typu Text, Email address lub Uniform Resource Locator (URL). |
Podpisy |
Boolean setDboListString(String schemaName, CisObject object, String attributeName, String[] textList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. textList to lista wartości, która ma zostać przypisana do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości textList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboString jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListText(„EXTItem”, loadItem(„10010”), „STRINGS”, list(„A”, „B”, „C”)) przypisuje listę wartości z określonymi wartościami do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
setDboListString(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(String)) próbuje przypisać pusty ciąg znaków do dodatkowego pola jako domyślną wartość typu danych Number. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboString, dboListString, setDboString, validateDboString |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_text := parameters.TEXT;
var dboSuccess := false;
if (p_text = „”)
p_text := „[pusty ciąg]”;
var valueList := dboListString(„EXTPartner”, p_partner, p_name);
if (valueList[0] = new(String))
valueList[0] := p_text;
inny
add(valueList, p_text);
dboSuccess := setDboString(„EXTPartner”, p_partner, p_name, valueList);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListTimestamp
Nazwa |
setDboListTimestamp |
Opis |
setDboListTimestamp przypisuje listę wartości do innego pola typu Date. |
Podpisy |
Boolean setDboListTimestamp(String schemaName, CisObject object, Timestamp attributeName, Timestamp[] timestampList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. timestampList to lista wartości, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje listę wartości timestampList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboTimestamp jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListTimestamp(„EXTItem”, parameters.object, „CHANGE_HISTORY”, union(minus(dboListTimestamp(„EXTItem”, parameters.object, „CHANGE_HISTORY”)), list(new(Timestamp))), list(now())) dodaje nowy element z aktualnym czasem do listy wartości elementu, do którego odwołuje się parametr zdarzenia parameters.object. Funkcja minus usuwa domyślną wartość typu danych Timestamp, którą funkcja dboListTimestamp zwraca, jeśli do dodatkowego pola nie jest przypisana żadna wartość. |
Kontekst |
OLTP |
Uwagi |
setDboListTimestamp(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(Timestamp))) próbuje przypisać wartość domyślną UNDEFINED_DATE typu danych Timestamp do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub oryginalnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboTimestamp, dboListTimestamp, setDboTimestamp, validateDboTimestamp |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var dboSuccess := false;
var newElement := now();
var valueList := dboListTimestamp(„EXTPartner”, p_partner, p_name);
if (valueList[0] = new(Timestamp))
valueList[0] := newElement;
inny
add(valueList, newElement);
dboSuccess := setDboListTimestamp(„EXTPartner”, p_partner, p_name, valueList);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListValueSet
Nazwa |
setDboListValueSet |
Opis |
setDboListValueSet przypisuje listę wartości z numeryczną identyfikacją wyboru do innego pola typu Selection field. |
Podpisy |
Boolean setDboListValueSet(String schemaName, CisObject object, ValueSet attributeName, Number[] idList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. idList to lista wartości, która ma zostać przypisana do pola dodatkowego. |
Wynik |
Funkcja przypisuje listę wartości idList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboValueSet jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListValueSet(„EXTItem”, loadItem(„10010”), „SELECTION”, list(1, 2, 3)) przypisuje listę wartości z numerycznymi identyfikatorami 1, 2 i 3 do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
setDboListValueSet(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(Number)) próbuje przypisać domyślną wartość 0 typu danych Number do dodatkowego pola. Nalezy porównać to z funkcją resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSetName, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_id := parameters.ID;
var dboSuccess := false;
var valueList := dboListNumber(„EXTPartner”, p_partner, p_name);
if (valueList[0] = new(Number))
valueList[0] := p_id;
inny
add(valueList, p_id);
dboSuccess := setDboListNumber(„EXTPartner”, p_partner, p_name, valueList);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
setDboListValueSetName
Nazwa |
setDboListtValueSetName |
Opis |
setDboListValueSetName przypisuje listę wartości ze stałymi nazwami selekcji do innego pola typu Selection field. |
Podpisy |
Boolean setDboListValueSetName(String schemaName, CisObject object, ValueSet attributeName, String[] constantList) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. constantList to lista wartości, która ma zostać przypisana do dodatkowego pola. |
Wynik |
Funkcja przypisuje listę wartości constantList do pola dodatkowego. Jeśli przypisanie powiodło się dla wszystkich elementów listy wartości, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i co najmniej jeden element listy wartości jest nieprawidłowy, funkcja zwraca false. Funkcja validateDboValueSetName jest dostępna do sprawdzania poszczególnych elementów. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
setDboListValueSetName(„EXTItem”, loadItem(„10010”), „SELECTION”, list(„ONE”, „TWO”, „THREE”)) przypisuje listę wartości ze stałymi nazwami selekcji do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
setDboListValueSetName(„EXTItem”, loadItem(„10010”), „MY_FIELD”, list(new(String)) próbuje przypisać pusty ciąg znaków do dodatkowego pola jako domyślną wartość typu danych String. Porównaj to z funkcją resetDbo, która resetuje pole dodatkowe do jego domyślnej lub oryginalnej wartości. Funkcja nie wywołuje żadnych indywidualnych kontroli dla dodatkowego pola. Dlatego należy wprowadzić wszystkie niezbędne kontrole w deklaracjach definicji działania. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, validateDboValueSet, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_constantNames := parameters.CONSTANTS;
var dboSuccess := false;
var constantNames := split(p_constantNames, „,”);
if (isEmpty(constantNames))
constantNames := list(new(String));
dboSuccess := setDboListValueSetName(„EXTPartner”, p_partner, p_name, constantNames);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
/* Dzieli „p_text” na tablicę przy każdym wystąpieniu „p_separator” */
function split(p_text as String, p_separator as String) as String[]
{
if (p_separator = „”)
p_separator := ” „;
var increment := length(p_separator);
var sep as String;
var word as String;
var r_wordList as String[];
var i := 0;
var startPos := 0;
while (i + increment – 1 < length(p_text)) {
sep := substring(p_text, i, i + increment);
if (sep = p_separator) {
word := trim(substring(p_text, startPos, i));
i := i + przyrost;
startPos := i;
if (word <> „” and word <> p_separator)
add(r_wordList, word);
} else {
i := i + 1;
}
}
word := substring(p_text, startPos);
if (word <> „” and word <> p_separator)
add(r_wordList, word);
return r_wordList;
}
Funkcje sprawdzania poprawności
validateDboCisDate
Nazwa |
validateDboCisDate |
Opis |
validateDboCisDate sprawdza, czy CisDate można przypisać do innego pola typu Date. |
Podpisy |
Boolean validateDboCisDate(String schemaName, CisObject object, String attributeName, CisDate date) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. date to wartość, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy data date może zostać przypisana do pola dodatkowego. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola i date nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboCisDate(„EXTItem”, loadItem(„10010”), „LAST_DATE”, today()) sprawdza, czy dzisiejsza data jest prawidłową wartością dla drugiego pola. |
Kontekst |
OLTP |
Uwagi |
validateDboCisDate(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(CisDate)) sprawdza, czy wartość domyślna null typu danych CisDate jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy porównać także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboCisDate, dboListCisDate, setDboCisDate, setDboListCisDate |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := today();
var dboSuccess := false;
dboSuccess := validateDboCisDate(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboCisObject
Nazwa |
validateDboCisObject |
Opis |
validateDboCisObject sprawdza, czy wartość może zostać przypisana do innego pola typu Business Entity. |
Podpisy |
Boolean validateDboCisObject(String schemaName, CisObject object, String attributeName, CisObjectReference objectReference) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. objectReference to wartość, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy jednostka biznesowa, do której odwołuje się objectReference, może zostać przypisana do dodatkowego pola. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboCisObject(„EXTItem”, parameters.object, „SUBMITTER”, getByPrimaryKey(CisObject( com.cisag.app.general.obj.UserAssignment), parameters.userGuid)->Partner) sprawdza, czy partner użytkownika, który wywołał zdarzenie typu Business Entity lub User Action jest prawidłową wartością dla dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
validateDboCisObject(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(CisObject)) sprawdza, czy wartość domyślna null typu danych CisObject jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy porównać także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboCisObject, dboListCisObject, setDboCisObject, setDboListCisObject |
function create()
{
var p_name := parameters.NAME;
var p_item := loadItem(parameters.ITEM);
var p_user := parameters.USER;
var testValue := loadPartnerOfUser(userGuid(p_user));
var dboSuccess := false;
dboSuccess := validateDboCisObject(„EXTItem”, item, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
function loadPartnerOfUser(user as Guid) as CisObject(com.cisag.app.general.obj.Partner)
{
back
getByPrimaryKey(
CisObject(com.cisag.app.general.obj.UserAssignment),
user)->Partner;
}
validateDboDomesticAmount
Nazwa |
validateDboDomesticAmount |
Opis |
validateDboDomesticAmount sprawdza, czy wartość może zostać przypisana do innego pola typu Kwota w walucie wewnętrznej lub Cena w walucie wewnętrznej. |
Podpisy |
Boolean validateDboDomesticAmount(String schemaName, CisObject object, String attributeName, Number amount) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amount to wartość, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy amount może zostać przypisana do pola dodatkowego. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboDomesticAmount(„EXTItem”, loadItem(„10010”), „INITIAL_VALUE”, 100) sprawdza, czy 100 jest dopuszczalną wartością dla pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboDomesticAmount(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number)) sprawdza, czy wartość domyślna 0 typu danych Number jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy porównać także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboDomesticAmount, dboListDomesticAmount, setDboDomesticAmount, setDboListDomesticAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := parameters.AMOUNT;
var dboSuccess := false;
dboSuccess := validateDboDomesticAmount(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboForeignAmount
Nazwa |
validateDboForeignAmount |
Opis |
validateDboForeignAmount sprawdza, czy wartość może zostać przypisana do innego pola typu Amount lub Price. |
Podpisy |
Boolean validateDboForeignAmount(String schemaName, CisObject object, String attributeName, CisObject(com.cisag.app.general.obj.ForeignAmount) foreignAmount) Boolean validateDboForeignAmount(String schemaName, CisObject object, String attributeName, Number amount, Guid currency) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amount to kwota lub cena w walucie obcej, która ma zostać sprawdzona. currency to identyfikator waluty obcej. foreignAmount to część, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy kwota lub cena w walucie obcej może zostać przypisana do pola dodatkowego. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. Nawet jeśli currency nie jest ani null, ani prawidłową walutą, zwracana jest wartość null. |
Przykłady |
validateDboForeignAmount(„EXTPartner”, loadPartner(„20010”), „CREDIT_LIMIT”, 10000, loadCurrency(„USD”):guid) sprawdza, czy kwota lub cena 10000 USD może być przypisana do dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
validateDboForeignAmount(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number), new(Guid)) sprawdza, czy wartość domyślna 0 typu danych Number i wartość domyślna null typu danych Guid jest dopuszczalną kwotą lub ceną dla dodatkowego pola, tj. czy dodatkowe pole może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboForeignAmount, dboListForeignAmount, setDboForeignAmount, setDboListForeignAmount |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testAmount := parameters.AMOUNT;
var testCurrency := loadCurrency(parameters.CURRENCY):guid;
var dboSuccess := false;
dboSuccess := validateDboForeignAmount(„EXTPartner”, p_partner, p_name, testAmount, testCurrency);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboGuid
Nazwa |
validateDboGuid |
Opis |
validateDboGuid sprawdza, czy wartość może zostać przypisana do innego pola typu Classification. |
Podpisy |
Boolean validateDboGuid(String schemaName, Guid object, String attributeName, String path) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. path to ścieżka klasyfikacji, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy klasyfikacja ze ścieżką path może zostać przypisana do dodatkowego pola. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboGuid(„EXTItem”, loadItem(„10010”), „NACE”, „J-56-1-2”) sprawdza, czy klasyfikacja jest dopuszczalną wartością dla pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboGuid(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) sprawdza, czy pusty ciąg znaków jako wartość domyślna typu danych String jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboGuid, dboListGuid, setDboGuid, setDboListGuid |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := parameters.PATH;
var dboSuccess := false;
dboSuccess := validateDboGuid(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboNumber
Nazwa |
validateDboNumber |
Opis |
validateDboNumber sprawdza, czy wartość może zostać przypisana do innego pola typu Decimal. |
Podpisy |
Boolean validateDboNumber(String schemaName, CisObject object, String attributeName, Number decimal) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. decimal to wartość, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy do pola dodatkowego można przypisać wartość decimal. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboNumber(„EXTItem”, loadItem(„10010”), „SIZE”, 100) sprawdza, czy 100 jest dopuszczalną wartością dla pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboNumber(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number)) sprawdza, czy wartość domyślna 0 typu danych Number jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboNumber, dboListNumber, setDboNumber, setDboListNumber |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := parameters.NUMBER;
var dboSuccess := false;
dboSuccess := validateDboNumber(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboQuantity
Nazwa |
validateDboQuantity |
Opis |
validateDboQuantity sprawdza, czy wartość może zostać przypisana do innego pola typu Quantity. |
Podpisy |
Boolean validateDboQuantity(String schemaName, CisObject object, String attributeName, CisObject(com.cisag.app.general.obj.Quantity) quantity) Boolean validateDboQuantity(String schemaName, CisObject object, String attributeName, Number amount, Guid uom) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. amount to ilość do sprawdzenia. uom to identyfikator jednostki miary. quantity to część, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy ilość może zostać przypisana do pola dodatkowego. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. Nawet jeśli uom nie jest ZERO_GUID ani prawidłową jednostką miary, zwracana jest wartość null. |
Przykłady |
validateDboQuantity(„EXTItem”, loadItem(„10010”), „DEAD_WEIGHT”, 10000, loadUom(„kg”):guid) sprawdza, czy ilość 10 000 kg może być przypisana do pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboQuantity(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number), ZERO_GUID) sprawdza, czy wartość domyślna 0 typu danych Number i wartość ZERO_GUID jest dopuszczalną ilością dla dodatkowego pola, tj. czy dodatkowe pole może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboQuantity, dboListQuantity, setDboQuantity, setDboListQuantity |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testAmount := parameters.AMOUNT;
var testUom := loadUom(parameters.UOM):guid;
var dboSuccess := false;
dboSuccess := validateDboQuantity(„EXTPartner”, p_partner, p_name, testAmount, testUom);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboString
Nazwa |
validateDboString |
Opis |
validateDboString sprawdza, czy wartość może być przypisana do innego pola typu Text, Email address lub Uniform Resource Locator (URL). |
Podpisy |
Boolean validateDboString(String schemaName, CisObject object, String attributeName, String text) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. text to wartość, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy do pola dodatkowego można przypisać text. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboString(„EXTItem”, loadItem(„10010”), „APPROVAL_STATUS”, „APPROVED”) sprawdza, czy ciąg znaków jest dopuszczalną wartością dla pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboString(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) sprawdza, czy pusty ciąg znaków jako wartość domyślna typu danych String jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Zobacz także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboString, dboListString, setDboString, setDboListString |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := parameters.TEXT;
var dboSuccess := false;
dboSuccess := validateDboString(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboTimestamp
Nazwa |
validateDboTimestamp |
Opis |
validateDboTimestamp sprawdza, czy wartość może zostać przypisana do innego pola typu Date and time. |
Podpisy |
Boolean validateDboTimestamp(String schemaName, CisObject object, String attributeName, Timestamp time) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. time to wartość, która ma zostać sprawdzona. |
Wynik |
Funkcja sprawdza, czy zdarzenie time może zostać przypisane do dodatkowego pola. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a time nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboTimestamp(„EXTItem”, loadItem(„10010”), „LAST_DATE”, now()) sprawdza, czy aktualny czas jest prawidłową wartością dla dodatkowego pola. |
Kontekst |
OLTP |
Uwagi |
validateDboTimestamp(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Timestamp)) sprawdza, czy wartość domyślna UNDEFINED_DATE typu danych Timestamp jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboTimestamp, dboListTimestamp, setDboTimestamp, setDboListTimestamp |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := now();
var dboSuccess := false;
dboSuccess := validateDboCisDate(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboValueSet
Nazwa |
validateDboValueSet |
Opis |
validateDboValueSet sprawdza, czy liczba może zostać przypisana do innego pola typu selection field. |
Podpisy |
Boolean validateDboValueSet(String schemaName, CisObject object, String attributeName, Number id) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykłady nazw schematów to EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. id to numeryczny identyfikator wyboru, który ma zostać sprawdzony. |
Wynik |
Funkcja sprawdza, czy id można przypisać do dodatkowego pola. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboValueSet(„EXTItem”, loadItem(„10010”), „APPROVAL_STATUS”, 50) sprawdza, czy 50 jest dopuszczalną wartością dla pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboValueSet(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(Number)) sprawdza, czy wartość domyślna 0 typu danych Number jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSetName |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var testValue := parameters.ID;
var dboSuccess := false;
dboSuccess := validateDboValueSet(„EXTPartner”, p_partner, p_name, testValue);
result.IS_NULL := isNull(dboSuccess);
result.IS_SUCCESS := cast(Boolean, first(dboSuccess, false));
}
validateDboValueSetName
Nazwa |
validateDboValueSetName |
Opis |
validateDboValueSetName sprawdza, czy ciąg znaków może zostać przypisany do innego pola typu Selection field. |
Podpisy |
Boolean validateDboValueSetName(String schemaName, CisObject object, String attributeName, String constant) |
Parametry |
schemaName identyfikuje drugie pole. Nazwa schematu zaczyna się od EXT, po którym następuje nazwa obiektu biznesowego bez jego przestrzeni nazw. Jeśli obiekt biznesowy znajduje się w przestrzeni nazw innej niż com.cisag, druga część przestrzeni nazw jest wstawiana wielkimi literami między EXT a nazwą obiektu biznesowego. Przykładami nazw schematów są EXTItem dla obiektu biznesowego com.cisag.app.general.obj.Item EXTPurchaseItem dla obiektu biznesowego com.cisag.app.purchasing.obj.PurchaseItem EXTSEMObjectAccount dla obiektu biznesowego com.sem.ext.app.fin.financialaccounting.obj.ObjectAccount object to instancja obiektu biznesowego. attributeName to nazwa dodatkowego pola. constant to stała nazwa zaznaczenia, które ma zostać sprawdzone. |
Wynik |
Funkcja sprawdza, czy do pola dodatkowego można przypisać wartość constant. Jeśli sprawdzenie zakończyło się pomyślnie, funkcja zwraca wartość true. Jeśli ograniczenia są zdefiniowane dla innego pola, a object nie jest dozwolone, funkcja zwraca false. |
Źródła błędów |
Jeśli schemat nie istnieje pod określoną nazwą lub używa typu pola, który nie pasuje do funkcji, zwracana jest wartość null. |
Przykłady |
validateDboValueSetName(„EXTItem”, loadItem(„10010”), „APPROVAL_STATUS”, „APPROVED”) sprawdza, czy APPROVED jest dopuszczalną wartością dla pola dodatkowego. |
Kontekst |
OLTP |
Uwagi |
validateDboValueSetName(„EXTItem”, loadItem(„10010”), „MY_FIELD”, new(String)) sprawdza, czy pusty ciąg znaków jako wartość domyślna typu danych String jest dopuszczalną wartością dla pola dodatkowego, tj. czy pole dodatkowe może zostać opróżnione przez to przypisanie. Należy zweryfikować także funkcję resetDbo, która resetuje pole dodatkowe do jego wartości domyślnej lub pierwotnej. |
Zobacz także |
dboValueSet, dboValueSetDescription, dboValueSetName, dboListValueSet, dboListValueSetDescription, dboListValueSetName, setDboValueSet, setDboValueSetName, setDboListValueSet, setDboListValueSetName, validateDboValueSet |
function create()
{
var p_name := parameters.NAME;
var p_partner := loadPartner(parameters.PARTNER);
var p_constantValues := parameters.CONSTANT_VALUES;
var r_pass := „”;
var r_fail := „”;
/*
for (testValue : split(p_constantValues, ” „))
if (cast(Boolean, first(validateDboValueSetName(„EXTPartner”, p_partner, p_name, testValue), false))
r_pass := r_pass + testValue + ” „;
other
r_fail := r_fail + testValue + ” „;
*/
result.PASS := r_pass;
result.FAIL := r_fail;
}
/* Dzieli p_text na tablicę przy każdym wystąpieniu p_separator */
function split(p_text as String, p_separator as String) as String[]
{
if (p_separator = „”)
p_separator := ” „;
var increment := length(p_separator);
var sep as String;
var word as String;
var r_wordList as String[];
var i := 0;
var startPos := 0;
while (i + increment – 1 < length(p_text)) {
sep := substring(p_text, i, i + increment);
if (sep = p_separator) {
word := trim(substring(p_text, startPos, i));
i := i + przyrost;
startPos := i;
if (word <> „” and word <> p_separator)
add(r_wordList, word);
} else {
i := i + 1;
}
}
word := substring(p_text, startPos);
if (word <> „” and word <> p_separator)
add(r_wordList, word);
return r_wordList;
}
Funkcje dla atrybutów workflow (Funkcje atrybutów workflow)
Atrybuty workflow mogą być wprowadzane w systemie z poziomem wersjonowania 7 i używane jako produkcyjny system testowy lub system produkcyjny. Nie jest do tego wymagana żadna wiedza programistyczna. Podobnie jak atrybut zdefiniowany przez użytkownika, atrybut workflow jest również zapisywany przy użyciu obiektu biznesowego, który jest sklasyfikowany jako suplement zarządzany.
Suplement zarządzany z atrybutami zdefiniowanymi przez użytkownika ma zastosowanie Standard, a suplement zarządzany z atrybutami workflow ma zastosowanie Workflow. Można wprowadzić dowolną liczbę takich suplementów workflow. Dystrybucja atrybutów workflow w kilku suplementach workflow ma tę zaletę, że gdy działanie zapisuje atrybuty workflow po raz pierwszy, a tym samym tworzy nową instancję suplementu workflow, atrybuty workflow należące do innych suplementów workflow nie są wstępnie przypisane z wartościami domyślnymi. Tworzenie zbyt wielu suplementów workflow dla tego samego obiektu biznesowego może zmniejszyć wydajność systemu, ponieważ jego suplementy są ładowane z bazy danych wraz z obiektem biznesowym. Jeśli atrybuty workflow dla różnych procesów workflow są rejestrowane w tym samym suplemencie workflow, korzystne jest, jeśli każdy proces workflow ma atrybut workflow, którego wartość domyślna wskazuje, czy instancja procesu przypisała wartości do atrybutów workflow, czy nie.
Przykładem takiego atrybutu workflow jest status potwierdzenia zamówienia. Pusty ciąg znaków oznacza, że proces potwierdzania zamówienia nie został jeszcze rozpoczęty. Jeśli użytkownik rozpocznie proces zatwierdzania, węzeł początkowy powinien przypisać atrybutowi workflow wartość inną niż wartość domyślna, taką jak W opracowaniu. Zamiast ciągu znaków, status zatwierdzenia może być również mapowany za pomocą wartości liczbowych. W tym przypadku wartość domyślna 0 oznaczałaby, że nie ma jeszcze procesu zatwierdzania zamówienia, a wartość 1 mogłaby oznaczać, że zamówienie jest w opracowaniu.
Atrybuty workflow mogą być dodawane do dostosowywanych aplikacji i wyświetlane, pod warunkiem, że zarządzany dodatek należy do widoku obiektu aplikacji. W przeciwieństwie do niestandardowego atrybutu, atrybut workflow nie może być edytowany ani w aplikacji, ani poprzez import. Tylko definicje działań mogą przypisać wartość do atrybutów workflow. Istnieje zatem wyraźny podział odpowiedzialności między atrybutami zdefiniowanymi przez użytkownika a atrybutami workflow.
Funkcje atrybutów workflow obejmują:
- getOrCreateSupplement
- getSupplement
- putSupplement
getOrCreateSupplement
Nazwa |
getOrCreateSupplement |
Opis |
getOrCreateSupplement zwraca atrybuty suplementu jako tablicę mieszającą i ustawia tablicę mieszającą z wartościami domyślnymi. |
Podpisy |
HashMap getOrCreateSupplement (CisObject object, supplement String) HashMap getOrCreateSupplement (CisObject object, supplement String, Boolean writeMode) |
Parametry |
object to instancja obiektu biznesowego. supplement to techniczna nazwa dodatku przypisanego do obiektu biznesowego. writeMode określa, czy dodatek z zastosowaniem Workflow powinien być zablokowany do zapisu. |
Wynik |
Funkcja zwraca atrybuty suplementu o nazwie technicznej supplement w postaci tablicy skrótów. Atrybuty ogólne, takie jak updateInfo, nie są zawarte w tablicy skrótów. Ponadto tabela hash zawiera metadane suplementu, których nie wolno zmieniać. Atrybuty workflow w tabeli hash mają typ danych zgodny z definicją atrybutów zdefiniowanych przez użytkownika. Jeśli zdefiniowano atrybut workflow o nazwie pickingTime typu Date + time, tabela hash zawiera wpis o nazwie pickingTime typu danych Timestamp. Dla atrybutu workflow typu Email tabela hash zawiera wpis typu danych String itd. Atrybuty workflow typu złożonego, dla których nie ma odpowiedniego typu danych w języku skryptowym, są zwracane jako tabele hash. Na przykład atrybut workflow typu amount jest zwracany jako tablica skrótów z wpisem amount typu danych Number i wpisem uom typu danych Guid. Jeśli żadna instancja suplementu nie została jeszcze utworzona dla określonego obiektu biznesowego, zwracana jest tablica hash z domyślnymi wartościami atrybutów. Suplement jest jednak tworzony tylko wtedy, gdy wywoływana jest funkcja putSupplement. Jeśli parametr writeMode jest ustawiony, a suplement ma zastosowanie Workflow, suplement workflow jest otwierany z blokadą zapisu. Blokada zapisu uniemożliwia innym działaniom zmianę atrybutów workflow. |
Źródła błędów |
Jeśli dla obiektu biznesowego nie utworzono suplementu o nazwie technicznej supplement, zwracana jest wartość null. Jeśli parametr writeMode ma wartość true, a suplement nie jest typu Managed Supplement i nie ma zastosowania Workflow, zwracana jest wartość null. Wartość null jest również zwracana, jeśli suplement workflow nie może zostać otwarty do zapisu, np. ponieważ inne działanie już otworzyło suplement workflow z blokadą zapisu. |
Przykłady |
getOrCreateSupplement(loadPartner(„70010”), „com.cisag.app.general.obj.ItemWorkflowSupplement”) zwraca tablicę hash z wartościami atrybutów dla partnera 70010. getOrCreateSupplement(parameters.object, „com.cisag.app.sales.obj.SalesOrderApproval”, true) zwraca tablicę hash z wartościami atrybutów workflow dla obiektu biznesowego w parameters.object i żąda blokady zapisu dla suplementu workflow. |
Kontekst |
OLTP |
Uwagi |
Różnica między funkcjami getSupplement i getOrCreateSupplement polega na tym, że getSupplement zwraca wartość null, jeśli żadna instancja suplementu nie została jeszcze utworzona dla określonego obiektu biznesowego, a getOrCreateSupplement zwraca tabelę hash z wartościami domyślnymi dla atrybutów suplementu w tym przypadku. Do otwarcia suplementu można również użyć funkcji getByPrimaryKey. Funkcja ta nie pozwala jednak na ustawienie blokady zapisu dla suplementu. |
Zobacz także |
getSupplement, putSupplement |
function create()
{
var p_partner := loadPartner(parameters.PARTNER);
var p_supplement := parameters.SUPPLEMENT;
var p_attribute := parameters.ATTRIBUTE;
var workflowAttributes := getOrCreateSupplement(p_partner, p_supplement, false);
result.IS_NULL := isNull(workflowAttributes);
if (not isNull(workflowAttributes))
result.VALUE := cast(String, workflowAttributes[p_attribute]);
}
Atrybuty workflow mogą być dodawane do interfejsu dostosowywanych aplikacji. W przeciwieństwie do niestandardowego atrybutu, atrybut workflow można zmienić tylko w działaniu workflow. Atrybut workflow nigdy nie jest gotowy do wprowadzenia w interfejsie użytkownika aplikacji.
Więcej informacji na temat atrybutów zdefiniowanych przez użytkownika i zarządzanych dodatków można znaleźć w dokumentacji Atrybuty zdefiniowane przez użytkownika.
Otwarcie aplikacji Atrybuty niestandardowe
Aby wprowadzić atrybuty workflow, należy najpierw otworzyć aplikację Atrybuty niestandardowe. Jeśli aplikacja nie jest wyświetlana w menu użytkownika, można zamiast tego otworzyć aplikację Obiekty deweloperskie i wyszukać aplikację Atrybuty niestandardowe (ManagedSupplementMaintenance). Następnie wybrać przycisk [Otwórz aplikację], który znajduje się na zakładce Edytor.
W systemie klienta aplikację Atrybuty niestandardowe można również otworzyć w trybie projektowania aplikacji konfigurowalnej. Najpierw należy otworzyć dowolną konfigurowalną aplikację i aktywować tryb projektowania. W dokowanym oknie trybu projektowania należy wybrać zakładkę Atrybuty i wybrać dowolny obiekt biznesowy w widoku obiektu aplikacji. Nie musi to być obiekt biznesowy, dla którego użytkownik chce wprowadzić atrybuty workflow. Następnie wybrać przycisk atrybutów niestandardowych w nagłówku zakładki.
W przypadku otwarcia aplikacji Atrybuty niestandardowe w trybie projektowania dostosowywanej aplikacji, pola są wstępnie przypisane. Wstępne przypisanie nie ma znaczenia przy wprowadzaniu atrybutów workflow.
Tworzenie dodatku workflow
W aplikacji Atrybuty niestandardowe wybrać przycisk [Nowy]. W oknie dialogowym akcji generowania atrybutów niestandardowych należy wprowadzić obiekt biznesowy, dla którego użytkownik chce utworzyć atrybuty workflow. Wybrać Workflow jako zastosowanie. Pola atrybutu niestandardowego i oznaczenia mają wstępnie przypisane wartości domyślne. Można zmienić wartości domyślne, np. jeśli użytkownik chce zapisać atrybuty workflow, które są używane przez definicję procesu lub zestaw definicji procesu w osobnym suplemencie. Jeśli użytkownik określi istniejący suplement workflow, nowe atrybuty workflow zostaną do niego dodane.
Jeśli użytkownik potwierdzi wprowadzone dane przyciskiem [OK], zadanie deweloperskie zostanie utworzone automatycznie. Obiekt biznesowy i widok obiektu suplementu workflow są tworzone w razie potrzeby i przypisywane do zadania deweloperskiego. Identyfikacja (numer) zadania deweloperskiego jest wyświetlana na pasku narzędzi aplikacji Atrybuty niestandardowe.
Dopóki nie aktywowano zadania deweloperskiego, można anulować i cofnąć przechwytywanie. W tym celu należy otworzyć zadanie deweloperskie i wyświetlić przypisane obiekty deweloperskie na zakładce Obiekty deweloperskie. Najpierw otworzyć widok obiektu. W aplikacji Obiekty deweloperskie usunąć widok obiektu z zadania. Następnie otworzyć obiekt biznesowy wyświetlany w zadaniu deweloperskim i usunąć go z zadania deweloperskiego. Odświeżyć wyświetlanie obiektów deweloperskich w aplikacji Zadania deweloperskie. Po usunięciu wszystkich obiektów deweloperskich z zadania usunąć zadanie deweloperskie.
Wprowadzanie atrybutów workflow
Po potwierdzeniu wpisów przyciskiem [OK] w oknie dialogowym akcji generowania atrybutu niestandardowego należy wprowadzić nowe atrybuty workflow za pomocą edytora pozycji.
Więcej informacji na temat atrybutów niestandardowych i obsługiwanych typów danych można znaleźć w dokumentacji Atrybuty niestandardowe.
Aktywacja zadania deweloperskiego
Po wprowadzeniu wszystkich atrybutów workflow należy otworzyć aplikację Lista: Obiekty deweloperskie systemu produkcyjnego i wyświetlić zablokowane zadania deweloperskie. Następnie aktywować wybrane zadania deweloperskie. Gdy w oknie dialogowym akcji zostanie wyświetlone zadanie deweloperskie z suplementem workflow i atrybutami workflow, wybrać przycisk [Natychmiast].
Akcja ta uruchamia dwa kolejne restarty systemu w celu zainstalowania nowych atrybutów workflow.
Po instalacji atrybuty workflow są dostępne bez ograniczeń i mogą być używane na przykład w definicjach działań.
Więcej informacji na temat aktywowania zadania deweloperskiego oraz transportowania i instalowania dodatku workflow w systemie docelowym (systemie produkcyjnym klienta) można znaleźć w dokumentacji Lista: Obiekty deweloperskie systemu produkcyjnego.
getSupplement
Nazwa |
getSupplement |
Opis |
getSupplement zwraca atrybuty suplementu w postaci tabeli hash bez wstępnego ustawiania tabeli hash z wartościami domyślnymi. |
Podpisy |
HashMap getSupplement (CisObject object, supplement String) HashMap getSupplement (CisObject object, supplement String, Boolean writeMode) |
Parametry |
object to instancja obiektu biznesowego. supplement to techniczna nazwa dodatku przypisanego do obiektu biznesowego. writeMode określa, czy dodatek powinien być zablokowany do zapisu z zastosowaniem Workflow. |
Wynik |
Funkcja zwraca atrybuty suplementu o nazwie technicznej supplement w postaci tablicy skrótów. Atrybuty ogólne, takie jak updateInfo, nie są zawarte w tablicy skrótów. Ponadto tabela hash zawiera metadane suplementu, których nie wolno zmieniać. Atrybuty workflow w tabeli hash mają typ danych zgodny z definicją w aplikacji Atrybuty niestandardowe. Jeśli zdefiniowano atrybut workflow o nazwie pickingTime typu Date + time, tabela hash zawiera wpis o nazwie pickingTime typu danych Timestamp. Dla atrybutu workflow typu Email tabela hash zawiera wpis typu danych String itd. Atrybuty workflow typu złożonego, dla których nie ma odpowiedniego typu danych w języku skryptowym, są zwracane jako tabele hash. Na przykład atrybut workflow typu amount jest zwracany jako tablica skrótów z wpisem amount typu danych Number i wpisem uom typu danych Guid. Jeśli żadna instancja suplementu nie została jeszcze utworzona dla określonego obiektu biznesowego, zwracana jest wartość null. Jeśli parametr writeMode jest ustawiony, a suplement ma zastosowanie Workflow, suplement workflow jest otwierany z blokadą zapisu. Blokada zapisu uniemożliwia innym działaniom zmianę atrybutów workflow. |
Źródła błędów |
Jeśli dla obiektu biznesowego nie utworzono suplementu o nazwie technicznej supplement, zwracana jest wartość null. Jeśli parametr writeMode ma wartość true, a suplement nie jest typu Managed Supplement i nie jest typu Workflow, zwracana jest wartość null. Wartość null jest również zwracana, jeśli suplementu nie można otworzyć do zapisu, ponieważ na przykład inne działanie już otworzyło suplement z blokadą zapisu. Jeśli żadna instancja suplementu nie została jeszcze utworzona dla określonego obiektu biznesowego, zwracana jest wartość null. |
Przykłady |
getSupplement(loadPartner(„70010”), „com.cisag.app.general.obj.ItemWorkflowSupplement”) zwraca tablicę hash z wartościami atrybutów dla partnera 70010. getSupplement(parameters.object, „com.cisag.app.sales.obj.SalesOrderApproval”, true) zwraca tablicę hash z wartościami atrybutów workflow dla obiektu biznesowego w parameters.object i żąda blokady zapisu dla suplementu workflow. |
Kontekst |
OLTP |
Uwagi |
Różnica między funkcjami getSupplement i getOrCreateSupplement polega na tym, że getSupplement zwraca wartość null, jeśli żadna instancja suplementu nie została jeszcze utworzona dla określonego obiektu biznesowego, a getOrCreateSupplement zwraca tabelę hash z wartościami domyślnymi dla atrybutów suplementu w tym przypadku. Do otwarcia suplementu można również użyć funkcji getByPrimaryKey. Funkcja ta nie pozwala jednak na ustawienie blokady zapisu dla suplementu. |
Zobacz także |
getOrCreateSupplement, putSupplement |
function create()
{
var p_partner := loadPartner(parameters.PARTNER);
var p_supplement := parameters.SUPPLEMENT;
var p_attribute := parameters.ATTRIBUTE;
var workflowAttributes := getSupplement(p_partner, p_supplement, false);
result.IS_NULL := isNull(workflowAttributes);
if (not isNull(workflowAttributes))
result.VALUE := cast(String, workflowAttributes[p_attribute]);
}
putSupplement
Nazwa |
putSupplement |
Opis |
putSupplement przypisuje wartości do atrybutów workflow suplementu workflow dla obiektu biznesowego zgodnie z tabelą hash. |
Podpisy |
Boolean putSupplement(HashMap values) |
Parametry |
values jest tablicą hash z atrybutami workflow suplementu workflow z poprzedniego wywołania funkcji getSupplement lub getOrCreateSupplement. Obie funkcje zapisują również metadane dotyczące suplementu workflow i obiektu biznesowego w zwróconej tabeli hash. W związku z tym w funkcji putSupplement nie są wymagane żadne dodatkowe parametry. |
Wynik |
Funkcja putSupplement przypisuje wartości do atrybutów workflow suplementu workflow dla obiektu biznesowego zgodnie z tabelą hash. Jeśli dla obiektu biznesowego nie istnieje żaden suplement, automatycznie tworzona jest nowa instancja suplementu. Nie ma znaczenia, czy tablica hash z atrybutami workflow została zwrócona za pomocą getSupplement lub getOrCreateSupplement. Nie ma również znaczenia, czy podczas wywoływania tych dwóch funkcji zażądano blokady zapisu dla suplementu workflow. Funkcja zwraca wartość true, jeśli przypisanie powiodło się i false, jeśli ograniczenie lub walidacja w definicjach atrybutów lub w interfejsie programistycznym dodatku workflow uniemożliwia przypisanie. Jeśli przypisanie zostało uniemożliwione z innych powodów, zwracana jest wartość null. |
Źródła błędów |
Jeśli obiekt biznesowy nie ma dodatku workflow, który pasuje do metadanych w tabeli hash values, zwracana jest wartość null. Jeśli suplement nie jest typu Managed Supplement lub nie ma zastosowania Workflow, zwracana jest wartość null. Wartość null jest również zwracana, jeśli suplement workflow nie może zostać otwarty do zapisu, np. ponieważ inne działanie zablokowało suplement workflow do zapisu. Jeśli blokada zapisu została zażądana przez wywołanie funkcji getSupplement lub getOrCreateSupplement w tym samym działaniu, blokada nie uniemożliwia przypisania przy użyciu funkcji putSupplement. Tylko działanie, które pomyślnie ustawiło blokadę zapisu, może zmienić suplement workflow i jego atrybuty workflow. Wartość null jest zwracana, jeśli do tabeli został dodany parametr, który nie jest atrybutem suplementu lub ma typ danych, którego nie można przekonwertować na typ danych atrybutu workflow. Jeśli uzupełnienie workflow ma atrybut workflow, który nie jest zawarty w tabeli skrótów, nie prowadzi to do błędu. Tylko wartość tego atrybutu workflow nie ulega zmianie. Oznacza to, że kolejne atrybuty workflow mogą być dodawane do suplementu workflow bez negatywnego wpływu na istniejące działania workflow, które nie zostały jeszcze zakończone. |
Przykłady |
putSupplement(workflowAttributes) przypisuje wartości do atrybutów workflow suplementu workflow, do którego odwołują się metadane tabeli workflowAttributes zgodnie z tabelą skrótów. |
Kontekst |
OLTP |
Uwagi |
Funkcja nie zmienia obiektu biznesowego, do którego należy suplement workflow. Jeśli na przykład atrybuty workflow partnera zostaną zapisane, atrybut updateInfo partnera nie ulegnie zmianie. Pozwala to na utworzenie definicji działania, która dodaje dalsze informacje do partnera, gdy jest on zapisywany, na przykład bez wyzwalania nowego zdarzenia obiektu biznesowego, co mogłoby doprowadzić do ponownego przypisania atrybutów workflow. Fakt, że funkcja putSupplement nie zmienia obiektu biznesowego oznacza również, że interaktywna aplikacja, która ma otwarty obiekt biznesowy w momencie zmiany, nie wydaje komunikatu ostrzegawczego podczas zapisywania, jeśli atrybuty workflow uległy zmianie. Ponieważ tylko działania mogą zmieniać atrybuty workflow, może być konieczne ponowne otwarcie atrybutów workflow w poszczególnych kontrolach (np. za pomocą funkcji getByPrimaryKey), ponieważ wartości atrybutów workflow zawarte w widoku obiektu mogą być już nieaktualne. Funkcja putSupplement nie wywołuje indywidualnych kontroli przed zapisaniem. Należy zatem sprawdzić, czy nowe wartości są dozwolone przed przypisaniem ich do definicji działania. |
Zobacz także |
getOrCreateSupplement, getSupplement |
function create()
{
var p_partner := loadPartner(parameters.PARTNER);
var p_supplement := parameters.SUPPLEMENT;
var p_attribute := parameters.ATTRIBUTE;
var r_putSupplement := false;
var workflowAttributes := getOrCreateSupplement(p_partner, p_supplement, true);
result.IS_NULL_GET := isNull(workflowAttributes);
if (cast(Boolean, first(workflowAttributes, false)))
{
var attributeValue := cast(String, workflowAttributes[p_attribute]);
result.OLD_VALUE := attributeValue;
workflowAttributes[p_attribute] := parameters.VALUE;
r_putSupplement := putSupplement(workflowAttributes);
result.IS_NULL_SET := isNull(r_putSupplement);
workflowAttributes := getSupplement(p_partner, p_supplement);
result.NEW_VALUE := cast(String, workflowAttributes[p_attribute]);
}
}
Zapisywanie statusu zatwierdzenia w atrybucie workflow
Procesy zatwierdzania są ważnym obszarem zadań dla atrybutów workflow. Jeśli bieżący status zatwierdzenia nie jest przechowywany w atrybucie workflow, indywidualna walidacja, która zapobiega zwolnieniu niezatwierdzonego zamówienia, jest bardzo złożona i czasochłonna do wprowadzenia. Jeśli status zatwierdzenia jest zapisany w atrybucie workflow, prosto zaprojektowany proces zatwierdzania musi sprawdzać tylko ten pojedynczy status.
W zależności od charakteru procesu zatwierdzania możliwe są dalsze warunki, takie jak uwzględnienie centrów kosztów i wartości progowych związanych z okresem (które mogą być również mapowane jako atrybuty workflow).
Ze względu na prostotę i przejrzystość, niniejszy przykład nie zawiera bardziej szczegółowych informacji na temat takich wymagań specyficznych dla organizacji. Zamiast tego rejestrowany jest prosty proces zatwierdzania z następującymi wartościami statusu zatwierdzenia, które są zapisywane w atrybucie workflow status:
- Pusty ciąg znaków (wartość domyślna) – proces autoryzacji nie został jeszcze rozpoczęty
- NIE ZATWIERDZONO – rozpoczęto proces zatwierdzania, który nie został jeszcze zakończony lub którego wynik nie jest jeszcze dostępny
- ZATWIERDZONO – zamówienie zostało zatwierdzone w ostatecznym procesie zatwierdzania
- ODRZUCONO – zamówienie zostało odrzucone w ostatnim procesie zatwierdzania
- WYCOFANO – wnioskodawca (inicjator) wycofał się z procesu autoryzacji
- NIEPRAWIDŁOWY – ostatni proces testowy zakończył się błędem
Zapobieganie wydawaniu nieautoryzowanych zamówień zakupu
Kontrola indywidualna powinna uniemożliwić zwolnienie zamówienia w następujących przypadkach:
- Zamówienie wykorzystuje rodzaj ze statusem otwarcia W opracowaniu (jeśli status otwarcia to Zwolniony, i tak nie byłoby możliwe zapobieżenie zwolnieniu)
- Kwota netto przekracza 1 000 jednostek w pierwszej walucie wewnętrznej, a zamówienie nie ma statusu zatwierdzenia ZATWIERDZONE
Po pierwsze, należy wprowadzić indywidualną kontrolę dla kontraktow hook zamówienia (com.cisag.app.purchasing.order.hook.log.PurchaseOrder), która zapobiega zwolnieniu nieautoryzowanych zamówień. Widok obiektu persistent zawiera wartości zamówienia przechowywane na stałe w bazie danych. Widok obiektu current zawiera wartości do sprawdzenia.
Aby dowiedzieć się, które atrybuty można sprawdzić, należy otworzyć widok obiektu dla zamówienia (com.cisag.app.purchasing.order.model.PurchaseOrder) w aplikacji Prezentacja schematu obiektu. Zakładka Atrybuty pokazuje atrybuty, a zakładka Relacje pokazuje relacje widoku obiektu. Jeśli relacja jest typu Widok obiektu, można ogólnie sprawdzić atrybuty przechowywane niepersystentnie w odwołującym się widoku obiektu. Jednak oznaczenie typu Jednostka biznesowa wskazuje na trwale przechowywaną jednostkę biznesową.
Następnie należy wprowadzić następującą walidację indywidualną:
const Status as valueSet(com.cisag.app.general.OrderStatus);
const Reason as valueSet(com.cisag.app.general.InvalidOrderReason);
function validateHeader(
persistent as DataView(com.cisag.app.purchasing.order.model.PurchaseOrder),
current as DataView(com.cisag.app.purchasing.order.model.PurchaseOrder))
{
/* nie zatwierdzaj PO w trybie tworzenia */
if (isNull(persistent))
powrót;
/* nie weryfikuj PO, który został zwolniony przy tworzeniu */
if (current->Type:creationStatus <> Status.ORDER_ENTERED)
powrót;
/* nie zatwierdzaj PO, chyba że wartość netto przekracza próg */
if (current:totalValues.netValueDomestic.amount1 <= 1000)
powrót;
/* pobierz uzupełnienie przepływu pracy z atrybutami zatwierdzenia */
var approval := getByPrimaryKey(CisObject(com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval), current:guid);
/* uniemożliwić zwolnienie PO bez zatwierdzenia */
if (approval.status <> „APPROVED” and (persistent:status = Status.ORDER_ENTERED and current:status = Status.ORDER_RELEASED))
sendMessage(current:number, „PUR001”, list(current->Type:code, current:number));
Pierwszy warunek umożliwia użytkownikowi zapisanie nowego zamówienia bez kontroli. Drugi warunek zezwala na wszelkie zmiany i zmiany statusu dla zamówień, które używają typu ze statusem otwarcia Zwolnione. Trzeci warunek zezwala na zmiany i zmiany statusu, jeśli całkowita kwota netto nie przekracza 1000 jednostek walutowych w pierwszej walucie wewnętrznej.
Suplement workflow jest następnie otwierany za pomocą funkcji getByPrimaryKey. Ponieważ suplement ma ten sam klucz podstawowy co obiekt biznesowy, należy otworzyć suplement workflow za pomocą identyfikatora Guid zamówienia.
Poniższy warunek sprawdza, czy zamówienie zostało przeniesione ze statusu W opracowaniu do statusu Zwolnione. Jeśli tak jest, a zamówienie nie ma statusu zatwierdzenia ZATWIERDZONE, zwolnienie jest uniemożliwione i wyświetlany jest komunikat o błędzie PUR001.
Zamówienie posiada atrybut o nazwie statusBackup. Atrybut ten jest używany, jeśli zamówienie ma więcej pozycji niż można zapisać w transakcji bazy danych, tj. jeśli liczba pozycji przekracza rozmiar bloku. Takie zamówienie musi być zwalniane blok po bloku. Gdy pozycje pierwszego bloku zostaną zwolnione, zamówienie zostanie przeniesione do statusu Nieprawidłowe. Przyszły status jest rejestrowany w atrybucie statusBackup, a powód nieważnego statusu jest rejestrowany w atrybucie invalidOrderReason. Zamówienie jest przenoszone do statusu docelowego Zwolnione tylko wtedy, gdy pozycje w ostatnim bloku zostaną zwolnione. Aby upewnić się, że żadna lub wszystkie pozycje nie zostaną zwolnione, a zamówienie nie otrzyma statusu Nieprawidłowe po próbie zwolnienia, należy dodać kolejny warunek do indywidualnej kontroli:
/* zapobiega zwolnieniu PO, chyba że zostanie zatwierdzone (przekroczono rozmiar bloku) */
if (approval.status <> „APPROVED” and (persistent:status = Status.ORDER_ENTERED and current:status = Status.ORDER_INVALID and current:statusBackup = Status.ORDER_RELEASED and current:invalidReason = Reason.CHANGE_HEADER_STATUS))
sendMessage(current:number, „PUR001”, list(current->Type:code, current:number));
}
Taki warunek jest wymagany tylko dla typów dokumentów, które mają atrybut o nazwie statusBackup.
Rozpoczęcie procesu zatwierdzania za pomocą menu kontekstowego
Aby móc uruchomić proces zatwierdzania poprzez menu kontekstowe zamówienia, należy wprowadzić zdarzenie typu Zdarzenie użytkownika dla zamówienia (com.cisag.app.purchasing.obj.PurchaseOrder) w węźle startowym procesu zatwierdzania.
Jeśli proces autoryzacji nie zostanie natychmiast wyświetlony w menu kontekstowym w sekcji Rozpocznij proces, nalezy wylogować się z systemu i zalogować ponownie.
Aby zapobiec rozpoczęciu procesu zatwierdzania dla zamówienia, które może zostać zwolnione bez zatwierdzenia, należy wprowadzić podobny warunek przejścia, jak w przypadku kontroli indywidualnej. Jeśli warunek przejścia nie jest spełniony, procesu nie można wybrać w menu kontekstowym. Należy użyć funkcji indexOf, aby upewnić się, że proces zatwierdzania może zostać uruchomiony tylko dla zamówień ze statusem zatwierdzenia ODRZUCONE, WYCOFANE lub NIEWAŻNE. Proces zatwierdzania można również uruchomić, jeśli status zatwierdzenia ma wartość domyślną (pusty ciąg znaków), ponieważ w tym przypadku funkcja indexOf zwraca wartość 0, a nie -1.
parameters.object->Type:creationStatus = 1 /* ORDER_ENTERED */ and parameters.object:totalValues.netValueDomestic.amount1 > 1000 and indexOf(„REJECTED|WITHDRAWN|INVALID”, getByPrimaryKey(CisObject(com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval), parameters.object:guid):status) >= 0
W węźle startowym należy użyć funkcji putSupplement, aby zmienić status zatwierdzenia zamówienia na NIE ZATWIERDZONO. Oznacza to, że nie można uruchomić dalszych procesów zatwierdzania. Jeśli nie można zmienić statusu zatwierdzenia, należy użyć polecenia abortProcess, aby anulować tworzenie procesu. Zamówienie zostanie również zapisane w zmiennej procesu po, dzięki czemu będzie można je przeanalizować w kolejnych krokach procesu.
function create()
{
var putOK := false;
var approval := getOrCreateSupplement(parameters.object, „com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval”);
if (not isNull(approval))
{
approval.status := „IN_APPROVAL”;
var putOK := putSupplement(approval);
}
if (not cast(Boolean, first(putOK, false)))
{ /* obsługa awaryjna, jeśli aktualizacja statusu zatwierdzenia nie powiodła się */
abortProcess();
}
process.po := parameters.object;
}
Nazwa użytkownika, który uruchamia proces, jest automatycznie zapisywana w process.Initiator podczas akcji użytkownika. Zamówienie jest również automatycznie przypisywane do węzła początkowego (a tym samym do procesu), dzięki czemu wszystkie procesy zatwierdzania zamówienia mogą być wyszukiwane za pomocą menu kontekstowego.
Każdorazowe zezwolenie na zwolnienie za specjalną zgodą
Można zezwolić na zwolnienie niezatwierdzonego zamówienia dla użytkowników ze specjalnymi uprawnieniami. Opcja ta jest przydatna na przykład, gdy zamówienie ma zostać zwolnione w krótkim czasie, a proces zatwierdzania trwałby zbyt długo lub gdy błąd w procesie zatwierdzania uniemożliwia zarówno zatwierdzenie, jak i zwolnienie. Najprostszym sposobem na wdrożenie tego wymogu jest utworzenie roli workflow Kierownik Zakupu i zawsze zezwalanie właścicielowi tej roli na zwolnienie zamówienia. W tym celu należy dodać następujący warunek do indywidualnego sprawdzenia przed otwarciem suplementu workflow:
/* nie zatwierdzaj PO dla superużytkowników */
if (contains(resolveRole(„HEAD_OF_PROCUREMENT”), environment.userGuid)
powrót;
Ochrona zamówienia podczas audytu
Aby zapobiec zmianie kolejności zamówień podczas kontroli, należy wprowadzić dodatkowy warunek w indywidualnej kontroli.
/* zapobieganie zmianom w PO podczas zatwierdzania */
if (approval.status = „IN_APPROVAL”)
sendMessage(current:number, „PUR002”, list(current->Type:code, current:number));
Aby umożliwić inspektorom zmianę zamówienia ze statusem zatwierdzenia NIE ZATWIERDZONO np. w celu dostosowania ilości, usunięcia pozycji lub dodania nowych pozycji, należy wprowadzić dodatkowy atrybut workflow process, który zawiera identyfikator ostatniego procesu zatwierdzania. W definicji działania dla węzła początkowego należy przypisać identyfikator bieżącego procesu do atrybutu workflow:
approval.process := activity->Process:code;
Uzupełnij poprzedni warunek w następujący sposób:
/* zapobieganie zmianom w PO podczas zatwierdzania (z wyjątkiem zmian dokonywanych przez redaktorów) */
if (approval.status = „IN_APPROVAL” and not isEditor(approval.process, environment.userGuid)
sendMessage(current:number, „PUR002”, list(current->Type:code, current:number));
Funkcja zdefiniowana przez użytkownika isEditor wykorzystuje zapytanie OQL w celu ustalenia, czy użytkownik, dla którego zamówienie jest aktualnie sprawdzane, ma otwarte zadanie typu węzeł decyzyjny w powiązanym procesie zatwierdzania. Jeśli tak jest, funkcja zwraca wartość true, w przeciwnym razie false.
function isEditor(processId as String, userGuid as Guid) as Boolean
{
/* Zwraca wartość true, jeśli userGuid ma otwarty węzeł decyzyjny należący do processId */
var proc as CisObject(com.cisag.sys.workflow.obj.Process);
var OQL := „SELECT COUNT(*) FROM com.cisag.sys.workflow.obj.Workitem task JOIN com.cisag.sys.workflow.obj.Activity ON task:activityGuid = activity:guid JOIN com.cisag.sys.workflow.obj.Process ON activity:process = process:guid WHERE task:userGuid = ? AND process:code = ? AND activity:type = 15 AND task:state in (20, 30, 40, 70)”;
var params as Unknown[];
add(params, processId);
add(params, userGuid);
return cast(Number, getResultList(OQL, params, 1)[0][0]) > 0;
}
Alternatywnym rozwiązaniem byłoby wywołanie funkcji putSupplement w funkcji create węzła decyzyjnego w celu zapisania nazw użytkowników operatorów w nowym atrybucie workflow. Jednak w przypadku tego rozwiązania recenzenci, którzy otrzymali swoje zadanie poprzez przekierowanie lub działanie następcze w przypadku przekroczenia limitu czasu, nie byliby w stanie zmienić kolejności zamówień.
Zapisywanie wyniku zatwierdzenia w atrybutach workflow
W procesie zatwierdzania zamówienie jest zatwierdzane lub odrzucane. Jest to zatem decyzja z dwiema opcjami. Węzeł decyzyjny został zaimplementowany dla tego przypadku użycia. Węzeł decyzyjny interpretuje status Zrealizowane jako decyzję pozytywną (zatwierdzoną), a status Zakończone bez opracowania jako decyzję negatywną (odrzuconą). Jeśli w definicji działania wybrano regułę decyzyjną Konsensus, działanie kończy się, gdy tylko co najmniej jeden operator (recenzent) ukończy zadanie bez jego przetwarzania, tj. odrzuci zamówienie.
Jeśli wybrana zostanie zasada większości, działanie kończy się, gdy tylko ponad połowa operatorów zakończy zadanie lub pozostawi je nieprzetworzone. W przypadku impasu, zamówienie jest uznawane za zatwierdzone. Jeśli definicja procesu wykorzystuje węzeł zdarzeń, nie jest konieczne ani przydatne tworzenie oddzielnego działania dla każdego recenzenta. Kolejną zaletą węzła decyzyjnego jest to, że decyzja jest automatycznie wprowadzana jako wynik działania lub procesu. Dlatego w definicji działania węzła początkowego należy wpisać ZATWIERDZONY jako wynik decyzji pozytywnej i ODRZUCONY jako wynik decyzji negatywnej. Należy wybrać także opcję Proces i działanie w polu Automatyczne wprowadzanie wyników.
W definicji działania dla węzła decyzyjnego należy zapisać wynik zatwierdzenia w atrybucie workflow status. Aby zwiększyć identyfikowalność procesu zatwierdzania, należy również zapisać dodatkowe atrybuty workflow, aby zarejestrować czas zatwierdzenia i nazwę użytkownika, który zatwierdził lub odrzucił zamówienie. Zatwierdzającym lub odrzucającym jest użytkownik, który również zakończył działanie poprzez wykonanie zadania. Użytkownik ten znajduje się w atrybucie completeUser działania i można go sprawdzić w funkcji close. Tego użytkownika można również określić w następującym węźle przy użyciu następującego wyrażenia:
process.previousStep:completeUser
Jeśli kolejny węzeł ma więcej niż jedną przychodzącą krawędź, wówczas previousStep zawiera listę działań poprzedzających. Jeśli węzeł decyzyjny jest pierwszym działaniem poprzedzającym, użytkownika można określić w następujący sposób:
process.previousStep[0]:completeUser
W atrybucie workflow zapisywana jest również bieżąca kwota netto w momencie zatwierdzenia lub odrzucenia.
function close(state as Number)
{
var putOK := false;
var approval := getOrCreateSupplement(process.po, „com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval”);
if (not isNull(approval))
{
var po := getByPrimaryKey(CisObject(com.cisag.app.purchasing.obj.PurchaseOrder), process.po);
approval.date := now();
approval.status := process.Result;
approval.amount := po:totalValues.netValueDomestic.amount1;
approval.approver := userName(activity:completeUser);
var putOK := putSupplement(approval);
}
}
if (not cast(Boolean, first(putOK, false)))
{ /* obsługa awaryjna, jeśli aktualizacja zatwierdzenia nie powiodła się */
}
}
Wycofanie wniosku o zatwierdzenie
Aby umożliwić wnioskodawcy anulowanie przesłanego wniosku o zatwierdzenie, należy wybrać funkcję Rozszerzony dla inicjatora na karcie Ogólne definicji procesu. Ta funkcja umożliwia inicjatorowi otwarcie procesu i wykonanie akcji zakończenia nieprzetworzonego zamówienia. Ta akcja również kończy proces i wszystkie otwarte działania i zadania bez przetwarzania.
Aby upewnić się, że status zatwierdzenia nie zachowa wartości W TRAKCIE ZATWIERDZANIA zakończeniu procesu, należy sprawdzić w węźle końcowym, czy istnieje wynik sprawdzenia dla procesu. Jeśli w process.Result nie wprowadzono żadnego wyniku, należy wywołać putSupplement, aby przypisać pusty ciąg znaków lub wartość WITHDRAWN do statusu zatwierdzenia zamówienia.
function create()
{
if (process.Result = „”)
{
var putOK := false;
var approval := getOrCreateSupplement(process.po, „com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval”);
if (not isNull(approval))
{
approval.status := „WITHDRAWN”;
var putOK := putSupplement(approval);
}
}
if (not cast(Boolean, first(putOK, false)))
{ /* obsługa awaryjna, jeśli aktualizacja statusu zatwierdzenia nie powiodła się */
}
}
Obsługa błędów procesu
Jeśli w procesie wystąpi błąd, proces zostanie zakończony za pośrednictwem węzła błędu. Aby upewnić się, że status zatwierdzenia nie zachowa wartości W TRAKCIE ZATWIERDZANIA po błędzie procesu, należy wywołać putSupplement w węźle błędu, aby przypisać wartość INVALID do statusu zatwierdzenia zamówienia.
function create()
{
var putOK := false;
var approval := getOrCreateSupplement(process.po, „com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval”);
if (not isNull(approval))
{
approval.status := „INVALID”;
var putOK := putSupplement(approval);
}
if (not cast(Boolean, first(putOK, false)))
{ /* obsługa awaryjna, jeśli aktualizacja statusu zatwierdzenia nie powiodła się */
}
}
Zwolnienie zatwierdzonego zamówienia
Kontrola indywidualna umożliwia każdemu użytkownikowi zwolnienie zatwierdzonego zamówienia. Można również dodać węzeł usługi do definicji procesu, który automatycznie zwalnia węzeł usługi, gdy tylko zostanie podjęta pozytywna decyzja. W tym celu należy utworzyć nowy węzeł usługi po węźle decyzji. W definicji działania dla węzła decyzyjnego należy wprowadzić następujący warunek przejścia dla krawędzi do węzła usługi:
process.Result = „ZATWIERDZONY”
W definicji działania dla węzła usługi należy zdefiniować aplikację działającą w tle Zwolnij zamówienie zakupu (com.cisag.app.purchasing.order.log.ReleaseOrders). Wprowadzić następujące wyrażenie jako parametr aplikacji ConfirmWarnings:
true
W polu wyrażenia dla parametru aplikacji Orderkeys wprowadzić następujące wartości:
list(createOrderKey(process.po:guid, ZERO_GUID))
W deklaracjach należy użyć polecenia setJobQueue, aby określić kolejkę, chyba że używana jest standardowa kolejka przechowywana w funkcji konfiguracyjnej Workflow management. Aplikacja działająca w tle powinna być wykonywana w imieniu użytkownika, który jest upoważniony do zwolnienia zamówienia. Jeśli każdy użytkownik jest upoważniony do zwolnienia zamówienia, a kontrola indywidualna tego nie uniemożliwia, można użyć inicjatora (wyzwalacza).
function create()
{
setJobUser(process.Initiator);
}
Zmiana zatwierdzonego i wydanego zamówienia
Z jednej strony musi istnieć możliwość zmiany zwolnionego zamówienia, np. w celu odnotowania drobnych zmian cen lub dodatkowych pozycji kosztów dla ewentualnej dostawy. Z drugiej strony, zwolnione zamówienie nie może być dowolnie zmieniane. Aby spełnić oba te wymagania, należy wprowadzić atrybut workflow dla całkowitej kwoty netto w momencie zatwierdzenia. Zmiany w zatwierdzonym i zwolnionym zamówieniu są dozwolone w ramach progu tolerancji zdefiniowanego w indywidualnej kontroli.
/* zapobieganie zmianom w zatwierdzonym PO (powyżej wartości progowej) */
if (approval.status = „APPROVED” and approval.amount > 0)
if ((current:totalValues.netValueDomestic.amount1 – approval.amount) / approval.amount > 1.05) /* próg 5% */
sendMessage(current:number, „PUR003”, list(current->Header->Type:code, current->Header:number));
W funkcji validateDetail można również wprowadzić kontrole, które uniemożliwiają dodawanie nowych pozycji do zatwierdzonego zamówienia.
function validateDetail(
persistent as DataView(com.cisag.app.purchasing.order.model.PurchaseOrderDetail),
current as DataView(com.cisag.app.purchasing.order.model.PurchaseOrderDetail))
{
/* pobierz uzupełnienie przepływu pracy z atrybutami zatwierdzenia */
var approval := getByPrimaryKey(CisObject(com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval), current:header);
/* zapobieganie wprowadzaniu nowych pozycji zatwierdzonego PO */
if (approval.status = „APPROVED” and isNull(persistent))
sendMessage(current:number, „PUR004”, list(current->Header->Type:code, current->Header:number));
}
W razie potrzeby można zezwolić na wprowadzanie nowych pozycji dla określonych artykułów lub grup artykułów, takich jak artykuły rozliczeniowe.
Można również zapobiec zmianom ilości w funkcji validateDetail. Poniższy warunek zapobiega zwiększeniu ilości:
/* zapobiec zwiększeniu ilości zatwierdzonego PO */
if (approval.status = „APPROVED” and not isNull(persistent))
if (current:totalQuantity.amount > persistent:totalQuantity.amount)
sendMessage(current:number, „PUR005”, list(current->Header->Type:code, current->Header:number));
Blok zatwierdzonych i zwolnionych zamówień
Aby móc dokonywać większych zmian w zatwierdzonym i zwolnionym zamówieniu, użytkownik musi najpierw zablokować zamówienie. Wszelkie zmiany powinny być dozwolone w statusie Zablokowane. Aby wymusić nowe zatwierdzenie zablokowanego zamówienia, należy dodać zmianę statusu z Zablokowane na Zwolnione do warunku w indywidualnej kontroli.
/* uniemożliwić zwolnienie PO bez zatwierdzenia */
if (approval.status <> „APPROVED” and ((persistent:status = Status.ORDER_ENTERED or persistent:status = Status.ORDER_HELD) and current:status = Status.ORDER_RELEASED))
sendMessage(current:number, „PUR001”, list(current->Type:code, current:number));
/* zapobiega zwolnieniu zablokowanego PO, chyba że zostanie zatwierdzone */
if (approval.status <> „APPROVED” and ((persistent:status = Status.ORDER_HELD or persistent:status = Status.ORDER_HELD) and current:status = Status.ORDER_INVALID and current:statusBackup = Status.ORDER_RELEASED and current:invalidReason = Reason.CHANGE_HEADER_STATUS))
sendMessage(current:number, „PUR001”, list(current->Type:code, current:number));
W ten sam sposób można również sprawdzić i zapobiec zmianie statusu z Anulowane na Zwolnione.
Jeśli zatwierdzone i zwolnione zamówienie zostało zablokowane, przed zwolnieniem zablokowanego zamówienia należy rozpocząć nowy proces zatwierdzania i zatwierdzić zamówienie. W związku z tym należy rozszerzyć warunek przejścia w węźle startowym, aby proces zatwierdzania można było również uruchomić dla zablokowanych zamówień za pośrednictwem menu tekstowego węzła.
parameters.object->Type:creationStatus = 1 /* ORDER_ENTERED */ and parameters.object:totalValues.netValueDomestic.amount1 > 1000 and (indexOf(„REJECTED|WITHDRAWN|INVALID”, getByPrimaryKey(CisObject(com.cisag.app.purchasing.obj.PurchaseOrderWorkflowApproval), parameters.object:guid):status) >= 0 lub parameters.object:status = ORDER_HELD)
Innym przykładem funkcjonalnego wykorzystania atrybutów workflow jest eksploracja procesów. Atrybuty workflow zostały zaprojektowane tak, aby umożliwić dodawanie dalszych informacji podczas wprowadzania i zmiany obiektów biznesowych, które mogą być wykorzystywane do oceny w aplikacjach typu lista, a także do eksploracji procesów w Comarch ERP Enterprise lub w systemach zewnętrznych.
Jednym z przykładów atrybutów workflow, które dodają dalsze informacje do obiektu biznesowego, są czasy odpowiedzi i rozwiązania żądań pomocy technicznej. Ponieważ zarządzane dodatki obiektu biznesowego są automatycznie dodawane do widoku obiektu w wielu kontekstach, atrybuty workflow mogą być analizowane bez ograniczeń w aplikacjach typu lista, np. w celu monitorowania zgodności z umowami o poziomie usług.
Najpierw należy wprowadzić następujące atrybuty workflow typu Liczba dziesiętna:
- reactionTime
- resolveTime
Czas reakcji definiuje się jako liczbę godzin między wprowadzeniem zgłoszenia do pomocy technicznej a pierwszym zewnętrznie widocznym tekstem wprowadzonym przez pracownika pomocy technicznej. Czas rozwiązania (Resolve time) definiuje się jako liczbę dni między wprowadzeniem zgłoszenia do pomocy technicznej a jego rozpatrzeniem. Okresy poza godzinami otwarcia centrum wsparcia nie powinny być uwzględniane w obliczeniach. Na przykład, jeśli centrum wsparcia jest otwarte od 9:00 do 18:00 w dni robocze, a pracownik pomocy technicznej wprowadzi pierwszy widoczny z zewnątrz tekst w poniedziałek o 10:00 dla zgłoszenia wprowadzonego w poprzedni piątek o 17:00, wówczas należy obliczyć czas odpowiedzi wynoszący 2,00 godziny.
Najpierw tworzona jest definicja działania typu Pojedynczem działanie w celu obliczenia czasu reakcji i zapisania go w atrybucie workflow reactionTime. Definicja działania tworzy działanie dla operatora System, gdy pracownik wewnętrzny wprowadza tekst widoczny z zewnątrz lub zmienia widoczność istniejącego tekstu z wewnętrznego na zewnętrzny. Na zakładce Zdarzenia należy zapisać definicję działania dla zdarzenia Jednostka biznesowa zależnego od com.cisag.app.internal.obj.SupportRequestText. Należy wprowadzić następujący warunek przejścia dla podtypu Insert:
parameters.newObject:visibility = 3 /* PUBLIC */ and getByPrimaryKey(CisObject(com.cisag.app.general.obj.Partner), parameters.newObject:creator):type = 1 /* INTERNAL */
Wprowadzić następujący warunek przejścia dla podtypu Zmiana:
(parameters.newObject:visibility = 3 and parameters.oldObject:visibility <> 3) and getByPrimaryKey(CisObject(com.cisag.app.general.obj.Partner), parameters.object:creator):type = 1 /* INTERNAL */
W funkcji create na karcie Deklaracje wywołać funkcję getOrCreateSupplement, aby zapytać o atrybuty workflow suplementu workflow com.pt.app.internal.obj.SupportRequestWorkflowSupplement. W tym przykładzie raczej nie ma znaczenia, czy inne działania zmieniają atrybuty workflow, ponieważ każde działanie obliczyłoby ten sam czas odpowiedzi, nie należy wymagać blokady zapisu. Następnie należy obliczyć czas reakcji (jeśli nie został obliczony) i przypisać go do atrybutu workflow reactionTime w tabeli hash. Na koniec wywołać putSupplement, aby zapisać czas reakcji w suplemencie workflow.
function create()
{
var workflowAttributes := getOrCreateSupplement(parameters.entity, „com.pt.app.internal.obj.SupportRequestWorkflowSupplement”, false);
if (not isNull(workflowAttributes))
{
if (cast(Number, workflowAttributes.reactionTime) = 0)
workflowAttributes.reactionTime := supportHours(parameters.entity:updateInfo.createTime, parameters.newObject:create);
var success := putSupplement(workflowAttributes);
}
}
function supportHours(from as Timestamp, until as Timestamp) as Number
{
/* Niestandardowy algorytm obliczania czasu reakcji */
return hours(from, until);
}
W funkcji supportHours można przechowywać logikę, aby od czasu odpowiedzi odjąć czas, w którym centrum wsparcia było zamknięte. Można na przykład utworzyć kalendarz prac dla centrum pomocy technicznej i użyć funkcji workingDays lub wywołać odpowiednią metodę Java (w JavaScript).
Druga definicja działania jest również typu Pojedyncze działanie. Oblicza i zapisuje czas rozwiązania, gdy żądanie wsparcia jest zakończone. Na przykład można utworzyć definicję zdarzenia typu Zmiana dla jednostki biznesowej com.cisag.app.internal.obj.SupportRequest:
parameters.newObject:status = 6 and parameters.oldObject:status <> 6 /* COMPLETED */
W funkcji create na karcie Deklaracje należy wywołać te same funkcje getOrCreateSupplement i putSupplements, co w poprzedniej definicji działania, aby obliczyć czas rozwiązania i zapisać go w atrybucie workflow resolveTime:
function create()
{
var workflowAttributes := getOrCreateSupplement(parameters.entity, „com.pt.app.internal.obj.SupportRequestWorkflowSupplement”, false);
if (not isNull(workflowAttributes))
{
if (cast(Number, workflowAttributes.resolveTime) = 0)
workflowAttributes.resolveTime := supportDays(parameters.obje:updateInfo.createTime, now());
var success := putSupplement(workflowAttributes);
}
}
function supportDays(from as Timestamp, until as Timestamp) as Number
{
/* Niestandardowy algorytm obliczania czasu rozwiązania */
return days(from, until);
}