Skocz do zawartości

Znajdź zawartość

Wyświetlanie wyników dla tagów 'pola własne' .

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj przy użyciu nazwy użytkownika

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Od tej daty

    Do tej daty


Ostatnia aktualizacja

  • Od tej daty

    Do tej daty


Filtruj po ilości...

Dołączył

  • Od tej daty

    Do tej daty


Grupa podstawowa


O mnie


Tytuł własny

Znaleziono 2 wyniki

  1. Poniższy tutorial opisuje, jak we własnym zakresie na wydruku paczek dodać pole własne towaru. Pola własne na wydrukach? W edytorze wydruków jest dostępny tylko pewien zamknięty zbiór statycznych pól, do których można się odwołać (np Paczka_Dostawa). Nie ma tam pól własnych, które są polami dynamicznymi (można je dodawać lub usuwać w słowniku). Silnik wydruków umożliwia jednak wykonywanie fragmentów skryptów pisanych w języku C#. Poniżej przedstawiamy krok po kroku jak wyświetlić na wydruku dowolne pole własne Sello jak i pole własne zewnętrzne (z Subiekta). Edytor wydruków Edytor wydruków jest dostępny w USTAWIENIA => SŁOWNIKI => Wydruki. W poniższym opisie przedstawimy modyfikację listy magazynowej, ale ten sam sposób można zastosować do dowolnego wydruku. Przed zmianami w wydruku warto zrobić jego kopię bezpieczeństwa (są na to dwa sposoby). Sposób pierwszy to powielenie wydruku listy magazynowej z poziomu słowników. Sposób ten ma wadę taką, że w razie potrzeby przepięcia się na poprzednią listę magazynową, trzeba zmieniać przypisanie wydruku we wszystkich używanych dostawach. Po otwarciu wydruku edytor można uruchomić linkiem Otwórz edytor wydruków. Sposób drugi, to skorzystanie z eksportu wzorca wydruku do pliku repx. W edytorze można aktualny wzorzec zapisać korzystając z menu Plik => Zapisz jako... W razie problemów z działaniem wydruku można go w podobny sposób przywrócić, za pomocą funkcji Plik => Otwórz. Ten sposób stworzenia kopii zapasowej zalecamy. Wzorzec wydruku Główną część okna edytora zajmuje wzorzec wydruku. Wygląda na skomplikowany ale w istocie składa się on z różnych sekcji, w których to sekcjach umieszczone są fragmenty wydruku, odpowiedzialne np za nagłówek strony, dane paczki, dane towarów paczki, stopkę listy towarów itp. W skrócie, sekcja Detail drukuje się raz dla każdej paczki, sekcja DetailReport - "Towary" drukuje się dla każdego towaru w paczce, tworząc tabelkę z kolejnymi towarami. Tabelka z towarami ma swój nagłówek i stopkę a więc znalazły się one również w tej sekcji jako GroupHeader1 (nagłówek) oraz GroupFooter1 (stopka). W środku sekcja Detail1 jest powtarzana dla każdego towaru w paczce. Edycja wzorca Pola własne należą do towarów, nie do paczek, zatem naturalnie umieścić je należy w sekcji DetailReport - "Towary". Aby dodać nową kolumnę, zacząć należy od sekcji nagłówka tabeli. Klikamy np na nagłówek Nazwa i z menu pod prawym klawiszem myszy wybieramy Wstaw => Kolumnę po prawej (lewej). W ten sposób należy dodać także nową kolumnę w sekcji Detail1. Aby zmienić nazwę kolumny nagłówka, czcionkę itp. należy wybrać ten element (xrTableCell9 w tym przypadku) i po prawej stronie w oknie Właściwości zmienić w danych pole Dane->Text, np. na nazwę swojego pola własnego (nazwa tutaj nie ma znaczenia, poniżej kolor). Podłączanie danych Następnie należy przejść do nowej komórki dodanej w sekcji Detail (tutaj xrTableCell10, nazwy mogą mieć inny indeks) i tym razem wybieramy z właściwości i Zachowanie->Scripts i klikamy przycisk po prawej stronie na skrypcie o nazwie Before Print. Gdyby chodziło o statyczne dane towaru, jak nazwa, symbol itp, można się tutaj odwołać do danych poprzez pole Dołączanie danych i wskazać np. Towary -> Towar_Nazwa. W przypadku pól własnych trzeba dodać skrypt w Before Print. Pojawi się okno z domyślnym (pustym) skryptem wykonywanym tuż przed drukowaniem tej komórki tabeli. Aby zawartość pola własnego pojawiła się w tym polu, należy w skrypcie dopisać jedną linijkę: ((XRControl)sender).Text = PoleWlasneSello("kolor"); Aby odwołać się do pola własnego zewnętrznego: ((XRControl)sender).Text = PoleWlasneZewnetrzne("kolor"); Linijkę tę należy wstawić pomiędzy nawiasy { i } oraz zmienić nazwę pola na takie jakie ma być umieszczone w tej komórce (tutaj dałem kolor). Aby sięgnąć do pól, które zawierają spację w nazwie, należy ją zamienić na podkreślnik ("kolor rękawa" -> "kolor_rękawa") Skryptu Before Print powinien wyglądać tak jak poniżej: Podobnie można dodać inne pola własne do tabeli czy do pola tekstowego, istotne jest aby w skrypcie znalazła się taka linijka wskazująca z którego pola własnego ma zostać pobrana wartość. Konfiguracja Sięganie do pól własnych działa w oparciu o bezpośrednie połączenie do bazy danych Sello. Należy zatem wykonać jeszcze jeden krok. W oknie Eksplorator po prawej stronie, należy zaznaczyć pierwszy element w drzewie (nadrzędny), xtraReport1 i dla niego również przejść do właściwości Zachowanie -> Scripts -> Before Print i wkleić poniższą zawartość (zastąpić domyślny - pusty skrypt). Jeśli skrypty mają jakąś niepustą zawartość, wtedy widać ich pierwszą linijkę (w tym przypadku komentarz // KONFIGURACJA). Dzięki temu łatwo ustalić gdzie jest wpisany jakiś skrypt. // KONFIGURACJA ------------------------------------------------------ // Adres serwera SQL z bazą Sello string serwerSQL = @"(local)\INSERTGT"; // Autentykacja Windows (true), autentykacja login+hasło (false) bool autentykacjaWindows = false; // Login SQL (jeśli autentykacjaWindows = false, domyślnie "sa") string loginSQL = "sa"; // Hasło SQL (jeśli autentykacjaWindows = false, domyślnie "") string hasloSQL = ""; // Nazwa bazy danych Sello string bazaDanych = "TUTAJ_NAZWA_BAZY_DANYCH_SELLO"; // Tryb debugowania (wyświetlania błędów) bool debug = false; // KONIEC KONFIGURACJI ------------------------------------------------------ // Poniższego kodu nie edytować using System.Data.SqlClient; using System.Data; string connectionString; bool connectionValid = false; private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.ConnectTimeout = 10; sb.DataSource = serwerSQL; sb.IntegratedSecurity = autentykacjaWindows; sb.Password = hasloSQL; sb.UserID = loginSQL; sb.InitialCatalog = bazaDanych; connectionString = sb.ConnectionString; using(SqlConnection conn = new SqlConnection(connectionString)) { try { conn.Open(); connectionValid = true; } catch(SqlException ex) { System.Windows.Forms.MessageBox.Show(ex.Message); connectionValid = false; } } } public string PoleWlasneSello(string nazwa) { if(!connectionValid) return "- błąd konfiguracji -"; using(SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(@"select ia_AttributeValue from it_CustomAttributes join sl_CustomAttributes on cat_id = ia_AttributeId where ia_ItemId = @id and cat_name = @name", conn); cmd.Parameters.Add("@id", SqlDbType.Int); cmd.Parameters["@id"].Value = DetailReport.GetCurrentColumnValue("Towar_ID").ToString(); cmd.Parameters.Add("@name", SqlDbType.NVarChar); cmd.Parameters["@name"].Value = nazwa; try { conn.Open(); return (string)cmd.ExecuteScalar(); } catch(SqlException ex) { if(debug) System.Windows.Forms.MessageBox.Show(ex.Message); } } return "-błąd-"; } public string PoleWlasneZewnetrzne(string nazwa) { if(!connectionValid) return "- błąd konfiguracji -"; using(SqlConnection conn = new SqlConnection(connectionString)) { SqlCommand cmd = new SqlCommand(@"select eca_Value from it_ExternalCustomAttributes join it_ExternalCustomAttributesDict on ecd_id = eca_AttributeId where eca_ItemId = @id and ecd_SelloName = @name", conn); cmd.Parameters.Add("@id", SqlDbType.Int); cmd.Parameters["@id"].Value = DetailReport.GetCurrentColumnValue("Towar_ID").ToString(); cmd.Parameters.Add("@name", SqlDbType.NVarChar); cmd.Parameters["@name"].Value = nazwa; try { conn.Open(); return (string)cmd.ExecuteScalar(); } catch(SqlException ex) { if(debug) System.Windows.Forms.MessageBox.Show(ex.Message); } } return "-błąd-"; } W sekcji // KONFIGURACJA należy uzupełnić dane dostępowe do swojej bazy Sello, z której wydruk ma czerpać dane, w szczególności nazwę bazy danych. Uruchomienie Po wpisaniu danych można uruchomić testowo wydruk, aby sprawdzić, czy pola własne działają, oraz czy połączenie się udało. Jeśli konfiguracja jest niepoprawna, pojawi się okienko z błędem. Jeśli jego treść będzie niezrozumiała prosimy podesłać ją do nas na forum. Aby wyjść z podglądu, należy przełączyć się na zakładkę Projektant. Wartości pól własnych w podglądzie mogą nie być widoczne, gdyż zależy to mocno od korelacji między danymi testowymi na wydruku a istniejącymi w bazie polami własnymi. Jeśli nie pojawi się żaden błąd podczas uruchamiania podglądu, można uznać, że połączenie się udało i przetestować działanie wydruku na faktycznych paczkach. Edytor można tym samym zamknąć (zapisać wzorzec), zapisać wydruk Sello.
  2. Jak zrobić dynamiczną listę w nowym opisie Allegro generowaną z pól własnych towaru? Na początek należy utworzyć pola własne - tyle ile maksymalnie może być różnych elementów na liście wypunktowanej. Można oczywiście posłużyć się również już zdefiniowanymi polami, lub też polami z Subiekta. Ja posłużę się dla przykładu nowymi 4 polami (można dodać dowolną ilość pól). W słowniku pól własnych tworzę pola: cecha_1 cecha_2 cecha_3 cecha_4 itd.. W tych polach będą umieszczane wartości, które mają się pojawić na liście wypunktowanej. Następnie dodaję nowe pole globalne o nazwie cechy_towaru z poniższą zawartością: <ul> [Towar::PW::cecha_1 | template=`<li>{value}</li>`] [Towar::PW::cecha_2 | template=`<li>{value}</li>`] [Towar::PW::cecha_3 | template=`<li>{value}</li>`] [Towar::PW::cecha_4 | template=`<li>{value}</li>`] </ul> W tym miejscu można użyć w podobny sposób innych pól towaru własnych lub zewnętrznych. Modyfikator template zapewni dodatkowo, żeby nie generowały się puste wypunktowane elementy. Jeśli w towarze nie będzie danego tagu to nie zostanie wygenerowany element listy li. W towarze, można teraz przypisywać cechy do pól własnych cecha_1..cecha_4 Natomiast w szablonie opisu aukcji, należy wstawić tag: [Podmiot::PW::cechy_towaru] W ten sposób dodając wybrane pola własne do towaru (co można robić zbiorczo) możemy za pomocą jednego tagu dodawać dynamicznie generowaną listę wypunktowaną nie wnikając w HTML, który jest pod spodem.
×
×
  • Dodaj nową pozycję...