Darek Darek

Darek Darek Secjalista

Temat: Cecha referencyjna - załączniki towaru

Witam,
Korzystam z szablonu wydruku oferty do odbiorcy który przy każdej pozycji towarowej wstawia miniaturkę ze zdjęciem,

Problem polega na tym że aktualnie nie mam możliwości wyboru miniaturki która ma się wyświetlać w wydruku, działą to na takiej zasadzie że wybierane jest zdjęcie na podstawie prefiksu w nazwie załącznika,

czy jest możliwośc wyciągnięcia listy załączników za pomocą cechy referencyjnej tak aby była ona dostepna z poziomu pozycji dokumentu ?
Mariusz Głowacki

Mariusz Głowacki Prezes Zarządu w
cdnet sp. z o.o.

Temat: Cecha referencyjna - załączniki towaru

Referencji do załączników nie ma.
Można przygotować cechę algorytmiczną do pozycji dokumentu która będzie zawierać nazwy załączników. Wybrany w tej cesze załącznik drukuje się w dokumencie. Napewno trzeba będzie też zmienić sam szablon wydruku uwzględniajacy takie wskazywanie załączników.
Darek Darek

Darek Darek Secjalista

Temat: Cecha referencyjna - załączniki towaru

Zgadza się, źle to ubrałem w słowa,

udało mi się stworzyć taką listę, jednak na ten moment wyciągam jedynie ID załącznika, nie bardzo wiem jak wyciągnąć nazwę, algorytm cechy

public string[] GetListLista(){
//W tym miejscu można filtrować lub rozszerzać standardową listę wartości
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();
var lista = Row.Towar.Attachments.CreateView().ToArray();

int dlugosc = lista.Length - 1;

for(int i = 0; i <= dlugosc; i++)
{

list.Add(lista[i].ID.ToString());

}

return list.ToArray();
}

public string Feature_Lista(string value) {
// Tutaj umieść kod wywoływany przed ustawieniem wartości cechy
// Wartość value można zmieniać
return value;
}Ten post został edytowany przez Autora dnia 29.04.22 o godzinie 11:11
Paweł Kruk

Paweł Kruk programista hobbysta
:-)

Temat: Cecha referencyjna - załączniki towaru

Najprościej po prostu :)

public string[] GetListLista()
{
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();
foreach(Soneta.Business.Db.Attachment a in Row.Towar.Attachments){;
list.Add(a.Name);
}
return list.ToArray();
}Ten post został edytowany przez Autora dnia 04.05.22 o godzinie 19:16
Darek Darek

Darek Darek Secjalista

Temat: Cecha referencyjna - załączniki towaru

9Faktycznie wydaje się prosto, jednak lista jest pusta ;(

zadziałało poniższym kodem, jednak petla iteruje wszystkie załączniki z bazy i dopasowuje je do produktów po ID, obawiam się co do wydajności tej cechy, narazie nie ma za dużo załaczników więc jakoś działa, ,

public string[] GetListLista_zdjec(){
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();
var lista = Row.Towar.Attachments.CreateView().ToArray();
int dlugosc = lista.Length - 1;
var attachment = Row.Towar.Attachments.Cast<Soneta.Business.Db.Attachment>().ToArray();
int dlugosc_attachment = attachment.Length - 1;
var id = 0;

for(int i = 0; i <= dlugosc; i++){

id = lista[i].ID;

for(int k = 0; k <= dlugosc_attachment; k++){

if( id == attachment[k].ID)
{
list.Add(attachment[i].Name);
}

}

}

return list.ToArray();
}
Paweł Kruk

Paweł Kruk programista hobbysta
:-)

Temat: Cecha referencyjna - załączniki towaru

Darek D.:
9Faktycznie wydaje się prosto, jednak lista jest pusta ;(

Może cecha nie skonfigurowana?
Typ Tekst,
Rodzaj - w bazie z algorytmem
Słownik - dostępny Tak - słownik podpowiedzi.
Darek Darek

Darek Darek Secjalista

Temat: Cecha referencyjna - załączniki towaru

Wszystko się zgadza. pomimo to lista jest pusta ;(
Paweł Kruk

Paweł Kruk programista hobbysta
:-)

Temat: Cecha referencyjna - załączniki towaru

Upewnię się czy dobrze zrozumiałem założenia.
Załączniki podpięte są przez asystenta do poszczególnych towarów.
Cecha jest zdefiniowana na typie PozycjeDokHan.
Podczas dodawania pozycji chcemy przypisać do niej wskazanie na jeden z załączników towaru wybranego na tą pozycję.
Czy tak?

Przy takich założeniach pusta lista będzie tylko w dwóch przypadkach:
1. Na pozycji nie wskazano jeszcze towaru
2. Do wskazanego na pozycji towaru nie przypisano jeszcze żadnego załącznika.

W przeciwnym wypadku algorytm działa poprawnie.

Chyba, że układ danych jest inny niż zrozumiałem z wątku to poproszę o sprostowanie :)

PS.
Można jeszcze dodać sprawdzenie wypełnienia towaru, żeby próba użycia cechy bez towaru nie śmieciła po logach :)

public string[] GetListLista()
{
System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();
if(Row.Towar!=null)
{
foreach(Soneta.Business.Db.Attachment a in Row.Towar.Attachments)
{
list.Add(a.Name);
}
}
return list.ToArray();
}Ten post został edytowany przez Autora dnia 11.05.22 o godzinie 18:48
Darek Darek

Darek Darek Secjalista

Temat: Cecha referencyjna - załączniki towaru

Załóżenia się zgadzają, jednak na ten moment mam problem z edycją szablonu

w skryptach szablonu mam taki kod

var towar = (Grid1Lista.GetCurrentRow() as PozycjaDokHandlowego).Towar;
var pozycja = (Grid1Lista.GetCurrentRow() as PozycjaDokHandlowego);
var attachment = towar.Attachments.Cast<Soneta.Business.Db.Attachment>().FirstOrDefault(x => x.Name == pozycja.Features["Lista_zdjec"].ToString() );
if (attachment != null)
{
var stream = attachment.SaveToStream();
pictureBox1.Image = System.Drawing.Image.FromStream(stream);

}
else
{
pictureBox1.Image = null;
}


przy próbie wygenerowania wydruku wyskakuje błąd


Obrazek


wcześniej kod wyglądał nastepująco,


var towar = (Grid1Lista.GetCurrentRow() as PozycjaDokHandlowego).Towar;
var attachment = towar.Attachments.Cast<Soneta.Business.Db.Attachment>().FirstOrDefault(x => NazwaZgodna(x.Name));
if (attachment != null)
{
var stream = attachment.SaveToStream();
pictureBox1.Image = System.Drawing.Image.FromStream(stream);

}
else
{
pictureBox1.Image = null;
}
]

private bool NazwaZgodna(string s)
{
s = s.ToLower();
return s.StartsWith("fv_") && s.EndsWith(".png");
}

Ten post został edytowany przez Autora dnia 12.05.22 o godzinie 15:31

Następna dyskusja:

cecha referencyjna z filtrem




Wyślij zaproszenie do