Anlegen von Normteilen im Artikelstamm
Moderator: SYNERPY
-
- Beiträge: 1
- Registriert: Do Dez 08, 2005 5:26 pm
Anlegen von Normteilen im Artikelstamm
Wir möchten unsere im Metallbaubetrieb verwendeten Normteile als Artikel anlegen. Da es mehrere Möglichkeiten gibt, sind wir uns nicht sicher, welches die bessere Methode ist.
Kann uns jemand aus Erfahrung sagen, wie die Normteile optimal hinsichtlich Stücklisten, Einkauf und Fertigung angelegt sein sollten?
Möglichkeit 1:
Artikel.Nr. M4x12 DIN912 8.8 blank
Artikel.Bez. Zylinderschraube
Möglichkeit 2:
Artikel.Nr. N123456
Artikel.Bez. Zylinderschraube M4x12 DIN912 8.8 blank
Möglichkeit 3: ...
Ist die Verwendung weiterer Felder (Matchcode, Sachmerkmale, DIN,...) sinnvoll?
Vielen Dank für die Hilfe
Kann uns jemand aus Erfahrung sagen, wie die Normteile optimal hinsichtlich Stücklisten, Einkauf und Fertigung angelegt sein sollten?
Möglichkeit 1:
Artikel.Nr. M4x12 DIN912 8.8 blank
Artikel.Bez. Zylinderschraube
Möglichkeit 2:
Artikel.Nr. N123456
Artikel.Bez. Zylinderschraube M4x12 DIN912 8.8 blank
Möglichkeit 3: ...
Ist die Verwendung weiterer Felder (Matchcode, Sachmerkmale, DIN,...) sinnvoll?
Vielen Dank für die Hilfe
-
- Beiträge: 34
- Registriert: Mi Mär 09, 2005 8:01 am
ich lehne "sprechende" Artikelnummern ab. Irgendwann gerät man an eine Grenze und hat eine Mischung aus "sprechenden" und "normalen" Artikelnumern im Materialstamm.
Wenn man im Bezeichnungsfeld die Texte so vergibt, dann hat man sehr gute Suchmöglichkeiten:
Skt-Schr.M10 x 12 DIN 933- 8
Skt-Schr.M12 x 16 DIN 933- 8
Gleiche gilt natürlich auch für Beilagscheiben, Muttern etc.
Wenn man im Bezeichnungsfeld die Texte so vergibt, dann hat man sehr gute Suchmöglichkeiten:
Skt-Schr.M10 x 12 DIN 933- 8
Skt-Schr.M12 x 16 DIN 933- 8
Gleiche gilt natürlich auch für Beilagscheiben, Muttern etc.
-
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Mit dem entsprechenden Code ist es in AvERP über die Sachmerkmale möglich, Artikelbezeichnungen (und ggf. auch -nummern) aus den Sachmerkmalen zu generieren.
Hier z.B. die Sachmerkmale
-Schraubenart
-Größe
-DIN
etc.
anlegen
und das System generiert dann immer in der gleichbleibenden Art und Weise die Artikelbezeichnung. Hier kann dann natürlich automatisch abgeprüft werden, ob es diesen Artikel schon in der Form gibt.
Hier z.B. die Sachmerkmale
-Schraubenart
-Größe
-DIN
etc.
anlegen
und das System generiert dann immer in der gleichbleibenden Art und Weise die Artikelbezeichnung. Hier kann dann natürlich automatisch abgeprüft werden, ob es diesen Artikel schon in der Form gibt.
-
- Beiträge: 5
- Registriert: Mo Jul 03, 2006 1:43 pm
Hallo,
genau an dieser Möglichkeit der automatischen Definition von Artikelbezeichnungen beiße ich mir seit Stunden die Zähne aus. Ich habe ein Sachmerkmals Template namens “Schrauben” angelegt, mit folgenden Einzelmerkmalen:
Schraubenart: Auswahlliste (“Innensechskantschraube=Iskt-Schr.”,“Sechskantschraube=Skt-Schr.”, etc)
Groesse: Auswahlliste (“M3=M3",”M4=M4" etc.)
Laege in mm: Zeichenkette
Aus diesen Merkmalen möchte ich eine Nomenklatur zur Vergabe der Artikelbezeichnung bilden, so dass Artikel z.B. wie folgt heißen:
Iskt-Schr.M3*30
Skt-Schr.M4*60
usw.
Ich kann die entsprechenden Merkmale zwar im Artikelstamm wählen, finde aber keine Möglichkeit, sie sprechend in die Artikelbezeichnung zu übernehmen. Wie geht das?
Danke im Voraus,
Thomas
genau an dieser Möglichkeit der automatischen Definition von Artikelbezeichnungen beiße ich mir seit Stunden die Zähne aus. Ich habe ein Sachmerkmals Template namens “Schrauben” angelegt, mit folgenden Einzelmerkmalen:
Schraubenart: Auswahlliste (“Innensechskantschraube=Iskt-Schr.”,“Sechskantschraube=Skt-Schr.”, etc)
Groesse: Auswahlliste (“M3=M3",”M4=M4" etc.)
Laege in mm: Zeichenkette
Aus diesen Merkmalen möchte ich eine Nomenklatur zur Vergabe der Artikelbezeichnung bilden, so dass Artikel z.B. wie folgt heißen:
Iskt-Schr.M3*30
Skt-Schr.M4*60
usw.
Ich kann die entsprechenden Merkmale zwar im Artikelstamm wählen, finde aber keine Möglichkeit, sie sprechend in die Artikelbezeichnung zu übernehmen. Wie geht das?
Danke im Voraus,
Thomas
-
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Dadurch, dass die Sachmerkmale dynamisch hinterlegt werden müssen, muss dies über ein Skript bei den Sachmerkmalen (Maske "Template-Einzelmerkmale") hinterlegt werden.
Hier ein Beispiel:
Hier die Erklärung:
Wenn die ID des Sachmerkmals 2 ist,
und der Wert verändert wurde (wenn es den Artikel schon gab, aber dieser bearbeitet wurde).
Dann wird die Prozedur "P_BPROPBSA_LESEN" ausgeführt. Diese wurde am Anfang des Codes definiert. Die Prozedur bringt entweder den Wert vor oder nach dem "=" zurück, also entweder "Innensechskanntschraube" oder "Iskt-Schr.". (Übrigens: das "=" muss nicht vergeben werden, "M3=M3" macht nicht wirklich Sinn, es sollte hier "M3","M4" etc. eingegeben werden.)
Jetzt wird der Rückgabewert der Prozedur in die Variable "sWert1" eingelesen.
Am Ende wird der Code dann in der gewünschten Reihenfolge zusammengebaut und der Artikelnummer, bzw. Artikelbezeichnung zugewiesen.
Wie schon gesagt, muss hier (leider) etwas programmiert werden. Aber da es sich eigentlich nur um Kopieren und Ergänzen handelt, sollte das nicht allzu schwer sein.
Hier ein Beispiel:
Code: Alles auswählen
begin
//DebugOn := true;
bChange := false;
sWert0 := 'r';
sWert1 := '';
sWert2 := '';
sWert3 := '';
sWert4 := '';
sWert5 := '';
sWert6 := '';
sWert7 := '';
sWert8 := '';
sWert9 := '';
sWert10 := '';
sWert11 := '';
mWert0 := '';
mWert1 := '';
mWert2 := '';
mWert3 := '';
mWert4 := '';
mWert5 := '';
mWert6 := '';
mWert7 := '';
mWert8 := '';
mWert9 := '';
mWert10 := '';
mWert11 := '';
nBSA_ID := AsInteger(Self.o_MyQuery.FieldByName('ID'));
MyStP := FrmData.StP_Universal;
MyStP.StoredProcName := 'P_BPROPBSA_LESEN';
MyStP.ParamByName('BSA_ID',nBSA_ID);
oStr := Self.StringGrid1;
for i := 0 to oStr.RowCount-1 do
begin
// Größe
if oStr.ReadCell(0,i) = '2' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',2);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
sWert1 := AsString(MyStP.FieldByName('INHALT'));
mWert1 := oStr.ReadCell(8,i);
end
else
// Dessin
if oStr.ReadCell(0,i) = '4' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',4);
MyStP.ParamByName('WERTART',1);
MyStP.Execute;
sWert2 := AsString(MyStP.FieldByName('INHALT'));
mWert2 := oStr.ReadCell(8,i);
end
else
// Qualität
if oStr.ReadCell(0,i) = '3' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',3);
MyStP.ParamByName('WERTART',1);
MyStP.Execute;
sWert3 := AsString(MyStP.FieldByName('INHALT'));
mWert3 := oStr.ReadCell(8,i);
end
else
// FarbNr
if oStr.ReadCell(0,i) = '5' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',5);
MyStP.ParamByName('WERTART',1);
MyStP.Execute;
sWert4 := AsString(MyStP.FieldByName('INHALT'));
MyStP.ParamByName('BPROP_ID',5);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
sWert5 := AsString(MyStP.FieldByName('INHALT'));
mWert4 := oStr.ReadCell(8,i);
end
else
// Farbbezeichnung
if oStr.ReadCell(0,i) = '4' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',5);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
sWert5 := AsString(MyStP.FieldByName('INHALT'));
mWert5 := oStr.ReadCell(8,i);
end;
// Besonderheit
if oStr.ReadCell(0,i) = '10' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
sWert6 := oStr.ReadCell(8,i);
mWert6 := oStr.ReadCell(8,i);
end;
// Ausrüstungsnummer
if oStr.ReadCell(0,i) = '6' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',6);
MyStP.ParamByName('WERTART',1);
MyStP.Execute;
sWert7 := AsString(MyStP.FieldByName('INHALT'));
mWert7 := oStr.ReadCell(8,i);
end;
// Konfektionsart
if oStr.ReadCell(0,i) = '8' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',8);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
sWert8 := AsString(MyStP.FieldByName('INHALT'));
mWert8 := oStr.ReadCell(8,i);
end;
// Wahl
if oStr.ReadCell(0,i) = '7' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',7);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
sWert9 := AsString(MyStP.FieldByName('INHALT'));
end;
// Verpackungsart
if oStr.ReadCell(0,i) = '9' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
MyStP.ParamByName('BPROP_ID',9);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
sWert10 := AsString(MyStP.FieldByName('INHALT'));
mWert10 := oStr.ReadCell(8,i);
end;
// Geschäftsfeld
if oStr.ReadCell(0,i) = '1' then
begin
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
mWert11 := oStr.ReadCell(8,i);
end;
end;
if bChange then
begin
// Neue Artikelbezeichnung generieren
M := Self.o_MyQuery.FieldByName('ARTBEZ');
N := Self.o_MyQuery.FieldByName('MASKENKEY');
swert4 := copy(swert4,1,4) + '/' + copy(swert4,5,2);
if (sWert6 <> '') then
trenner1 := '- '
else
trenner1 := '';
if (sWert5 = 'weiß') then
sWert5 := ''
else
sWert5 := sWert5 + ' ';
// Artikelbezeichnung und Artikelnummer
s1 := sWert0 + sWert1 +' '+ sWert2 +'/'+ sWert3 +' '+ sWert4 + ' ' + sWert5 + sWert6;
s2 := mWert11 + mWert3 + mWert1 + mWert2 + mWert4 + '000000000';
M.AsString := s1;
N.AsString := s2;
// Mengeneinheiten vorbelegen
M := Self.o_MyQuery.FieldByName('BMENG_ID_ME_E');
M.AsInteger := 2;
M := Self.o_MyQuery.FieldByName('BMENG_ID_ME_V');
M.AsInteger := 2;
M := Self.o_MyQuery.FieldByName('BMENG_ID_ME_L');
M.AsInteger := 2;
M := Self.o_MyQuery.FieldByName('BMENG_ID_ME_F');
M.AsInteger := 2;
M := Self.o_MyQuery.FieldByName('BMENG_ID_PE_E');
M.AsInteger := 2;
M := Self.o_MyQuery.FieldByName('BMENG_ID_PE_V');
M.AsInteger := 2;
// Charge JN = 'N'
M := Self.o_MyQuery.FieldByName('CHARGE_JN');
M.AsString := copy(FrmData.sJaNein,1,1);
end;
end;
Hier die Erklärung:
Code: Alles auswählen
// Größe
Code: Alles auswählen
if oStr.ReadCell(0,i) = '2' then
begin
Code: Alles auswählen
if oStr.ReadCell(7,i) <> oStr.ReadCell(8,i) then bChange := true;
Code: Alles auswählen
MyStP.ParamByName('BPROP_ID',2);
MyStP.ParamByName('WERTART',2);
MyStP.Execute;
Code: Alles auswählen
sWert1 := AsString(MyStP.FieldByName('INHALT'));
mWert1 := oStr.ReadCell(8,i);
end
Code: Alles auswählen
// Artikelbezeichnung und Artikelnummer
s1 := sWert0 + sWert1 +' '+ sWert2 +'/'+ sWert3 +' '+ sWert4 + ' ' + sWert5 + sWert6;
s2 := mWert11 + mWert3 + mWert1 + mWert2 + mWert4 + '000000000';
// Neue Artikelbezeichnung generieren
M := Self.o_MyQuery.FieldByName('ARTBEZ');
N := Self.o_MyQuery.FieldByName('MASKENKEY');
M.AsString := s1;
N.AsString := s2;
-
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
-
- Beiträge: 5
- Registriert: Mo Jul 03, 2006 1:43 pm
Sachmerkmale
Bei der Nutzung der (sehr angenehmen) Sachmerkmalen ist mir folgendes aufgefallen. Vergibt man ein Einzelmerkmal mit Auswahlbox, z.B. Schraubenart (Zylinderkopfschrauben, Innensechskantschrauben...etc.) und hinterlegt dieses Sachmerkmal in einem Artikel, so lassen sich die Einträge der Auswahlbox nicht mehr ändern (z.B. Tippfehler) oder durch Einfügen erweitern. Man kann allerdings die Einträge der Auswahl Box am Ende ergänzen..
Entfernt man dieses Einzelmerkmal temporär aus dem Artikel, so hat man wieder komplette Kontrolle über die Auswahlbox (ändern, einfügen und ergänzen).
Gibt es eine Möglichkeit, die Sachmerkmal Auswahleinträge zu bearbeiten, ohne das Sachmerkmal vorher aus Hunderten von Artikeln zu entfernen (und danach wieder bei Null zu beginnen)? Ohne diese Möglichkeit müsste man ja eine so sorgfältige Sachmerkmalsdefinition erstellen, die ohne Notwendigkeit der Änderung oder Ergänzung die nächsten 10 Jahre übersteht.
Danke im Voraus
Thomas
Bei der Nutzung der (sehr angenehmen) Sachmerkmalen ist mir folgendes aufgefallen. Vergibt man ein Einzelmerkmal mit Auswahlbox, z.B. Schraubenart (Zylinderkopfschrauben, Innensechskantschrauben...etc.) und hinterlegt dieses Sachmerkmal in einem Artikel, so lassen sich die Einträge der Auswahlbox nicht mehr ändern (z.B. Tippfehler) oder durch Einfügen erweitern. Man kann allerdings die Einträge der Auswahl Box am Ende ergänzen..
Entfernt man dieses Einzelmerkmal temporär aus dem Artikel, so hat man wieder komplette Kontrolle über die Auswahlbox (ändern, einfügen und ergänzen).
Gibt es eine Möglichkeit, die Sachmerkmal Auswahleinträge zu bearbeiten, ohne das Sachmerkmal vorher aus Hunderten von Artikeln zu entfernen (und danach wieder bei Null zu beginnen)? Ohne diese Möglichkeit müsste man ja eine so sorgfältige Sachmerkmalsdefinition erstellen, die ohne Notwendigkeit der Änderung oder Ergänzung die nächsten 10 Jahre übersteht.
Danke im Voraus
Thomas
-
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth