рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдмрдВрдзрди

рдЫрд╡рд┐

рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдХрд╛рд░реНрдп рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рд╖рдп (рдпрд╛ рд╡рд┐рд╖рдпреЛрдВ) рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рдордп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рддрд░реНрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдарддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреБрдХрд╛рдиреЛрдВ рдореЗрдВ рдорд╛рд▓ рдХреЗ рдЦреБрджрд░рд╛ рдореВрд▓реНрдп рдпрд╛ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП KPI рд╕рдВрдХреЗрддрдХреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди рддрд░реНрдХ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреНрдпрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░рдмрдВрдзрдХреАрдп рдкреНрд░рднрд╛рд╡ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░реЗрдЧрд╛, рди рдХрд┐ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдмред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЦреБрд▓реЗ рдФрд░ рдореБрдХреНрдд lsFusion рдордВрдЪ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╛рди рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдкрд░рд┐рдЪрдп


рд▓реЗрдЦ рдХреА рдПрдХ рд╕рд░рд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдп рд▓реЗрддреЗ рд╣реИрдВ, рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрд╛рдж, рдФрд░ рдЧреЛрджрд╛рдо рд╡рд┐рд╖рдп рд╣реЛрдВрдЧреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рдВрднрд╡ рдЕрдВрддрд░рд╛рд▓ рдХреА рддрд╛рд░реАрдЦ рд╣реЛрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдХрд┐ рдХрд┐рд╕реА рдЙрддреНрдкрд╛рдж рдФрд░ рдЧреЛрджрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рддрд┐рдерд┐ рдХреА рдХреАрдордд рдХреНрдпрд╛ рд╣реЛрдЧреАред

рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдпреЛрдЬрдирд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧреАред рдбреЛрдореЗрди рд▓реЙрдЬрд┐рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди, рдПрдХ рдПрдХрд▓ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдЧрд╛ , рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд┐рдерд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдПрдЧреАред рдХрдИ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рдРрд╕реЗ рдХрдорд┐рдЯ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдпрд╛ рд▓реЗрдирджреЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕реЗ рд╣рдорд╛рд░рд╛ рддрд╛рддреНрдкрд░реНрдп рддрдерд╛рдХрдерд┐рдд рдореВрд▓реНрдп рд╕реВрдЪреА рд╕реЗ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдп рд╕реВрдЪреА рдореЗрдВ рдорд╛рд▓ рдФрд░ рдЧреЛрджрд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рднреАред

рд╡рд░реНрдгрд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╛рдпрджреЗ рд╣реИрдВ:

  • рдПрдЯрдореЙрд╕рд┐рдЯреА ред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдПрдХ рдЕрд▓рдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░реЗ рдмрджрд▓рд╛рд╡ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рдЖрд╕рд╛рди рд╣реИред
  • рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдХрд┐рд╕рдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдФрд░ рдХрдм, рд╕рд╛рде рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдХреЗ рдХрд╛рд░рдг рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ред

рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдорд┐рдЯ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рд╕рдордп рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рджрд░реНрдж рд░рд╣рд┐рдд рд╕рднреА рдХреЛ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╣рдо рдЧреЛрджрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдбреЛрдореЗрди рд▓реЙрдЬрд┐рдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдЧреЛрджрд╛рдореЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдЧрд╣рд░рд╛рдИ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдорд┐рд▓рд╛рдХрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реА рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХреЛрдб рджреЗ рджреВрдВрдЧрд╛ рдЬреЛ рд╕рдореВрд╣реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдмрдирд╛рддрд╛ рд╣реИ:

рдЧреЛрджрд╛рдо рд╕рдореВрд╣ рд╡рд┐рдЬреНрдЮрд╛рдкрди
CLASS Group ' ' ;
name '' = DATA ISTRING [ 50 ] (Group);

parent = DATA Group (Group);
nameParent ' ' (Group g) = name(parent(g));

level '' (Group child, Group parent) =
RECURSION 1l IF child IS Group AND parent = child
STEP 2l IF parent = parent($parent) MATERIALIZED ;

FORM group ' '
OBJECTS g = Group PANEL
PROPERTIES (g) name, nameParent

EDIT Group OBJECT g
;

FORM groups ' '
OBJECTS g = Group
PROPERTIES (g) READONLY name, nameParent
PROPERTIES (g) NEWSESSION NEW , EDIT , DELETE

LIST Group OBJECT g
;

NAVIGATOR {
NEW groups;
}

рд╕рдореВрд╣ рдкрджрд╛рдиреБрдХреНрд░рдо рдЙрджрд╛рд╣рд░рдг
рдЫрд╡рд┐


рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрди рдЧреЛрджрд╛рдореЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рд╕рдореВрд╣ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдШреЛрд╖рдгрд╛
CLASS Stock '' ;
name '' = DATA ISTRING [ 50 ] (Stock);

group '' = DATA Group (Stock);
nameGroup '' (Stock st) = name(group(st));

FORM stock ''
OBJECTS s = Stock PANEL
PROPERTIES (s) name, nameGroup

EDIT Stock OBJECT s
;

FORM stocks ''
OBJECTS s = Stock
PROPERTIES (s) READONLY name, nameGroup
PROPERTIES (s) NEWSESSION NEW , EDIT , DELETE

LIST Stock OBJECT s
;

NAVIGATOR {
NEW stocks;
}


рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдЙрджрд╛рд╣рд░рдг
рдЫрд╡рд┐


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдорд╛рд▓ рдХреЗ рддрд░реНрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ:

рдЙрддреНрдкрд╛рдж рдХреА рдШреЛрд╖рдгрд╛
CLASS Product '' ;
name '' = DATA ISTRING [ 50 ] (Product);

FORM product ''
OBJECTS p = Product PANEL
PROPERTIES (p) name

EDIT Product OBJECT p
;

FORM products ''
OBJECTS p = Product
PROPERTIES (p) READONLY name
PROPERTIES (p) NEWSESSION NEW , EDIT , DELETE

LIST Product OBJECT p
;

NAVIGATOR {
NEW products;
}

рдЙрддреНрдкрд╛рдж рдЙрджрд╛рд╣рд░рдг
рдЫрд╡рд┐


рд╣рдо рдореВрд▓реНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рддрд░реНрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдореВрд▓реНрдп рд╕реВрдЪреА рд╡рд░реНрдЧ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
CLASS PriceList '-' ;
fromDate ' ' = DATA DATE (PriceList);
toDate ' ' = DATA DATE (PriceList);
рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рджрд┐рдирд╛рдВрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рддреЛ рдореВрд▓реНрдп рд╕реВрдЪреА рдЕрдВрддрд╣реАрди рд╣реИред
рд╣рдо рдПрдХ рдШрдЯрдирд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдореВрд▓реНрдп рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╕рдордп, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдХреЛ рдиреАрдЪреЗ рд░рдЦ рджреЗрдЧреА, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
WHEN LOCAL SET (PriceList p IS PriceList) DO
fromDate(p) <- currentDate();
LOCAL рдХреАрд╡рд░реНрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗрд╡ рд╣реЛрдиреЗ рдкрд░ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдЖрдЧ рдирд╣реАрдВ рд▓рдЧреЗрдЧреА, рд▓реЗрдХрд┐рди рдмрджрд▓рд╛рд╡ рд╣реЛрдиреЗ рдкрд░ рддреБрд░рдВрддред

рдлрд┐рд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
createdTime ' ' = DATA DATETIME (PriceList);
createdUser = DATA User (PriceList);
nameCreatedUser '' (PriceList p) = name(createdUser(p));
рдЕрдм рдПрдХ рдРрд╕реА рдШрдЯрдирд╛ рдмрдирд╛рдПрдБ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдЙрдиреНрд╣реЗрдВ рднрд░ рджреЗ:
WHEN SET (PriceList p IS PriceList) DO {
createdTime(p) <- currentDateTime();
createdUser(p) <- currentUser();
}
рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдШрдЯрдирд╛ рдХреЗрд╡рд▓ рддрднреА рдЪрд╛рд▓реВ рд╣реЛрдЧреА рдЬрдм рд╕реЗрд╡ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдиреА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗрд╡ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди рдХреЗ рджреМрд░рд╛рдиред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореВрд▓реНрдп рд╕реВрдЪреА рд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдорд╛рд▓ рдФрд░ рдХреАрдорддреЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреА:
CLASS PriceListDetail ' -' ;
priceList = DATA PriceList (PriceListDetail) NONULL DELETE ;

product = DATA Product (PriceListDetail);
nameProduct '' (PriceListDetail d) = name(product(d));

price '' = DATA NUMERIC [ 10 , 2 ] (PriceListDetail);
NONULL рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдореВрд▓реНрдп рд╕реВрдЪреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП , рдФрд░ DELETE рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп), рд╕рдВрдмрдВрдзрд┐рдд рд▓рд╛рдЗрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЧреБрдг рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдореВрд▓реНрдп рд╕реВрдЪреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╡реИрдзрддрд╛ рдХреА рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛:
fromDate ' ' (PriceListDetail d) = fromDate(priceList(d));
toDate ' ' (PriceListDetail d) = toDate(priceList(d));
рдЕрдм рд╣рдо рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЛ рдЙрди рдЧреЛрджрд╛рдореЛрдВ рд╕реЗ рдмрд╛рдВрдзреЗрдВрдЧреЗ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд╛рдердорд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рд╕рдЪ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЧреЛрджрд╛рдореЛрдВ рдХрд╛ рдкреВрд░рд╛ рд╕рдореВрд╣ рдореВрд▓реНрдп рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:
dataIn '' = DATA BOOLEAN (PriceList, Group);
рд╣рдо рдЪрдпрдирд┐рдд рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рдореВрд╣ рдХреЗ "рд╕рдорд╛рд╡реЗрд╢" рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ):
in ' ()' (PriceList p, Group child) =
GROUP LAST dataIn(p, Group parent) ORDER DESC level(child, parent) WHERE dataIn(p, parent);
рдкреНрд░рд╛рдердорд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓реНрдп рд╕реВрдЪреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреЛрджрд╛рдо рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ:
dataIn '' = DATA BOOLEAN (PriceList, Stock);
рд╣рдо рдЕрдВрддрд┐рдо рд╕рдВрдкрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдореВрд▓реНрдп рд╕реВрдЪреА рд╕рдореВрд╣реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рдВрдмрдВрдзрд┐рдд рдЧреЛрджрд╛рдо рдореЗрдВ рдХреАрдорддреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреА рд╣реИ:
in '' (PriceList p, Stock s) = dataIn(p, s) OR in(p, group(s));
рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдПрдВ рдЬреЛ рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рд╕рднреА рдЪрдпрдирд┐рдд рд╕рдореВрд╣реЛрдВ рдФрд░ рдЧреЛрджрд╛рдореЛрдВ рдХреЗ рдирд╛рдо рджрд┐рдЦрд╛рдПрдЧрд╛, рдореВрд▓реНрдп рд╕реВрдЪреА рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП:
stocks '' (PriceList p) = CONCAT ' / ' ,
GROUP CONCAT name(Group g) IF dataIn(p, g), ',' ORDER g,
GROUP CONCAT name(Stock s) IF dataIn(p, s), ',' ORDER s
CHARWIDTH 30 ;
рдбреЛрдореЗрди рд▓реЙрдЬрд┐рдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╕реАрдзреЗ рдЧреЛрджрд╛рдо рдореЗрдВ рдорд╛рд▓ рдХреА рдореМрдЬреВрджрд╛ рдХреАрдордд рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдРрд╕реА рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдПрдВ, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рд╛рдорд╛рди, рдЧреЛрджрд╛рдо рдФрд░ рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдп рд╕реВрдЪреА рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреА рддрд╛рд░реАрдЦ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреА рд╣реИ:
priceListDetail (Product p, Stock s, DATE dt) =
GROUP LAST PriceListDetail d
ORDER fromDate(d), d
WHERE product(d) = p AND in(priceList(d), s) AND
fromDate(d) <= dt AND NOT toDate(d) < dt;
рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдХреЗ рддрд░реНрдХ рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдВ рд╕рдВрднрд╡ рд╣реИрдВред рдЖрдк рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WHERE рдореЗрдВ рдПрдХ рд╢рд░реНрдд рдЬреЛрдбрд╝рдХрд░ рдХрд┐ рдореВрд▓реНрдп рд╕реВрдЪреА рдкреЛрд╕реНрдЯ рдХреА рдЧрдИ рд╣реИ) рдФрд░ рдСрд░реНрдбрд░ред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡рдпрдВ рдпрд╛ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЪрдпрди рдХреНрд░рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рдореВрд▓реНрдп рдореВрд▓реНрдп рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдиреВрдареЗ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛред

рдкреНрд░рд╛рдкреНрдд рдореВрд▓реНрдп рд╕реВрдЪреА рд▓рд╛рдЗрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдореВрд▓реНрдп рдореВрд▓реНрдп рдФрд░ рдЙрд╕рдХреА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
price '' (Product p, Stock s, DATE dt) = price(priceListDetail(p, s, dt));
fromDate ' ' (Product p, Stock s, DATE dt) = fromDate(priceListDetail(p, s, dt));
toDate ' ' (Product p, Stock s, DATE dt) = toDate(priceListDetail(p, s, dt));
рдЙрдиреНрд╣реЗрдВ рдЖрдЧреЗ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдЯреЗрдмрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдЧрд▓рд╛, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдлреЙрд░реНрдо рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рдПрдБ рдФрд░ рд╡рд╣рд╛рдБ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ "рд╣реЗрдбрд░" рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
FORM priceList '-'
OBJECTS p = PriceList PANEL
PROPERTIES (p) fromDate, toDate

EDIT PriceList OBJECT p
;
рдлреЙрд░реНрдо рдореЗрдВ рдореВрд▓реНрдп рд╕реВрдЪреА рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
EXTEND FORM priceList
OBJECTS d = PriceListDetail
PROPERTIES (d) nameProduct, price
PROPERTIES (d) NEW , DELETE
FILTERS priceList(d) = p
;
рдЕрдЧрд▓рд╛, рдПрдХ рдкреЗрдбрд╝ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдореВрд╣ рдФрд░ рдЧреЛрджрд╛рдо рджреЛрдиреЛрдВ рд╣реЛрдВрдЧреЗ:
EXTEND FORM priceList
TREE stocks g = Group PARENT parent, s = Stock
PROPERTIES READONLY name(g), name(s)
PROPERTIES dataIn(p, g), in(p, g)
PROPERTIES dataIn(p, s), in(p, s)
FILTERS group(s) = g
;
рд╕рдореВрд╣реЛрдВ рдФрд░ рдЧреЛрджрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕ рдпрд╛ рдЙрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ред

рд╣рдо рдлреЙрд░реНрдо рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╕рд╛рдорд╛рди рдФрд░ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреИрдм рдореЗрдВ рддреИрдпрд╛рд░ рд╣реЛрдВ:
DESIGN priceList {
OBJECTS {
NEW pane {
fill = 1 ;
type = TABBED ;
MOVE BOX (d) { caption = '' ; }
MOVE BOX ( TREE stocks) { caption = '' ; }
}
}
}
рд╕рдВрдкрд╛рджрди рдлрд╝реЙрд░реНрдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЫрд╡рд┐

рдЫрд╡рд┐

рдпрд╣ рдореВрд▓реНрдп рдкреНрд░рдмрдВрдзрди рдХреЗ рдореВрд▓ рд░реВрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдЗрд╕рдореЗрдВ рджреЛ рдЯреИрдм рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рд╕рднреА рдореВрд▓реНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА (рдЬреЛ рдХрдорд┐рдЯ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рдорд╛рди рд╣реИ)ред рджреВрд╕рд░рд╛ рдЯреИрдм рдЪрдпрдирд┐рдд рддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреЛрджрд╛рдо рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХреАрдорддреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдкрд╣рд▓реЗ рдЯреИрдм рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреНрд╡рд░рд┐рдд рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВред
FORM managePrices ' '
OBJECTS p = PriceList
PROPERTIES (p) READONLY fromDate, toDate, stocks, createdTime, nameCreatedUser
PROPERTIES (p) NEWSESSION NEW , EDIT , DELETE

OBJECTS d = PriceListDetail
PROPERTIES (d) READONLY nameProduct, price
FILTERS priceList(d) = p
;
рджреВрд╕рд░реЗ рдЯреИрдм рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рдЙрд╕ рддрд╛рд░реАрдЦ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдХреАрдорддреЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЧреЛрджрд╛рдо рд╕рдореВрд╣реЛрдВ рдХрд╛ рдкреЗрдбрд╝, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЧреЛрджрд╛рдореЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ:
EXTEND FORM managePrices
OBJECTS dt = DATE PANEL
PROPERTIES VALUE (dt)

TREE groups g = Group PARENT parent
PROPERTIES READONLY name(g)

OBJECTS s = Stock
PROPERTIES (s) READONLY name, nameGroup
FILTERS level(group(s), g)
;
рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреА рд╕реВрдЪреА рдЙрди рд╕рднреА рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЛ рджрд┐рдЦрд╛рдПрдЧреА рдЬреЛ рд╢реАрд░реНрд╖ рдкрд░ рдЪрдпрдирд┐рдд рд╕рдореВрд╣ рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрд╕ рдорд╛рд▓ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рддрд┐рдерд┐ рдкрд░ рдЧреЛрджрд╛рдо рдХреЗ рд▓рд┐рдП рд╡реИрдз рдореВрд▓реНрдп рд╣реИрдВ:
EXTEND FORM managePrices
OBJECTS pr = Product
PROPERTIES READONLY name(pr), price(pr, s, dt), fromDate(pr, s, dt), toDate(pr, s, dt)
FILTERS price(pr, s, dt)
;
рдореВрд▓реНрдп рдФрд░ рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рджреЛрдиреЛрдВ рд╣реА рдХреЙрд▓рдо рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдореВрд▓реНрдп рд╕реВрдЪреА рд╕рдВрдЦреНрдпрд╛ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдлрд┐рд░ рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рддрд░реНрдХ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧреАред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдРрд╕реА рдХреАрдордд рдХрд╣рд╛рдБ рд╕реЗ рдЖрдИ рд╣реИ, рд╣рдо рдЙрдкрдпреБрдХреНрдд рд╕рд╛рдорд╛рди рдФрд░ рдЧреЛрджрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдп рд╕реВрдЪреА рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдиреАрдЪреЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
EXTEND FORM managePrices
OBJECTS prd = PriceListDetail
PROPERTIES READONLY BACKGROUND (priceListDetail(pr, s, dt) = prd)
fromDate(prd), toDate(prd), '' = stocks(priceList(prd)), price(prd)
FILTERS product(prd) = pr AND in(priceList(prd), s)
;
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рдХрд╣рд╛рдиреА рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдПрдХ рдирдП рд╕рддреНрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рд╕рдВрдкрд╛рджрди рдлреЙрд░реНрдо рдХреЛ рдЦреЛрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ:
edit (PriceListDetail d) + { edit(priceList(d)); }
EXTEND FORM managePrices
PROPERTIES (prd) NEWSESSION EDIT
;
рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрдм рдЖрдк рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдХреЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░, рдбрд╛рдпрд▓реЙрдЧ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдмрдЯрди рдХреЛ рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ рдлрд╝реЙрд░реНрдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдлреЙрд░реНрдо рдХрд╛ рдЕрдВрддрд┐рдо рдбрд┐рдЬрд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ:
DESIGN managePrices {
OBJECTS {
NEW pane {
fill = 1 ;
type = TABBED ;
NEW priceLists {
caption = '-' ;
MOVE BOX (p);
MOVE BOX (d);
}
NEW prices {
caption = '' ;
fill = 1 ;
type = SPLITH ;
NEW leftPane {
MOVE BOX (dt);
MOVE BOX ( TREE groups);
MOVE BOX (s);
}
NEW rightPane {
fill = 3 ;
type = SPLITV ;
MOVE BOX (pr) { fill = 3 ; }
MOVE BOX (prd);
}
}
}
}
}
рдпрд╣рд╛рдВ, рдкрд╛рди рдХрдВрдЯреЗрдирд░ рдХреЛ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЯреИрдм рд╣реЛрддреЗ рд╣реИрдВ: рдкреНрд░рд╛рдЗрд╕рд▓рд┐рд╕реНрдЯ рдФрд░ рдХреАрдорддреЗрдВ ред рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╕рд┐рд░реНрдл рдореВрд▓реНрдп рд╕реВрдЪреА рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдореЗрдВ, рджреЛ рдкреИрдирд▓ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ: рд▓реЗрдлреНрдЯрдкреЗрди рдФрд░ рд░рд╛рдЗрдЯрдкреИрди ред рдмрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ рджрд┐рдирд╛рдВрдХ рдФрд░ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рджрд╛рдПрдВ рдкреИрдирд▓ рдореЗрдВ рд╕рд╛рдорд╛рди рдФрд░ рдореВрд▓реНрдп рдЗрддрд┐рд╣рд╛рд╕ рд╣реЛрддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рдкрд░рд┐рдгрд╛рдореА рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓реНрдп рд╕реВрдЪреА рд╣реИрдВред рдлрд┐рд░, рдЪрдпрдирд┐рдд рдЧреЛрджрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдХреАрдорддреЛрдВ рдХреЗ рд╕рд╛рде рдЯреИрдм рдореЗрдВ, рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдп рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдЫрд╡рд┐

рдЕрдм рдПрдХ рд╕реАрдорд┐рдд рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐, рдЧреЛрджрд╛рдореЛрдВ рдХреА рдПрдХ рдЫреАрди рдбрд╛рдЙрди рд╕реВрдЪреА рдФрд░ рдПрдХ рдирдИ рдХреАрдордд рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдореВрд▓реНрдп рд╕реВрдЪреА рдмрдирд╛рдПрдВред рджреВрд╕рд░реЗ рдЯреИрдм рдкрд░, рдпрджрд┐ рд╣рдо рдирдИ рдореВрд▓реНрдп рд╕реВрдЪреА рдХреА рд╕реАрдорд╛ рдореЗрдВ рдПрдХ рддрд╛рд░реАрдЦ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрд╕рд╕реЗ рдПрдХ рдирдИ рдХреАрдордд рдорд┐рд▓реЗрдЧреАред рдЬреИрд╕реЗ рд╣реА рд╡реИрдзрддрд╛ рдЕрд╡рдзрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛрдЧреА, рдкреБрд░рд╛рдиреА рдХреАрдордд рдлрд┐рд░ рд╕реЗ рдореВрд▓ рдореВрд▓реНрдп рд╕реЗ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА:

рдЫрд╡рд┐

рдПрдХ рд╣реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд┐рдерд┐ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреАрдорддреЛрдВ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ "рд░рджреНрдж" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирдИ рдХреАрдордд рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдорд╛рд▓ рдлрд┐рд▓реНрдЯрд░ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдЯрд╛рддреЗ рд╕рдордп, рд╕рдм рдХреБрдЫ рдкреБрд░рд╛рдиреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реМрдЯ рдЖрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рджреНрд╡рд╛рд░рд╛ рдорд╛рд▓ рдХреА рдХреАрдордд рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЖрдЧреЗ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдирд╛рдУрдВ рдпрд╛ рдЕрдиреНрдп рд░реВрдкреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
WHEN LOCAL CHANGED (sku(UserOrderDetail d)) OR CHANGED (stock(d)) OR CHANGED (dateTime(d)) DO
price(d) <- price(sku(d), stock(d), dateTime(d));
рдЗрд╕ рддрд░реНрдХ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЧреЛрджрд╛рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдореВрд▓реНрдп рд╕реВрдЪрд┐рдпреЛрдВ рд╕реЗ рдХреАрдорддреЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдВрдЧреАред рдЧреЛрджрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдмрджрд▓рдиреЗ рдкрд░ рдпрд╣реА рдмрд╛рдд рд╣реЛрдЧреАред

рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдореМрдЬреВрджрд╛ рдХреАрдорддреЛрдВ рдХреЗ рд╕рд╛рде рдЯреИрдм рдкрд░ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреЙрд▓рдо рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрджрд▓реА рд╣реБрдИ рдХреАрдорддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдордВрдЪ рд╕реНрддрд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдореЗрдВ, рди рддреЛ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХреЛрдВ, рди рд╣реА рддрд╛рд░ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рди рд╣реА рд░рдЬрд┐рд╕реНрдЯрд░, рдФрд░ рди рд╣реА рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдЕрдиреНрдп рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рддрд░реНрдХ lsFusion рдкрд░ рдХреЛрдб рдХреЗ рд▓рдЧрднрдЧ 150 рд╕рд╛рд░реНрдердХ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдЙрд╕реА рд╕реВрддреНрд░реАрдХрд░рдг рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 рд╕реА) рдЕрдзрд┐рдХ рдХрдард┐рди рдХрд╛рд░реНрдп рд╣реИред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдпреЛрдЬрдирд╛ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ lsFusion рдЖрдзрд╛рд░рд┐рдд ERP рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рдХреА рдореВрд▓реНрдп рд╕реВрдЪреА, рдкреНрд░рдмрдВрдзрди рдЦреБрджрд░рд╛ рдореВрд▓реНрдп, рд╕реНрдЯреЙрдХ рдФрд░ рдХрдИ рдЕрдиреНрдп рдкреНрд░рдмрдВрдзрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛ рдХреЛ рдЧреЛрджрд╛рдо рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рд╕рд╛рде рд╣реА рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдк рдЗрдХрд╛рдИ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд╛рдЗрди рдХреЗ рдЯреБрдкрд▓ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддрд░реНрдХ рдореЗрдВ, рдЖрдкрдХреЛ рдмрд╕ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреЛрдб рдХреА рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рдорджрдж рд╕реЗ, рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред рдлрд┐рд░ рдХрд┐рд╕реА рднреА рддрд╛рд░реАрдЦ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХрд╛ рдЪрдпрди рдПрдХ рд▓рдШреБрдЧрдгрдХреАрдп рд╕рдордп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдИ рд╕реМ рдорд┐рд▓рд┐рдпрди рд░рд┐рдХреЙрд░реНрдб рд╣реЛрдиреЗ рдкрд░ рдРрд╕рд╛ рдЕрдиреБрдХреВрд▓рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЖрдк рд╕рд╛рдЗрдЯ (рдЕрдиреБрднрд╛рдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо) рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреГрд╖реНрда рдкрд░ рдСрдирд▓рд╛рдЗрди рдирд┐рд░реНрдорд┐рдд рдЙрджрд╛рд╣рд░рдг рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рд╕рдВрдкреВрд░реНрдг рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рд╕реНрд░реЛрдд рдХреЛрдб
REQUIRE Authentication, Time;

CLASS Group ' ' ;
name '' = DATA ISTRING [ 50 ] (Group);

parent = DATA Group (Group);
nameParent ' ' (Group g) = name(parent(g));

level '' (Group child, Group parent) =
RECURSION 1l IF child IS Group AND parent = child
STEP 2l IF parent = parent($parent) MATERIALIZED ;

FORM group ' '
OBJECTS g = Group PANEL
PROPERTIES (g) name, nameParent

EDIT Group OBJECT g
;

FORM groups ' '
OBJECTS g = Group
PROPERTIES (g) READONLY name, nameParent
PROPERTIES (g) NEWSESSION NEW , EDIT , DELETE

LIST Group OBJECT g
;

NAVIGATOR {
NEW groups;
}

CLASS Stock '' ;
name '' = DATA ISTRING [ 50 ] (Stock);

group '' = DATA Group (Stock);
nameGroup '' (Stock st) = name(group(st));

FORM stock ''
OBJECTS s = Stock PANEL
PROPERTIES (s) name, nameGroup

EDIT Stock OBJECT s
;

FORM stocks ''
OBJECTS s = Stock
PROPERTIES (s) READONLY name, nameGroup
PROPERTIES (s) NEWSESSION NEW , EDIT , DELETE

LIST Stock OBJECT s
;

NAVIGATOR {
NEW stocks;
}

CLASS Product '' ;
name '' = DATA ISTRING [ 50 ] (Product);

FORM product ''
OBJECTS p = Product PANEL
PROPERTIES (p) name

EDIT Product OBJECT p
;

FORM products ''
OBJECTS p = Product
PROPERTIES (p) READONLY name
PROPERTIES (p) NEWSESSION NEW , EDIT , DELETE

LIST Product OBJECT p
;

NAVIGATOR {
NEW products;
}

CLASS PriceList '-' ;
fromDate ' ' = DATA DATE (PriceList);
toDate ' ' = DATA DATE (PriceList);

createdTime ' ' = DATA DATETIME (PriceList);
createdUser = DATA User (PriceList);
nameCreatedUser '' (PriceList p) = name(createdUser(p));

WHEN LOCAL SET (PriceList p IS PriceList) DO
fromDate(p) <- currentDate();

WHEN SET (PriceList p IS PriceList) DO {
createdTime(p) <- currentDateTime();
createdUser(p) <- currentUser();
}

CLASS PriceListDetail ' -' ;
priceList = DATA PriceList (PriceListDetail) NONULL DELETE ;

product = DATA Product (PriceListDetail);
nameProduct '' (PriceListDetail d) = name(product(d));

price '' = DATA NUMERIC [ 10 , 2 ] (PriceListDetail);

fromDate ' ' (PriceListDetail d) = fromDate(priceList(d));
toDate ' ' (PriceListDetail d) = toDate(priceList(d));

