рдбреАрдмреАред рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХреЗрдВред рдЧреНрд▓реЛрдмрд▓реНрд╕ 3 рдкрд░ рд▓рд╛рдЗрд╡ рдЙрджрд╛рд╣рд░рдг


рднрд╛рдЧ 1
рднрд╛рдЧ реи

рд▓реЗрдЦ рдХреЗ рд╢реАрд░реНрд╖рдХ рдореЗрдВ "рд▓рд┐рд╡рд┐рдВрдЧ" рд╢рдмреНрдж рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрди рд▓реЗрдЦреЛрдВ рд╕реЗ рддрдВрддреНрд░, рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдп рдорд╕реМрджреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреЗрдЯрд╛рдмреЗрд╕ (рд╕рдВрд░рдЪрдирд╛, рддрдВрддреНрд░) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЪрд┐рддреНрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

рд╕реА рдЖрд░ рдпреВрдбреА рд╡рд┐рдзрд┐рдпрд╛рдВ, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рд▓рдЧрд╛рддрд╛рд░ рдЗрди рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╣реИрдВ:

рдЧреНрд▓реЛрдмрд▓реНрд╕ рджреЗрдЦреЗрдВ
^Dictionary("Vehicle","TransmissionType",1,0,"UpdateTime")="62086,66625" ^Dictionary("Vehicle","TransmissionType",1,0,"uid")=888 ^Dictionary("Vehicle","TransmissionType",2,0,"UpdateTime")="62086,66625" ^Dictionary("Vehicle","TransmissionType",2,0,"uid")=888 ^NameDictionaryElement(1,"partUri",0)="akp" ^NameDictionaryElement(1,"partUri",0,"UpdateTime")="62086,66625" ^NameDictionaryElement(1,"ru",0)="" ^NameDictionaryElement(1,"ru",0,"UpdateTime")="62086,66625" ^NameDictionaryElement(2,"partUri",0)="meh" ^NameDictionaryElement(2,"partUri",0,"UpdateTime")="62086,66625" ^NameDictionaryElement(2,"ru",0)="" ^NameDictionaryElement(2,"ru",0,"UpdateTime")="62086,66625" ^IndexDictionary("Vehicle","TransmissionType","name","partUri","akp",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","partUri","meh",2)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",2)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,1)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,2)=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""akp"",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,1)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""meh"",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,2)")=1 


рдЧреНрд▓реЛрдмрд▓реНрд╕ Ctrl + C / V рдмрдирд╛рдПрдБ
 set ^Dictionary("Vehicle","TransmissionType",1,0,"UpdateTime")="62086,66625" set ^Dictionary("Vehicle","TransmissionType",1,0,"uid")=888 set ^Dictionary("Vehicle","TransmissionType",2,0,"UpdateTime")="62086,66625" set ^Dictionary("Vehicle","TransmissionType",2,0,"uid")=888 set ^NameDictionaryElement(1,"partUri",0)="akp" set ^NameDictionaryElement(1,"partUri",0,"UpdateTime")="62086,66625" set ^NameDictionaryElement(1,"ru",0)="" set ^NameDictionaryElement(1,"ru",0,"UpdateTime")="62086,66625" set ^NameDictionaryElement(2,"partUri",0)="meh" set ^NameDictionaryElement(2,"partUri",0,"UpdateTime")="62086,66625" set ^NameDictionaryElement(2,"ru",0)="" set ^NameDictionaryElement(2,"ru",0,"UpdateTime")="62086,66625" set ^IndexDictionary("Vehicle","TransmissionType","name","partUri","akp",1)=1 set ^IndexDictionary("Vehicle","TransmissionType","name","partUri","meh",2)=1 set ^IndexDictionary("Vehicle","TransmissionType","name","ru","",1)=1 set ^IndexDictionary("Vehicle","TransmissionType","name","ru","",2)=1 set ^IndexDictionary("Vehicle","TransmissionType","uid",888,1)=1 set ^IndexDictionary("Vehicle","TransmissionType","uid",888,2)=1 set ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""akp"",1)")=1 set ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",1)")=1 set ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,1)")=1 set ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""meh"",2)")=1 set ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",2)")=1 set ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,2)")=1 




рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рдпрдо


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

рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ ^ рдирд┐рдпрдо рдирд┐рдпрдо рд╡реИрд╢реНрд╡рд┐рдХ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ - рдЗрд╕рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрд░реНрде рджреЗрдВ:
  1. рдЖрдВрдЯрд▓рдЬреА
  2. рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░
  3. CRUD рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдирд╛рдо
  4. рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ
  5. рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо

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

рд╣рдо рдСрдиреНрдХреЛрд▓реЙрдЬреА рдХреЗ рд▓рд┐рдП рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред SimpleOntology, рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
zwrite ^ рдирд┐рдпрдо рдЫрд╛рдпрд╛рд╡рд╛рдж ("рд╕рд┐рдореНрдкрд▓рдСрдВрдЯреЛрд▓реЙрдЬреА")
рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ "рдореЛрдирдЯреЛрд▓реЛрдЬреА" рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо рд╣реИред

 MONTOLOGY>zwrite ^RuleDictionary("SimpleOntology") ^RuleDictionary("SimpleOntology","SimpleType","create","check",10)="do clearPunctuationAndControlCharAllLang()" ^RuleDictionary("SimpleOntology","SimpleType","create","check",20)="do checkUniqueNameElementAllLang()" ^RuleDictionary("SimpleOntology","SimpleType","update","check",10)="do clearPunctuationAndControlCharAllLang()" ^RuleDictionary("SimpleOntology","SimpleType","update","check",20)="do checkUniqueNameElementAllLang()" MONTOLOGY> 

рдЧреНрд▓реЛрдмрд▓реНрд╕ Ctrl + C / V рдмрдирд╛рдПрдБ
 set ^RuleDictionary("SimpleOntology","SimpleType","create","check",10)="do clearPunctuationAndControlCharAllLang()" set ^RuleDictionary("SimpleOntology","SimpleType","create","check",20)="do checkUniqueNameElementAllLang()" set ^RuleDictionary("SimpleOntology","SimpleType","update","check",10)="do clearPunctuationAndControlCharAllLang()" set ^RuleDictionary("SimpleOntology","SimpleType","update","check",20)="do checkUniqueNameElementAllLang()" 


рдЖрдЗрдП рд╣рдо рдЬреЛ рдХреБрдЫ рдХрд╛рдЯ рдЪреБрдХреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, SimpleOntology рдСрдиреНрдХреЛрд▓реЙрдЬреА рдореЗрдВ SimpleType рд╕рдВрджрд░реНрдн рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЧреБрдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рджреЛ рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╡реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо (10, 20) рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо рдЫреЛрдЯреЗ рд╕реЗ рдмрдбрд╝реЗ рддрдХ рдЬрд╛рддрд╛ рд╣реИред SimpleOntology рдФрд░ SimpleType рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рд╕рд░рд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдорд╛рдирдХ рдЧреБрдг рдореМрдЬреВрдж рд╣реИрдВ: рдирд╛рдо, рдЕрджреНрдпрддрди рддрд┐рдерд┐ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВрдЖрдИрдбреА ред

рдмрдирд╛рдПрдВ


рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рддрд╛рд▓реЗ, рд▓реЗрдирджреЗрди рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рд╣рдо рдЗрд╕ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред

 #; -------------------------------------------------------------------------------------------------- #;   . #;         . #; -------------------------------------------------------------------------------------------------- create() #;     kill map("out") #;     t #;         create new t #;      set t("err")=$$check("create") #; ,    if t("err")<0 { quit t("err") } #;   "UpdateTime" do setProperty(t("ontology"),t("type"),"UpdateTime",$horolog,t("id"),"false") #;   "uid" do setProperty(t("ontology"),t("type"),"uid",t("uid"),t("id"),"true") set t("lang")="" for { #;    (     ) set t("lang")=$order(t("nameList",t("lang"))) #;   ,     quit:t("lang")="" #;      set t("name")=$get(t("nameList",t("lang"))) #;      do setName(t("ontology"),t("type"),t("lang"),t("name"),t("id")) } #;          do saveOntoAndTypeID #;         do saveElementPath #;         set map("out","id")=t("id") #;     kill map("in") #;     quit t("id") #; -------------------------------------------------------------------------------------------------- 

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ () рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рдирдЪрд┐рддреНрд░ рдЪрд░ рдореЗрдВ, рд╣рдо рджреЛ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: рдорд╛рдирдЪрд┐рддреНрд░ ("рдЗрди") рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ ("рдЖрдЙрдЯ") ред рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗрд╡рд▓ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рдХреА рд╕реАрдорд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реИред рдЗрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: $ рдСрд░реНрдбрд░ () , $ qsubscript () , $ qlength () , $ рдирд╛рдо () рдФрд░ рдЕрдиреНрдпред рдХрдИ рдЪрд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдпрд╣ рдПрдХ рдПрдХрд▓ рдЪрд░ рдирдпрд╛ рдЯреА рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╡реИрд░рд┐рдПрдмрд▓ рдЯреА рдХрд╣реАрдВ рднреА рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдФрд░ рджрд┐рдирдЪрд░реНрдпрд╛ рдореЗрдВ рдЬреЛ рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░, create рдХреЗ рджреМрд░рд╛рди рдХрд╣реЗ рдЧрдП рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рдирдпрд╛ t рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ create рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░ рдШреЛрд╖рд┐рдд рдЪрд░ t рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрд╣ рдЗрд╕рдХреЗ рдЪрд░ рдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬреЛ рдЗрд╕рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рдЕрдВрджрд░ рд╣реИ (рдЪрд░ рд╕реНрдЯреИрдХ рдореЗрдВ рдХрд╣реАрдВ рдФрд░)ред рд╢рд╛рдпрдж Cach├й рдореИрдВрдиреЗ рдЬрд┐рди рдЪрд░реЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╣реИ, рд╡реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВред

рдЪреЗрдХ

рдЕрдЧрд▓рд╛, t ("рдЗрд░реЗрдЯ") рдореЗрдВ, рд╣рдо рдлрд╝рдВрдХреНрд╢рди $ $ рдЪреЗрдХ ("рдХреНрд░рд┐рдПрдЯ") рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рднреА рдЬрд╛рдВрдЪреЗрдВ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди 0 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдкрд░рд┐рдгрд╛рдо рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ $ $ рдЪреЗрдХ () рдлрд╝рдВрдХреНрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрди рд▓реЗрдЦреЛрдВ рдореЗрдВ: рд╡рд┐рдзрд┐, рдХрд╛рд░реНрдп, рдЙрдкрд╡рд╛рдХреНрдп - рд╢рдмреНрдж рд╕рдорд╛рдирд╛рд░реНрдердХ рд╣реИрдВред рд╕реЗрд╡рд╛ рд╢рдмреНрдж рдирд┐рдЬреА - рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдХреЗрд╡рд▓ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрджрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 #; -------------------------------------------------------------------------------------------------- #;  . #;    ^RuleDictionary    . #; -------------------------------------------------------------------------------------------------- check(action)private #;     check new check #;        action set check=$case(action,"create":$$checkCreate(),"update":$$checkUpdate(),"delete":$$checkDelete(),:-1) #;   quit:check<0 check #;  "uid"      set t("uid")=$get(map("in","uid"),888) #; ,      "check",        if $data(^RuleDictionary(t("ontology"),t("type"),action,"check")) { #;  t("map")        set t("map")=$name(^RuleDictionary(t("ontology"),t("type"),action,"check")) } else { #;  t("map")              set t("map")=$name(^RuleDictionary("SimpleOntology","SimpleType",action,"check")) } set check("i")="" for { #;     set check("i")=$order(@t("map")@(check("i"))) #;   ,     quit:check("i")="" #;     xecute $get(@t("map")@(check("i"))) #;   ,     quit:check<0 } #;    quit check #; -------------------------------------------------------------------------------------------------- #;      . #;  id, ontology, type,   . #; -------------------------------------------------------------------------------------------------- checkCreate()private #;       st("ontology")=$get(map("in","ontology"),"") #;       quit:t("ontology")="" -1 #;        set t("type")=$get(map("in","type"),"") #;  ,      quit:t("type")="" -1 #;     set t("check")=$$checkNames() #;  ,     quit:t("check")<0 t("check") #;       set t("id")=$increment(^Dictionary("MaxID")) #;      ^Dictionary set t("path")=$name(^Dictionary(t("ontology"),t("type"),t("id"))) #;     quit 0 #; -------------------------------------------------------------------------------------------------- checkUpdate() quit 0 #; -------------------------------------------------------------------------------------------------- checkDelete() quit 0 #; -------------------------------------------------------------------------------------------------- #;     . #; -------------------------------------------------------------------------------------------------- checkNames()private #;          merge t("nameList")=map("in","nameList") #;   t("check")  #;         set t("check")=-1 set t("lang")="" for { #;    set t("lang")=$order(t("nameList",t("lang"))) #;   ,     quit:t("lang")="" #;      set t("name")=$get(t("nameList",t("lang")),"") #;    if t("name")="" { #;   t("check")  set t("check")=-1 #;    quit } else { #;  t("check")   ,     set t("check")=0 } } #;     quit t("check") #; -------------------------------------------------------------------------------------------------- 

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

