| Jesteś tu: Unicore Produkcja >> Przegląd >> Funkcje >> Obiekty biznesowe | ||
Obiekty biznesowe w Unicore ProdukcjaKorzystanie z obiektów biznesowych Unicore.CommonSystem Unicore Produkcja Premium udostępnia wszystkie obiekty biznesowe dostępne wewnątrz aplikacji oraz pozwala na tworzenie własnych obiektów. Umożliwia to korzystanie z obiektów produkcyjnych bezpośrednio w Symfonii w języku AmBasic oraz VBA. Obiekt aplikacji FApplication - Unicore Produkcja Premium udostępnia jako obiekt COM zainicjowaną instancję systemu, która zawiera dostęp do kolekcji obiektów biznesowych oraz kolekcji własnych, zdefiniowanych obiektów. Pobranie obiektu aplikacji w AmBasic: dispatch FApplication = "Unicore.Common.Application.FApplication" Obiekt aplikacji daje dostęp do kolekcji obiektów: Stanowisk Roboczych (WorkCenters), Maszyn (Machines), Pracowników (Employees), Zleceń Produkcyjnych (WorkOrders), Struktur (BOM), Procesów (Processes), Marszrut (Routings), Indeksów (Items), Harmonogramów (Schedules), Planów Produkcji (MRPManufactures), Planów Zapotrzebowania (MRPPurchases), Zamówień Obcych (SalesOrders), Kontrahentów (Contractors), oraz obiektów definiowanych przez użytkowników (Objects). Przykładowy kod w AmBasic z wykorzystaniem kolekcji obiektów FApplication: dispatch FApplication = "Unicore.Common.Application.FApplication"
int l = 0
print "Lista Stanowisk Roboczych:" + LF
while l < FApplication.WorkCenters.Count
l += 1
print FApplication.WorkCenters.Item(l).ShortName + LF
wend
Każda kolekcja zawiera propercję Count zawierającą ilość rekordów oraz metodę Item(indeks) zwracającą obiekt o podanym indeksie. Z obiektów biznesowych można korzystać również poza obiektem aplikacji FApplication. Przykładowy kod w AmBasic z wykorzystaniem obiektu Zlecenia Produkcyjnego. dispatch WorkOrder = "Unicore.Common.BusinessObjects.CWorkOrder"
float planqty = 0
int l = 0
if WorkOrder.GetByShortName("08-ZP/20").Success then
print WorkOrder.WorkOrderStatus + LF
while l < WorkOrder.WorkOrderItems.Count
l += 1
planqty = Val(WorkOrder.WorkOrderItems.Item(l).PlanQty)
print WorkOrder.WorkOrderItems.Item(l).Item.ShortName + LF
print using "%f\n", planqty
wend
endif
Każdy obiekt biznesowy posiada następujące metody obsługujące:
Obiekt biznesowy zawiera kolekcje obiektów, z którymi jest powiązany relacyjnie. Na przykład Stanowisko Robocze zawiera Maszyny, które pracują w obrębie Stanowiska oraz Procesy, które są wykonywane na tym Stanowisku. Przykładowy kod w AmBasic przedstawiający dostęp do kolekcji obiektów dostępnych z obiektu Stanowiska Roboczego: dispatch WorkCenter = "Unicore.Common.BusinessObjects.CWorkCenter"
int count = 0
int l = 0
float totalhours = 0
if WorkCenter.GetByID(1).Success then
print "Stanowisko Robocze: " + WorkCenter.ShortName + LF
totalhours = Val(WorkCenter.TotalHours)
print using "Ilość godzin: %f\n", totalhours
count = WorkCenter.Machines.Count
while l < count
l += 1
print "Maszyna Stanowiska: "+ WorkCenter.Machines.Item(l).ShortName + LF
wend
count = WorkCenter.Processes.Count
l = 0
while l < count
l += 1
print "Proces technologiczny "+ WorkCenter.Processes.Item(l).ShortName + LF
wend
endif
Tworzenie własnych obiektów biznesowychSystem Unicore Produkcja Premium umożliwia definiowanie i tworzenie własnych obiektów biznesowych, które można łączyć z obiektami biznesowymi istniejącymi w produkcji, jak również z innymi własnymi obiektami. Dzięki temu możemy tworzyć obiekty z dodatkowymi polami rozszerzającymi inne obiekty (np. obiekt rozszerzający pozycję Zamówienia Obcego o dodatkowe pola). Definiowanie obiektu biznesowegodispatch FApplication = "Unicore.Common.Application.FApplication"
dispatch Object = FApplication.NewObject("CPozycjaZO")
print "Typ obiektu: "+ Object.Type + LF
if Object.Definition.Fields.Count == 0 then
// definicja pól definicji obiektu
// String = 1 Numeric = 2 Int = 3 Date = 4 Boolean = 5
Object.Definition.AddField("idzo", 3)
Object.Definition.AddField("szerokosc", 2)
Object.Definition.AddField("opis", 1)
endif
int l = 0
print "Pola definicji obiektu" + LF
while l < Object.Definition.Fields.Count
l += 1
print Object.Definition.Fields.Item(l).FieldName + " - "+
Object.Definition.Fields.Item(l).GetFieldType() + LF
wend
Powyższy przykład pokazuje utworzenie obiektu o typie CPozycjaZO (typ jest określany przez użytkownika, może to być dowolna nazwa) jako zmiennej Object. Następnie tworzona jest definicja dla tego obiektu Object.Definition.Fields. Po utworzeniu nowej instancji obiektu danego typu FApplication.NewObject("typ_obiektu") możemy nadać oraz odczytać wartości poszczególnych pól z definicji tego obiektu, na przykład: // Ustawianie wartości pól obiektu
Object.Edit()
Object.SetField("idzo", 1)
Object.SetField("opis", "Przykładowy opis pozycji ZO")
Object.SetField("szerokosc", 1.5)
// Odczyt wartości pól obiektu
print "Opis: "+ Object.GetField("opis") + LF
print "Szerokość: " + Object.GetField("szerokosc") + LF
print "Id zo: " + Object.GetField("idzo")
Obiekt z nadanymi wartościami pól możemy zapisać. Każdy obiekt definiowany standardowo zawiera dwie propercje: ID - klucz obiektu, Type - typ obiektu oraz metody obsługujące obiekt: Edit(), Save(), SaveAsNew(), Remove(). if Object.ID < 0 then
Object.SaveAsNew()
else
if Object.Save().Success then
print "Zapisano poprawnie"
endif
endif
Dostęp do obiektów definiowanych poprzez obiekt aplikacjiDo obiektów definiowanych przez użytkownika mamy dostęp poprzez obiekt aplikacji FApplication, w następujący sposób: dispatch FApplication = "Unicore.Common.Application.FApplication"
dispatch Object = FApplication.NewObject("CPozycjaZO")
print "Lista obiektów CPozycjaZO" + LF
int l = 0
int count = FApplication.Objects("CPozycjaZO").Count
print using "Ilość obiektów: %l\n", count
while l < count
l += 1
Object = FApplication.Objects("CPozycjaZO").Item(l)
print Object.GetField("opis") + " ; " + Object.GetField("szerokosc") + LF
wend
Pobieranie danych obiektu definiowanego dispatch FApplication = "Unicore.Common.Application.FApplication" dispatch Object = FApplication.NewObject("CPozycjaZO") Object.GetByField("opis", "Opis obiektu najlepiej unikalny w przypadku pobierania obiektu wg tego pola") Powyższy przykład powoduje utworzenie nowego obiektu użytkownika o zdefiniowanym typie CPozycjaZO, a następnie pobranie danych tego obiektu według pola opis. W przypadku pobierania danych według danego pola zaleca się, aby te pole było unikalne np. klucz obiektu lub kod obiektu. Łączenie obiektów z innymi obiektami biznesowymi Produkcji Obiekt można łączyć z dowolnym innym obiektem biznesowych w następujący sposób: Object.Link("WorkCenter", 1) powoduje połączenie obiektu Object z obiektem Stanowiska Roboczego (WorkCenter) o ID = 1. Połączone obiekty można odczytać w następujący sposób: int i = 0
dispatch WorkCenter = "Unicore.Common.BusinessObjects.CWorkCenter"
if WorkCenter.GetByID(1).Success then
print "Stanowisko Robocze " + WorkCenter.ShortName + LF
while i < WorkCenter.Objects("CPozycjaZO").Count
i += 1
Object = WorkCenter.Objects("CPozycjaZO").Item(i)
print "Obiekt Stanowiska: "+ Object.GetField("opis") + LF
wend
endif
Powyższy przykład przedstawia dostęp do obiektów typu przez połączony obiekt Stanowiska Roboczego. Można również w drugą stronę: od obiektu zdefiniowanego (CPozycjaZO) dostać się do połączonego obiektu Stanowiska Roboczego, jak również do innych obiektów biznesowych w następujący sposób: while i < Object.WorkCenters.Count |
||