dataIn '' = DATA BOOLEAN (PriceList, Group);

in ' ()' (PriceList p, Group child) =
GROUP LAST dataIn(p, Group parent) ORDER DESC level(child, parent) WHERE dataIn(p, parent);

dataIn '' = DATA BOOLEAN (PriceList, Stock);
in '' (PriceList p, Stock s) = dataIn(p, s) OR in(p, group(s));

stocks '' (PriceList p) = CONCAT ' / ' ,
GROUP CONCAT name(Group g) IF dataIn(p, g), ',' ORDER g,
GROUP CONCAT name(Stock s) IF dataIn(p, s), ',' ORDER s
CHARWIDTH 30 ;

priceListDetail (Product p, Stock s, DATE dt) =
GROUP LAST PriceListDetail d
ORDER fromDate(d), d
WHERE product(d) = p AND in(priceList(d), s) AND
fromDate(d) <= dt AND NOT toDate(d) < dt;

price '' (Product p, Stock s, DATE dt) = price(priceListDetail(p, s, dt));
fromDate ' ' (Product p, Stock s, DATE dt) = fromDate(priceListDetail(p, s, dt));
toDate ' ' (Product p, Stock s, DATE dt) = toDate(priceListDetail(p, s, dt));

FORM priceList '-'
OBJECTS p = PriceList PANEL
PROPERTIES (p) fromDate, toDate

EDIT PriceList OBJECT p
;

EXTEND FORM priceList
OBJECTS d = PriceListDetail
PROPERTIES (d) nameProduct, price
PROPERTIES (d) NEW , DELETE
FILTERS priceList(d) = p
;

EXTEND FORM priceList
TREE stocks g = Group PARENT parent, s = Stock
PROPERTIES READONLY name(g), name(s)
PROPERTIES dataIn(p, g), in(p, g)
PROPERTIES dataIn(p, s), in(p, s)
FILTERS group(s) = g
;

DESIGN priceList {
OBJECTS {
NEW pane {
fill = 1 ;
type = TABBED ;
MOVE BOX (d) { caption = '' ; }
MOVE BOX ( TREE stocks) { caption = '' ; }
}
}
}

FORM managePrices ' '
OBJECTS p = PriceList
PROPERTIES (p) READONLY fromDate, toDate, stocks, createdTime, nameCreatedUser
PROPERTIES (p) NEWSESSION NEW , EDIT , DELETE

OBJECTS d = PriceListDetail
PROPERTIES (d) READONLY nameProduct, price
FILTERS priceList(d) = p
;

EXTEND FORM managePrices
OBJECTS dt = DATE PANEL
PROPERTIES VALUE (dt)

TREE groups g = Group PARENT parent
PROPERTIES READONLY name(g)

OBJECTS s = Stock
PROPERTIES (s) READONLY name, nameGroup
FILTERS level(group(s), g)
;

EXTEND FORM managePrices
OBJECTS pr = Product
PROPERTIES READONLY name(pr), price(pr, s, dt), fromDate(pr, s, dt), toDate(pr, s, dt)
FILTERS price(pr, s, dt)
;

EXTEND FORM managePrices
OBJECTS prd = PriceListDetail
PROPERTIES READONLY BACKGROUND (priceListDetail(pr, s, dt) = prd)
fromDate(prd), toDate(prd), '' = stocks(priceList(prd)), price(prd)
FILTERS product(prd) = pr AND in(priceList(prd), s)
;

edit (PriceListDetail d) + { edit(priceList(d)); }
EXTEND FORM managePrices
PROPERTIES (prd) NEWSESSION EDIT
;

DESIGN managePrices {
OBJECTS {
NEW pane {
fill = 1 ;
type = TABBED ;
NEW priceLists {
caption = '-' ;
MOVE BOX (p);
MOVE BOX (d);
}
NEW prices {
caption = '' ;
fill = 1 ;
type = SPLITH ;
NEW leftPane {
MOVE BOX (dt);
MOVE BOX ( TREE groups);
MOVE BOX (s);
}
NEW rightPane {
fill = 3 ;
type = SPLITV ;
MOVE BOX (pr) { fill = 3 ; }
MOVE BOX (prd);
}
}
}
}
}

NAVIGATOR {
NEW managePrices;
}

Source: https://habr.com/ru/post/hi468553/


All Articles