рдЪреЗрдХрдХреНрд░реАрдЯ () рдЗрдирдкреБрдЯ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдСрдиреНрдХреЛрд▓реЙрдЬреА рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЬрд╛рдВрдЪред рдЕрдВрджрд░ рдЪреЗрдХрдирд╛рдо () - рдкреНрд░рддреНрдпреЗрдХ рджреА рдЧрдИ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд╛рдореЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдПрдХ рднрд╛рд╖рд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд рдХреЗ рд╕рд╛рде (рд╣рдорд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдирд╛рдо рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрддреНрд╡ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ)ред рдЙрд╕реА рд╡рд┐рдзрд┐ рдореЗрдВ, рдирд┐рд░реНрдорд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрддреНрд╡ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдлрд╝рдВрдХреНрд╢рди $ рд╡реГрджреНрдзрд┐ () рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрддреНрд╡ рдХреА рд╡рд░реНрддрдорд╛рди рдЕрдзрд┐рдХрддрдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ (рдХрд┐рд╕реА рднреА рдСрдиреНрдХреЛрд▓реЙрдЬреА рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП) ^ рд╢рдмреНрджрдХреЛрд╢ ("рдореИрдХреНрд╕рд┐рдб") рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред
рд╕рднреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдСрдиреНрдХреЛрд▓реЙрдЬреА рдХреЗ рднреАрддрд░ рднреА
CheckCreate () рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ, t ("рдкрде") рдЪрд░ рдореЗрдВ, рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рд╢рд╛рдЦрд╛ ^ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рд╡рд┐рд╣рд┐рдд рдирд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рддрддреНрд╡ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЪреЗрдХрдиреЗрдо () рд╡рд┐рдзрд┐ рдХреЗ рд╢рдмреНрдж рдорд░реНрдЬ рдЯреА ("рдиреЗрдорд▓рд┐рд╕реНрдЯ") = рдореИрдк ("рдЗрди," рдиреЗрдорд▓рд┐рд╕реНрдЯ ") рдиреЛрдЯ рдХрд░реЗрдВ ред
рдорд░реНрдЬ рдХрдорд╛рдВрдб рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЪрд░ рдХреЗ рдкреВрд░реЗ рдЙрдкрдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡реЗ рд╕реНрдерд╛рдиреАрдп рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдВред
рдкреБрд╕реНрддрдХ рд╕реЗ рд▓реА рдЧрдИ рдкрд░рд┐рднрд╛рд╖рд╛: рд╡реЛрд▓реНрдлрдЧреИрдВрдЧ рдХрд░реНрд╕реНрдЯрдиред рдорд╛рдЗрдХрд▓ рдЗрд╣рд┐рдВрдЧрд░ред рдордерд╛рдпрд╕ рдХреБрдиреЗред рдмрд░реНрдирд╣рд╛рд░реНрдб рд░реЛрд░рд┐рдЧред рдкреЛрд╕реНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдбреАрдмреАрдПрдордПрд╕ рдХреИрдЪ 5. рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯред рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдгред рдорд╛рд╕реНрдХреЛред рдкреНрд░рдХрд╛рд╢рди рдЧреГрд╣ BINOM ред 2005. рдПред рдорд╛рд╕реНрд▓реЛрд╡, рдХреЗред рдЕрд░рд┐рд╕реНрддреЛрд╡ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджред рдкреЗрдЬ 116ред

рддреЛ, CheckCreate () рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╕реНрдерд╛рдиреАрдп рдЪрд░ t рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛:

рд╣рдо рдЪреЗрдХ () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред CheckCreate () рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпреВрдЖрдИрдбреА ( 888 - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╡реИрд░рд┐рдПрдмрд▓ рдЯреА ("рдореИрдк") рдореЗрдВ , рд╣рдо рд╡реИрд╢реНрд╡рд┐рдХ рдирд┐рдпрдо рдХреА рд╢рд╛рдЦрд╛ рдХреЗ рд╡рд┐рд╣рд┐рдд рдирд╛рдо рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рдСрдиреНрдХреЛрд▓реЙрдЬреА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдФрд░ рдПрдХ рдХреНрд░рд┐рдпрд╛ред рдЪреВрдБрдХрд┐ рдЕрдм рдХреЗрд╡рд▓ рдСрдиреНрдХреЛрд▓реЙрдЬреА рдФрд░ рдбрд┐рдлреЙрд▓реНрдЯ рдЯрд╛рдЗрдк рдХреЗ рдирд┐рдпрдо ^ рд░реВрд▓рдбреЙрд░ рдЧреНрд▓реЛрдмрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд░реВрд▓реНрдбрд░ рдмреНрд░рд╛рдВрдЪ рдХрд╛ рдХреИрдиреЛрдирд┐рдХрд▓ рд╡реНрдпреВ ("рд╕рд┐рдВрдкрд▓рдСрдирдЯреЙрд▓реЙрдЬреА", "рд╕рд┐рдВрдкрд▓ рдЯрд╛рдЗрдк", "рдХреНрд░рд┐рдПрдЯ", "рдЪреЗрдХ" рдЯреА ("рдореИрдк") рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред )ред

рдЖрдЗрдП рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд░реЗрдЦрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:
 set check("i")=$order(@t("map")@(check("i"))) 

рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ @ рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдкрд░рд┐рдЪрд╛рд▓рдХ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдЪреЗрдХ ("i") = "" рд╣реИ ред рддреЛ рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд▓рд╛рдЗрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ:
 set check("i")=$order(^RuleDictionary("SimpleOntology","SimpleType","create","check","")) 

рдпрд╣реА рд╣реИ, рдЪреЗрдХ ("i") рд╣реЛрдЧрд╛ 10. рдпрджрд┐ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рд╢реНрди рдЙрдард╛рддрд╛ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреВрдЫреЗрдВред

рдЕрдм рдЖрдЗрдП рджреЗрдЦреЗрдВ:
 xecute $get(@t("map")@(check("i"))) 

Xecute рдХрдорд╛рдВрдб рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рд╕рдмрд░реВрдЯреАрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡рд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдкреГрд╖реНрда резрезрел, рд╡рд╣реА рдкреБрд╕реНрддрдХред

рдпрд╣реА рд╣реИ, рд▓реВрдк рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рд╡рд╣ рдХрд░реЗрдВрдЧреЗ рдЬреЛ ^ рдирд┐рдпрдо ("SimpleOntology", "SimpleType", "create", "check", 10) рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ ред рдФрд░ рдпрд╣:
 do clearPunctuationAndControlCharAllLang() 

рдЗрд╕ рдЙрдк-рдзрд╛рд░рд╛ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд╛рдореЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдФрд░ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдг рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рд▓реВрдк рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рд╣рдо рдорд╛рди ^ рдирд┐рдпрдо ("SimpleOntology", "SimpleType", "create", "check", 20) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред рдФрд░ рдпрд╣:
 do checkUniqueNameElementAllLang() 

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

рд╕рдмрд░реВрдЯреАрди рдХреЛрдб:
 #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlCharAllLang() set t("lang")="" for { #;     set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #;           set t("nameList",t("lang"))=$$clearPunctuationAndControlChar($get(t("nameList",t("lang")),"")) } quit #; -------------------------------------------------------------------------------------------------- checkUniqueNameElementAllLang() set t("lang")="" for { #;     set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #;    set t("name")=$get(t("nameList",t("lang")),"") #;   check     (0 -  ) set check=$$checkUniqueNameElement() #;     -    quit:check<0 } quit #; -------------------------------------------------------------------------------------------------- #;         . #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlChar(str) new t #;  t("str")     set t("str")="" #;      for t("i")=1:1:$length(str) { #;    set t("ch")=$extract(str,t("i")) if '((t("ch")?1P)||(t("ch")?1C)) { #;       set t("str")=t("str")_t("ch") } } #;    quit t("str") #; -------------------------------------------------------------------------------------------------- #; -------------------------------------------------------------------------------------------------- #;      ,   ,   . #;  ,   . #; -------------------------------------------------------------------------------------------------- checkUniqueNameElement() #;    set t("q")=0 set t("uniqueId")="" for { #; ,         #;   , ,   (  ) set t("uniqueId")=$order(^IndexDictionary(t("ontology"),t("type"),"name",t("lang"),$zconvert(t("name"),"l"),t("uniqueId"))) #;     quit:t("uniqueId")="" #; ,      #;     update if (t("uniqueId")'=t("id")) { #;  ,       set t("q")=-1 quit } } #;   quit t("q") #; -------------------------------------------------------------------------------------------------- 


рджрд┐рдирдЪрд░реНрдпрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ: $ zconvert () , $ рд▓рдВрдмрд╛рдИ () , $ рдирд┐рдХрд╛рд▓рдиреЗ () ; рд╕рд╛рде рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЪреЗрдХ рдСрдкрд░реЗрдЯрд░ - рдкреНрд░рддреАрдХ "?" ред рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдФрд░ рд╕реЗрд╡рд╛ рдкрд╛рддреНрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдмрд┐рд▓реНрдЯ-рдЗрди рдХрд╛рд╢реЗрд╡ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд░рд┐рддреНрд░-рджрд░-рдЪрд░рд┐рддреНрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рддреЛ, рд╣рдорд╛рд░реА рдХреНрд░рд┐рдПрдЯ () рд╡рд┐рдзрд┐ рдиреЗ рд▓рд╛рдЗрди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рдХрд┐рдпрд╛: рдЯреА ("рдЧрд▓рдд") = $ $ рдЪреЗрдХ ("рдХреНрд░рд┐рдПрдЯ") , рдФрд░ рдЯреА рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред

setProperty

рдЕрдЧрд▓рд╛, рд╣рдо рд╕реЗрдЯрдкреНрд░реЛрдкрд░реНрдЯреА () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдЕрдкрдбреЗрдЯрдЯрд╛рдЗрдо" рдФрд░ "рдпреВрдЖрдИрдбреА" рдЧреБрдг рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

 #; -------------------------------------------------------------------------------------------------- #;  ,     . #;         . #; -------------------------------------------------------------------------------------------------- setProperty(ontology,type,property,value,id,index="true")private #;      ()    set ^Dictionary(ontology,type,id,0,property)=value #;    if index="true" { #;   set ^IndexDictionary(ontology,type,property,value,id)=1 #;      set ^RefsDictionary(id,$name(^|"MONTOLOGY"|IndexDictionary(ontology,type,property,value,id)))=1 } quit 0 #; -------------------------------------------------------------------------------------------------- 

$ рд╣реЛрд░реЛрд▓реЙрдЧ рдХреИрдЪреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐ рдФрд░ рд╕рдордп рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ "рдЕрдкрдбреЗрдЯ рдЯрд╛рдЗрдо" рд╕рдВрдкрддреНрддрд┐ рдЕрдиреБрдХреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реИ (рдЪрд░рдо рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ = "рдЧрд▓рдд" рд╣реИ )ред рдЙрд╕реА рд╡рд┐рдзрд┐ рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ ^ RefsDictionary рдкрд╣рд▓реА рдмрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╕рд░рд▓ рд╣реИ:
  1. рдЖрдЗрдЯрдо рдЖрдИрдбреА
  2. рдХреИрдиреЛрдирд┐рдХрд▓ рдЗрдВрдбреЗрдХреНрд╕ рдЧреНрд▓реЛрдмрд▓ рдмреНрд░рд╛рдВрдЪ рдирд╛рдо

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

setName

рдЕрдЧрд▓рд╛, рд╣рдо рд╕реЗрдЯрдирд╛рдо () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

 #; -------------------------------------------------------------------------------------------------- #;   ,     . #;  (  )   . #; -------------------------------------------------------------------------------------------------- setName(ontology,type,lang,value,id)private #;         set ^NameDictionaryElement(id,lang,0)=value #;   / set ^NameDictionaryElement(id,lang,0,"UpdateTime")=$horolog #;     set ^IndexDictionary(ontology,type,"name",lang,$zconvert(value,"l"),id)=1 #;    set ^RefsDictionary(id,$name(^|"MONTOLOGY"|IndexDictionary(ontology,type,"name",lang,$zconvert(value,"l"),id)))=1 quit 0 #; -------------------------------------------------------------------------------------------------- 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо saveOntoAndTypeID рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдСрдиреНрдХреЛрд▓реЙрдЬреА рдФрд░ рдПрд▓рд┐рдореЗрдВрдЯ рдЯрд╛рдЗрдк рдХреЛ рдЧреНрд▓реЛрдмрд▓ рдмреНрд░рд╛рдВрдЪ ^ рдЗрдВрдбреЗрдХреНрд╕реЙрд░реЗрдб ("рдЖрдИрдбреА", рдЯреА ("рдЖрдИрдбреА") рдкрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рддрддреНрд╡ рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдФрд░ рдСрдиреНрдереЛрд▓реЙрдЬреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрд╕реА рд╢рд╛рдЦрд╛ рдореЗрдВ saveElementPath рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдкрде рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдЧрд╛ред

 #; -------------------------------------------------------------------------------------------------- saveOntoAndTypeID set ^IndexDictionary("ID",t("id"),"ontology")=t("ontology") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"ontology")))=1 set ^IndexDictionary("ID",t("id"),"type")=t("type") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"type")))=1 quit #; -------------------------------------------------------------------------------------------------- saveElementPath set ^IndexDictionary("ID",t("id"),"path")=t("path") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"path")))=1 quit #; -------------------------------------------------------------------------------------------------- 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ ^ RefsDictionary рдореЗрдВ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╛рдо рд╕реНрдерд╛рди рдХрд╛ рдирд╛рдо рд╣реИ ред "MONTOLOGY" ред рдпрджрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдЗрд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдирд╛рдо рд╕реНрдерд╛рди рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдкреВрд░реНрдг рдорд╛рд░реНрдЧ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрджрд░ рднреА, рдкреВрд░реНрдг рдкрде (рдЕрдиреНрдп рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЗрд╕реЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред

рд╕рднреА рд╢рдмреНрджрдХреЛрд╢ рдХреЛрдб:
 #; -------------------------------------------------------------------------------------------------- #;   #; -------------------------------------------------------------------------------------------------- Dictionary #; -------------------------------------------------------------------------------------------------- #;   . #; -------------------------------------------------------------------------------------------------- retrieve(id,lang="ru",version=0) quit $get(^NameDictionaryElement(id,lang,version),"") #; -------------------------------------------------------------------------------------------------- #;      . #; -------------------------------------------------------------------------------------------------- retrieveListByIndex(ontology,type,index,value,str="",lang="ru") #;     ,       set str=$zconvert(str,"L") set id="" for { #;  ()    set id=$order(^IndexDictionary(ontology,type,index,value,id)) #;  ,        quit:id="" #;   set name=$$retrieve(id,lang) #;      str if $extract($zconvert(name,"L"),1,$length(str))=str { #;  (  ) write id_" "_name,! } } quit #; -------------------------------------------------------------------------------------------------- #;   . #;         . #; -------------------------------------------------------------------------------------------------- create() #;     kill map("out") #;     t #;         create new t #;      set t("err")=$$check("create") #; ,    if t("err")<0 { quit t("err") } #;   "UpdateTime" do setProperty(t("ontology"),t("type"),"UpdateTime",$horolog,t("id"),"false") #;   "uid" do setProperty(t("ontology"),t("type"),"uid",t("uid"),t("id"),"true") set t("lang")="" for { #;    (     ) set t("lang")=$order(t("nameList",t("lang"))) #;   ,     quit:t("lang")="" #;      set t("name")=$get(t("nameList",t("lang"))) #;      do setName(t("ontology"),t("type"),t("lang"),t("name"),t("id")) } #;          do saveOntoAndTypeID #;         do saveElementPath #;         set map("out","id")=t("id") #;     kill map("in") #;     quit t("id") #; -------------------------------------------------------------------------------------------------- #;  . #;    ^RuleDictionary    . #; -------------------------------------------------------------------------------------------------- check(action)private #;     check new check #;        action set check=$case(action,"create":$$checkCreate(),"update":$$checkUpdate(),"delete":$$checkDelete(),:-1) #;   quit:check<0 check #;  "uid"      set t("uid")=$get(map("in","uid"),888) #; ,      "check",        if $data(^RuleDictionary(t("ontology"),t("type"),action,"check")) { #;  t("map")        set t("map")=$name(^RuleDictionary(t("ontology"),t("type"),action,"check")) } else { #;  t("map")              set t("map")=$name(^RuleDictionary("SimpleOntology","SimpleType",action,"check")) } set check("i")="" for { #;     set check("i")=$order(@t("map")@(check("i"))) #;   ,     quit:check("i")="" #;     xecute $get(@t("map")@(check("i"))) #;   ,     quit:check<0 } #;    quit check #; -------------------------------------------------------------------------------------------------- #;      . #;  id, ontology, type,   . #; -------------------------------------------------------------------------------------------------- checkCreate()private #;       st("ontology")=$get(map("in","ontology"),"") #;       quit:t("ontology")="" -1 #;        set t("type")=$get(map("in","type"),"") #;  ,      quit:t("type")="" -1 #;     set t("check")=$$checkNames() #;  ,     quit:t("check")<0 t("check") #;       set t("id")=$increment(^Dictionary("MaxID")) #;      ^Dictionary set t("path")=$name(^Dictionary(t("ontology"),t("type"),t("id"))) #;     quit 0 #; -------------------------------------------------------------------------------------------------- checkUpdate() quit 0 #; -------------------------------------------------------------------------------------------------- checkDelete() quit 0 #; -------------------------------------------------------------------------------------------------- #;     . #; -------------------------------------------------------------------------------------------------- checkNames()private #;          merge t("nameList")=map("in","nameList") #;   t("check")  #;         set t("check")=-1 set t("lang")="" for { #;    set t("lang")=$order(t("nameList",t("lang"))) #;   ,     quit:t("lang")="" #;      set t("name")=$get(t("nameList",t("lang")),"") #;    if t("name")="" { #;   t("check")  set t("check")=-1 #;    quit } else { #;  t("check")   ,     set t("check")=0 } } #;     quit t("check") #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlCharAllLang() set t("lang")="" for { #;     set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #;           set t("nameList",t("lang"))=$$clearPunctuationAndControlChar($get(t("nameList",t("lang")),"")) } quit #; -------------------------------------------------------------------------------------------------- checkUniqueNameElementAllLang() set t("lang")="" for { #;     set t("lang")=$order(t("nameList",t("lang"))) quit:t("lang")="" #;    set t("name")=$get(t("nameList",t("lang")),"") #;   check     (0 -  ) set check=$$checkUniqueNameElement() #;     -    quit:check<0 } quit #; -------------------------------------------------------------------------------------------------- #;         . #; -------------------------------------------------------------------------------------------------- clearPunctuationAndControlChar(str) new t #;  t("str")     set t("str")="" #;      for t("i")=1:1:$length(str) { #;    set t("ch")=$extract(str,t("i")) if '((t("ch")?1P)||(t("ch")?1C)) { #;       set t("str")=t("str")_t("ch") } } #;    quit t("str") #; -------------------------------------------------------------------------------------------------- #; -------------------------------------------------------------------------------------------------- #;      ,   ,   . #;  ,   . #; -------------------------------------------------------------------------------------------------- checkUniqueNameElement() #;    set t("q")=0 set t("uniqueId")="" for { #; ,         #;   , ,   (  ) set t("uniqueId")=$order(^IndexDictionary(t("ontology"),t("type"),"name",t("lang"),$zconvert(t("name"),"l"),t("uniqueId"))) #;     quit:t("uniqueId")="" #; ,      #;     update if (t("uniqueId")'=t("id")) { #;  ,       set t("q")=-1 quit } } #;   quit t("q") #; -------------------------------------------------------------------------------------------------- #;  ,     . #;         . #; -------------------------------------------------------------------------------------------------- setProperty(ontology,type,property,value,id,index="true")private #;      ()    set ^Dictionary(ontology,type,id,0,property)=value #;    if index="true" { #;   set ^IndexDictionary(ontology,type,property,value,id)=1 #;      set ^RefsDictionary(id,$name(^|"MONTOLOGY"|IndexDictionary(ontology,type,property,value,id)))=1 } quit 0 #; -------------------------------------------------------------------------------------------------- #;   ,     . #;  (  )   . #; -------------------------------------------------------------------------------------------------- setName(ontology,type,lang,value,id)private #;         set ^NameDictionaryElement(id,lang,0)=value #;   / set ^NameDictionaryElement(id,lang,0,"UpdateTime")=$horolog #;     set ^IndexDictionary(ontology,type,"name",lang,$zconvert(value,"l"),id)=1 #;    set ^RefsDictionary(id,$name(^|"MONTOLOGY"|IndexDictionary(ontology,type,"name",lang,$zconvert(value,"l"),id)))=1 quit 0 #; -------------------------------------------------------------------------------------------------- saveOntoAndTypeID set ^IndexDictionary("ID",t("id"),"ontology")=t("ontology") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"ontology")))=1 set ^IndexDictionary("ID",t("id"),"type")=t("type") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"type")))=1 quit #; -------------------------------------------------------------------------------------------------- saveElementPath set ^IndexDictionary("ID",t("id"),"path")=t("path") set ^RefsDictionary(t("id"),$name(^|"MONTOLOGY"|IndexDictionary("ID",t("id"),"path")))=1 quit #; -------------------------------------------------------------------------------------------------- 


рдЕрдм рд╣рдо ^ рдирд┐рдпрдо рдирд┐рдпрдо рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдкрдиреЗ рд╕рднреА рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВрдЧреЗ :
 MONTOLOGY>kill ^Dictionary,^IndexDictionary,^NameDictionaryElement,^RefsDictionary MONTOLOGY> 

рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдкрд╣рд▓реЗ рджреЛ рддрддреНрд╡ рдмрдирд╛рдПрдВ:
 MONTOLOGY>kill map MONTOLOGY>set map("in","ontology")="Vehicle",map("in","type")="TransmissionType" MONTOLOGY>set map("in","nameList","ru")=" ,",map("in","nameList","partUri")="akp" MONTOLOGY>write $$create^Dictionary() 1 MONTOLOGY>kill map MONTOLOGY>set map("in","ontology")="Vehicle",map("in","type")="TransmissionType" MONTOLOGY>set map("in","nameList","ru")="",map("in","nameList","partUri")="meh" MONTOLOGY>write $$create^Dictionary() 2 MONTOLOGY> 

рд╣рдо рдЕрдкрдиреЗ рд╕рднреА рдЧреНрд▓реЛрдмрд▓реНрд╕ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ:
 MONTOLOGY>zwrite ^Dictionary,^IndexDictionary,^NameDictionaryElement,^RefsDictionary ^Dictionary("MaxID")=2 ^Dictionary("Vehicle","TransmissionType",1,0,"UpdateTime")="62948,47015" ^Dictionary("Vehicle","TransmissionType",1,0,"uid")=888 ^Dictionary("Vehicle","TransmissionType",2,0,"UpdateTime")="62948,47022" ^Dictionary("Vehicle","TransmissionType",2,0,"uid")=888 ^IndexDictionary("ID",1,"ontology")="Vehicle" ^IndexDictionary("ID",1,"path")="^Dictionary(""Vehicle"",""TransmissionType"",1)" ^IndexDictionary("ID",1,"type")="TransmissionType" ^IndexDictionary("ID",2,"ontology")="Vehicle" ^IndexDictionary("ID",2,"path")="^Dictionary(""Vehicle"",""TransmissionType"",2)" ^IndexDictionary("ID",2,"type")="TransmissionType" ^IndexDictionary("Vehicle","TransmissionType","name","partUri","akp",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","partUri","meh",2)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",1)=1 ^IndexDictionary("Vehicle","TransmissionType","name","ru","",2)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,1)=1 ^IndexDictionary("Vehicle","TransmissionType","uid",888,2)=1 ^NameDictionaryElement(1,"partUri",0)="akp" ^NameDictionaryElement(1,"partUri",0,"UpdateTime")="62948,47015" ^NameDictionaryElement(1,"ru",0)="" ^NameDictionaryElement(1,"ru",0,"UpdateTime")="62948,47015" ^NameDictionaryElement(2,"partUri",0)="meh" ^NameDictionaryElement(2,"partUri",0,"UpdateTime")="62948,47022" ^NameDictionaryElement(2,"ru",0)="" ^NameDictionaryElement(2,"ru",0,"UpdateTime")="62948,47022" ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""ID"",1,""ontology"")")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""ID"",1,""path"")")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""ID"",1,""type"")")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""akp"",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",1)")=1 ^RefsDictionary(1,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,1)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""ID"",2,""ontology"")")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""ID"",2,""path"")")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""ID"",2,""type"")")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""partUri"",""meh"",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""name"",""ru"","""",2)")=1 ^RefsDictionary(2,"^|""MONTOLOGY""|IndexDictionary(""Vehicle"",""TransmissionType"",""uid"",888,2)")=1 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпреЗ рдЧреНрд▓реЛрдмрд▓реНрд╕ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ "рдЕрдкрдбреЗрдЯ рдЯрд╛рдЗрдо" рдХреЗ рд╕рд╛рде - рдореИрдВрдиреЗ рдЖрдЬ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд┐рдпрд╛ - рдЗрд╕рд▓рд┐рдП рддрд╛рд░реАрдЦ рд╡рд░реНрддрдорд╛рди рд╣реИред рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ ^ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ ("рдЖрдИрдбреА") рднреА рджрд┐рдЦрд╛рдИ рджреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ ^ RefsDictionary рдореЗрдВ backlinks ред рдореЗрдВ ^ рдбрд┐рдХреНрд╢рдирд░реА ( ┬лMaxID┬╗) рд╕рдВрджрд░реНрдн рдЙрдкрддрдВрддреНрд░ рдореЗрдВ рд╣рдорд╛рд░реА рдкрд╣рдЪрд╛рди рдХрд╛ рдЕрдзрд┐рдХрддрдо рддрддреНрд╡ рд░рдЦрд╛ред рдбрд┐рдХреНрд╢рдирд░реА

рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЗрд░реА рдХрд╛рд░реНрдпрд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдХреБрдЫ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рдкреВрд░реНрдг рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рдХрд╣реАрдВ рдХрдореА рд╣реИ - рдЕрдЧрд░ рдХреЛрдИ рдЙрдиреНрд╣реЗрдВ рдвреВрдВрдврддрд╛ рд╣реИ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рд╕рд╡рд╛рд▓реЛрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред

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


All Articles