Standardowe wykorzystanie transakcji j_insert_update.aspx ogranicza się do dopisywania i edycji pojedyńczych rekordów – najczęściej zapisów kartotekowych. Pojedynczy zapis to taki, który zawiera unikalny identyfikator pozycji i jest w tabeli zapisy jeden raz np. NRIDASN to unikalny identyfikator wiersza tabeli KNASO.
Artykuł opisuje jak za pomocą JQuery możemy przekonfigurować transakcję j_insert_update.aspx, aby móc stworzyć transakcję pozwalajacą na dopisywanie wielu rekordów jako pozycję dokumentu.
Uwaga: opis dla osób zaawansowanych w programowaniu JQuery + StudioSystem, zakładam że znane są poprzednie artykuły dotyczące zaawansowanego programowania transakcji j_insert_update.aspx w tym dodawania własnego pliku js i wskazywania funkcji.
Zadanie do wykonania
W efekcie zmian w konfiguracji chcemy otrzymać w pełni funkcjonalny formularz za pomocą którego będziemy mogli dopisywać pozycje zamówienia.
Krok 1
Przygotowujemy szablon insert update CRM_INS_DPHAN, i definiujemy jego zawartość:
Krok 2
Dodajemy polecenie uruchamiające transakcję j_insert_update.aspx która wyświetlać będzie nasz formularz w następujący sposób:
gdzie w kolumnie parametry transakcji podajemy
script=../role_crm/crm_dphan&scriptonload=SsOnLoad()&scriptonready=SsOnReady()&kodtransakcji=CRM_INS_DPHAN&leftpanelwidth=0&refno=
Krok 3
przygotowujemy plik role_crm/crm_dphan.js
w którym umieszczamy funkcje
SsOnLoad()
function SsOnLoad() { $('#BTN_DODAJ').html("<span id='btnDodaj' onclick='return btnDodaj()' class='art-button art-buttonBlue' style='width: 200px; '>Dodaj</span>"); UstawDphanTable('TABELA'); }
Funkcja dodaje w kontrolce o nazwie BTN_DODAJ przycisk i wskazuje że po jego kliknięciu ma być uruchomiona funkcja btnDodaj().
SsOnReady()
function SsOnReady() { $("#ctl00_ContentPlaceHolder1_ButtonZapisz").hide(); }
Funkcja ukrywa przycisk ZAPISZ w górnym pasku formularza, pozostaje tylko przycisk ANULUJ.
UstawDphanTable()
function UstawDphanTable(cKontrolka) { var idGrid = 'grid' + cKontrolka; $('#' + cKontrolka).html("<div id='" + idGrid + "' ></div>"); var cZrodlo = PobierzDataTable("UPPER(ID_DPHAN) AS ID_DPHAN, knaso.INDEKS, knaso.NAZWAAS, dphan.UWAGI, dphan.ILOSC FROM dphan INNER JOIN knaso ON dphan.NRIDASN = knaso.NRIDASN WHERE dphan.REFNO = " + gcRefno);
var source = { datatype: "json", datafields: [ { name: 'INDEKS', type: 'string' }, { name: 'NAZWAAS', type: 'string' }, { name: 'UWAGI', type: 'string' }, { name: 'ILOSC', type: 'string' } ], localdata: cZrodlo, id: 'ID_DPHAN' }; var dataAdapter = new $.jqx.dataAdapter(source);
$("#" + idGrid).jqxGrid( { theme: 'energyblue', height: '250px', width: '1000px', source: dataAdapter, altrows: true, columns: [ { text: 'Indeks', datafield: 'INDEKS', width: 200 }, { text: 'Nazwa', datafield: 'NAZWAAS', width: 300 }, { text: 'Ilość', datafield: 'ILOSC', width: 80, cellsalign: 'right', cellsformat: 'n' }, { text: 'Uwagi', datafield: 'UWAGI', width: 300 } ] });
JqxFormatujGrid('#' + idGrid);
}
Zadaniem funkcji jest zbudowanie tabelki na podstawie zapytania do bazy i umieszczenie jej we wskazanym obiekcie, nazwa przekazana jako zmienna cKontrolka.
btnDodaj()
function btnDodaj() { // kontrola wymagalnych pól if (!TestWypelnienia()) { return false; } // ustaw kontrahenta jako nieedytowalny $("#NRIDODN").jqxComboBox({ disabled: true });
cTablica = new Array(); var cLicznik = 0; $('[ssPostBack]').each(function (index) { cTablica[cLicznik] = new cListaKontrolek($(this)); cLicznik++; })
PageMethods.SendForm(cTablica, '0', DodajSucceeded, OnFailed);
return false; }
Zadaniem funkcji jest wykonanie zadań związanych z obsługą zdarzenia kliknięcia myszką przez użytkownika na przycisk DODAJ. Po kliknięciu kontrolka wyboru kontrahenta (NRIDODN) jest ustawiana jako nieedytowalna.
DodajSucceeded(wynik)
function DodajSucceeded(wynik) { if (wynik != "") { PokazAlert("Komunikat", wynik, 220, 400); return; } $("#UWAGI").val(''); $("#ILOSC").jqxNumberInput('setDecimal', 1); UstawDphanTable('TABELA'); JqxResetValue("NRIDASN"); $("#NRIDASN").jqxComboBox('focus'); }
Funkcja jest wykonywana po prawidłowym zakończeniu dopisywania danych do bazy. Jeżeli program zwraca jakiś komunikat błędu związanego z zapisem to obsługiwany jest przez zmienną wynik, jeżeli coś zwraca to wyświetla się okno z komunikatem.
Podsumowanie
Powyższy opis zawiera komplet do stworzenia zapisu wielopozycyjnego dokumentu zamówień dla kontrahenta, w efekcie w programie transakcja dla użytkownika wygląda tak:
A jak zatwierdzić dokument ?
Zatwierdzenie dokumentu polega na zmianie zapisu w kolumnie ACH na 1 oraz wygenerowaniu kolejnego numeru dokumentu.
Czytaj więcej:
j_insert_update – zaawansowane programowanie – przykład 1
Platforma StudioSystem to kompleksowe rozwiązanie do tworzenia i zarządzania zaawansowanymi formularzami, szablonami i dokumentami. Oferuje szeroki zakres możliwości, umożliwiając użytkownikom łatwe tworzenie i zarządzanie dokumentami, szybki dostęp do informacji i ich aktualizację oraz zapewnia potężny mechanizm przepływu pracy do automatycznego przetwarzania i przesyłania formularzy.
j_insert_update – zaawansowane programowanie – pozycje dokumentu cz. 3
Platforma StudioSystem i zaawansowane programowanie dają ogromne możliwości tworzenia oprogramowania. Ta platforma zapewnia pełny zestaw narzędzi i technologii, które upraszczają proces tworzenia i wdrażania aplikacji oraz zarządzania nimi. Zaawansowane języki programowania, takie jak C# i Java, umożliwiają programistom tworzenie aplikacji o szerokim zakresie możliwości i funkcji.
j_insert_update – zaawansowane programowanie – pozycje dokumentu cz. II
Zaawansowane języki programowania, takie jak C# i Java, dają programistom możliwość tworzenia zaawansowanych aplikacji z szeroką gamą funkcji i możliwości. Te języki są potężne i umożliwiają tworzenie aplikacji, które mogą obsługiwać duże ilości danych i zapewniają solidne interfejsy użytkownika. Deweloperzy mogą również korzystać z zaawansowanych funkcji, takich jak programowanie obiektowe i wątkowanie, co pozwala na
j_insert_update – zaawansowane programowanie – przykład 2
Dzięki platformie StudioSystem użytkownicy mogą tworzyć zaawansowane i dostosowane formularze do dowolnego celu. Od zbierania informacji o klientach po generowanie potencjalnych klientów i nie tylko, zaawansowane funkcje programowania formularzy platformy mogą zapewnić użytkownikom narzędzia, których potrzebują, aby ich formularze były jak najbardziej efektywne.
j_insert_update – zaawansowane programowanie – wstawianie tabeli
StudioSystem zapewnia również użytkownikom zaawansowane możliwości programistyczne. Jego język skryptowy oparty jest na JavaScript i ułatwia tworzenie złożonych aplikacji. Dodatkowo platforma oferuje obszerną dokumentację i samouczki, które ułatwiają naukę języka i szybkie rozpoczęcie pracy.