1C 8.2 рдореЗрдВ рдмрд╛рд╣рд░реА рдШрдЯрдХ

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


рдпрд╣ рд▓реЗрдЦ "1 рд╕реА: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ" рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рдХреЗ рдХрд╛рдо рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИред
рдХрд╛рд░реНрдп рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ "1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ" рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг 8.2 рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рдШрдЯрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреАред рдпрд╣ рдХрд╛рд░реНрдп рд╡рд┐рдХрд▓реНрдк рдЫреЛрдЯреЗ рд╡реНрдпрд╡рд╕рд╛рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред VK C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


рдмрд╛рд╣рд░реА рдШрдЯрдХ "1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ"


"IC: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ" рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдкреНрд░рдгрд╛рд▓реА рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ (рд╡реАрдХреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, VC рдПрдХ рдмрд╛рд╣рд░реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ, рдФрд░ рдпрд╣ 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреЛ рднреА рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ 1 рд╕реА рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдпрд╛ рдЕрд╕рдВрднрд╡ рд╣реИ: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

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

рд╡реАрдХреЗ рд╕рдВрд░рдЪрдирд╛

1C рдХрд╛ рдмрд╛рд╣рд░реА рдШрдЯрдХ: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдХреЛ DLL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб IComponentBase рд╡рдВрд╢рдЬ рд╡рд░реНрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдЧ рдореЗрдВ, рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреНрд░рд╕реНрддреБрддреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдбреЗрдореЛ VK рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ


рдЙрджреНрджреЗрд╢реНрдп:
  1. ITS рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ 1C рдореЗрдВ рдмрд╛рд╣рд░реА рдШрдЯрдХ рддрдВрддреНрд░ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛
  2. рдбреЗрдореЛ рдШрдЯрдХ рдХреЛ 1C рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
  3. рдШреЛрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ


рд╕рдВрдХрд▓рди

рдбреЗрдореЛ рд╡реАрдХреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ ITS рд╕рджрд╕реНрдпрддрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ "/ VNCOMP82 / рдЙрджрд╛рд╣рд░рдг / NativeAPI"ред
рдбреЗрдореЛ VK рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╣рдо Microsoft Visual Studio 2008 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП Visual Studio рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

AddInNative рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ / VNCOMP82 / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ ITS рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред
рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдЗрд▓ /bind/AddInNative.dll рд╣реИ ред рдпрд╣ 1 рд╕реА рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред

1C рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реАрдХреЗ рдХрдиреЗрдХреНрд╢рди

рдПрдХ рдЦрд╛рд▓реА 1C рд╡рд┐рдиреНрдпрд╛рд╕ рдмрдирд╛рдПрдБред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИред
 ;  () ("...\bind\AddInNative.dll", "DemoVK", .Native);  = ("AddIn.DemoVK.AddInNativeExtension");  

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

рдПрдореНрдмреЗрдбреЗрдб рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди

рдбреЗрдореЛ рд╡реАрдХреЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдХреБрдЫ VK рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдФрд░ VK рд╕рдВрджреЗрд╢ рдХреЛ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред
ITS рдбрд┐рд╕реНрдХ рдкрд░ рджрд┐рдП рдЧрдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдбреЗрдореЛ VK рдХреА рдирд┐рдореНрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрддрд╛рдИ рдЧрдИ рд╣реИ:
  1. рдПрдХ рдШрдЯрдХ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛
    рд╡рд┐рдзрд┐рдпрд╛рдБ: рд╕рдХреНрд╖рдо , рдЕрдХреНрд╖рдо рдХрд░реЗрдВ
    рдЧреБрдг: рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
  2. рд╕рдордп рдкрд░ рдирд┐рдпрдВрддреНрд░рдг
    рд╣рд░ рд╕реЗрдХрдВрдб, рдШрдЯрдХ 1C рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ: рдШрдЯрдХ , рдЯрд╛рдЗрдорд░ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓реЙрдХ рдХрд╛рдЙрдВрдЯрд░ рдХреА рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд┐рд╕реНрдЯрдоред
    рддрд░реАрдХреЗ: StartTimer , StopTimer
    рдЧреБрдг: рд╣рд╛рдБ рдЯрд╛рдЗрдорд░
  3. ShowInStatusStroke рд╡рд┐рдзрд┐, рдЬреЛ рд╡рд┐рдзрд┐ рдмрд╛рд░ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рджрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ
  4. рд╡рд┐рдзрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдЪрд┐рддреНрд░ ред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 1 рд╕реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ: рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд┐рд╕реНрдЯрдоред

рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
  ;  () (...);  = ("AddIn.DemoVK.AddInNativeExtension"); .(); (.); .(); (.); .();   (, , ) ( + " " +  + " " + );  

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЫрд╡рд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

"рд╕рдВрджреЗрд╢" рдкреИрдирд▓ рдбреЗрдореЛрдХреЙрдо рдХреЛ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдХреНрд╖рдо рдХрд░реЗрдВ () рдФрд░ рдбреЗрдореЛрдХреЙрдо ред рд╕рдХреНрд╖рдо рдХрд░реЗрдВ () рдХреЗ рддрд░реАрдХреЗред рдПрдХ рд╣реА рдкреИрдирд▓ рдкрд░ рдмрд╛рдж рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреНрд░рдорд╢рдГ рд╡реАрд╕реА - рд╕реЛрд░реНрд╕ , рдЗрд╡реЗрдВрдЯ рдФрд░ рдбреЗрдЯрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВред

рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХрд╛ рдордирдорд╛рдирд╛ рдирд╛рдо


рдХрд╛рд░реНрдп: рдХрд┐рд╕реА рднреА рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВред
рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ AddInNativeExtension рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╕рдордЭрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, AddInNativeExtension рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдирд╛рдо рд╣реИред
VC рдХреЛрдб рдореЗрдВ, RegisterExtensionAs рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЙрд╕ рдирд╛рдо рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡реАрд╕реА рдХреЗ рдмрд╛рдж рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдоред рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреЗ рд╕рд╛рд░ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИред
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде RegisterExtensionAs рд╡рд┐рдзрд┐ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 bool CAddInNative::RegisterExtensionAs(WCHAR_T** wsExtensionName) { wchar_t *wsExtension = L"SomeName"; int iActualSize = ::wcslen(wsExtension) + 1; WCHAR_T* dest = 0; if (m_iMemory) { if(m_iMemory->AllocMemory((void**)wsExtensionName, iActualSize * sizeof(WCHAR_T))) ::convToShortWchar(wsExtensionName, wsExtension, iActualSize); return true; } return false; } 

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, VK рдирд╛рдо рдХреЛ SomeName рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рд╡реАрд╕реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдирд╛рдо рдмрддрд╛рдирд╛ рд╣реЛрдЧрд╛:
  = ("AddIn.DemoVK.SomeName"); 


рд╡реАрдХреЗ рдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░


рдЙрджреНрджреЗрд╢реНрдп:
  1. рд╡реАрд╕реА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ
  2. рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдФрд░ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдЬреЛрдбрд╝реЗрдВ
  3. рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдкрдарди-рд▓реЗрдЦрди рдЧреБрдг рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдЕрдВрддрд┐рдо рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ
  4. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ AddInNative.cpp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
GetNProps
рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЧреБрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, 0 - рдЧреБрдгреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ
FindProp
рдЙрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
GetPropName
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдЙрд╕рдХреЗ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдФрд░ рдкреНрд░реЗрд╖рд┐рдд рднрд╛рд╖рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
GetPropVal
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИ
SetPropVal
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
IsPropReadable
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдЭрдВрдбреЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИ
IsPropWritable
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдЧреБрдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдЭрдВрдбреЗ рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ

рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╕рд╣рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг, ITS рдбрд┐рд╕реНрдХ рдкрд░ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
CAddInNative рд╡рд░реНрдЧ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдбреЗрдореЛ VK рдореЗрдВ, 2 рдЧреБрдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ: рд╕рдХреНрд╖рдо рдФрд░ IsTimer ( IsEnabled рдФрд░ IsTimerPresent )ред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 static wchar_t *g_PropNames[] = {L"IsEnabled", L"IsTimerPresent"}; static wchar_t *g_PropNamesRu[] = {L"", L""}; 

рдЬреЛ рд░реВрд╕реА рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ AddInNative.h рдЧрдгрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
 enum Props { ePropIsEnabled = 0, ePropIsTimerPresent, ePropLast // Always last }; 

ePropIsEnabled рдФрд░ ePropIsTimerPresent , рдХреНрд░рдорд╢рдГ, 0 рдФрд░ 1 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЛ рд╕рд╛рд░реНрдердХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 2 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдПрдХ ePropLast рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреБрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (GetNProps рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЗ рдирд╛рдо рдХреЗрд╡рд▓ рдШрдЯрдХ рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рд╣рд░ рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
FindProp рдФрд░ GetPropName рд╡рд┐рдзрд┐рдпрд╛рдБ g_PropNames рдФрд░ g_PropNamesRu рд╕рд░рдгрд┐рдпрд╛рдБ рдЦреЛрдЬрддреА рд╣реИрдВ ред
рд▓рд╛рдпрдмреНрд░реЗрд░реА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CAddInNative рд╡рд░реНрдЧ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдШрдЯрдХ рдЧреБрдгреЛрдВ рдХрд╛ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред GetPropVal рдФрд░ SetPropVal рд╡рд┐рдзрд┐рдпрд╛рдБ рдХреНрд░рдорд╢рдГ рд▓реМрдЯрддреА рд╣реИрдВ рдФрд░ рдЗрди рдЧреБрдгреЛрдВ рдХрд╛ рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВред
IsPropReadable рдФрд░ IsPropWritable рд╡рд┐рдзрд┐рдпрд╛рдБ , рдЯреНрд░реЗрдЬрд░реА рдпрд╛ рдЕрд╕рддреНрдп рджреЛрдиреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИрдВ , рдЬреЛ рдХрд┐ рдПрдкреНрд▓реАрдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЙрддреНрддреАрд░реНрдг рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реЛрддреА рд╣реИред
рдордирдорд╛рдиреА рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
  1. G_PropNames рдФрд░ g_PropNamesRu рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ ( AddInNative.cpp рдлрд╝рд╛рдЗрд▓)
  2. рдкреНрд░реЙрдк рдПрдиреНрдпреВрдорд░реЗрд╢рди ( AddInNative.h рдлрд╝рд╛рдЗрд▓) рдореЗрдВ ePropLast рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирд╛рдо рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛ рд░рд╣реА рд╕рдВрдкрддреНрддрд┐ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ
  3. рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ (рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдореЙрдбреНрдпреВрд▓ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдВ)
  4. рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GetPropVal рдФрд░ SetPropVal рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ
  5. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, IsPropReadable рдФрд░ IsPropWritable рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ

рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1, 2, 5 рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдХреЗ рдЗрди рдЪрд░рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдЧреБрдг рдЯреЗрд╕реНрдЯ рдФрд░ рдЯрд╛рдЗрдк рдЯреЗрд╕реНрдЯ рдХреЛ рдирд╛рдо рджреЗрдВред рдлрд┐рд░, рдкреИрд░рд╛рдЧреНрд░рд╛рдл 1 рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
 static wchar_t *g_PropNames[] = {L"IsEnabled", L"IsTimerPresent", L"Test", L"TestType"}; static wchar_t *g_PropNamesRu[] = {L"", L"", L"", L""}; 

рдЧрдгрдирд╛ рдкреНрд░реЙрдкреНрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
  enum Props { ePropIsEnabled = 0, ePropIsTimerPresent, ePropTest1, ePropTest2, ePropLast // Always last }; 

рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо STL C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, WCHAR рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо wstring рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗред
рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, CAddInNative рд╡рд░реНрдЧ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
 string test1; 

1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдФрд░ рдмрд╛рд╣рд░реА рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХреЗ рдХрд╛рдо рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХреНрд░рдорд╢рдГ рдореЗрдореЛрд░реА рдФрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ImemoryManager.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд AllocMemory рдФрд░ FreeMemory рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 1 рд╕реА рдкрд╛рд╕ рдХрд░реЗрдВ: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд┐рд╕реНрдЯрдо, рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреЛ AllocMory рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрд╕рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 virtual bool ADDIN_API AllocMemory (void** pMemory, unsigned long ulCountByte) = 0; 

рдЬрд╣рд╛рдВ pMemory рдЙрд╕ рд╕реВрдЪрдХ рдХрд╛ рдкрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХрд╛ рдкрддрд╛ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛,
ulCountByte - рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдХрд╛ рдЖрдХрд╛рд░ред
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 WCHAR_T *t1 = NULL, *test = L"TEST_STRING"; int iActualSize = wcslen(test1)+1; m_iMemory->AllocMemory((void**)&t1, iActualSize * sizeof(WCHAR_T)); ::convToShortWchar(&t1, test1, iActualSize); 

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо wstring_to_p рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ wstring рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рднрд░рд╛ tVariant рд╕рдВрд░рдЪрдирд╛ рд╣реИред рд╕рдорд╛рд░реЛрд╣ рдХреЛрдб:
 bool CAddInNative::wstring_to_p(std::wstring str, tVariant* val) { char* t1; TV_VT(val) = VTYPE_PWSTR; m_iMemory->AllocMemory((void**)&t1, (str.length()+1) * sizeof(WCHAR_T)); memcpy(t1, str.c_str(), (str.length()+1) * sizeof(WCHAR_T)); val -> pstrVal = t1; val -> strLen = str.length(); return true; } 

рдлрд┐рд░ GetPropVal рд╡рд┐рдзрд┐ рдХреЗ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдХреЗрд╕ рд╕реЗрдХреНрд╢рди рдлреЙрд░реНрдо рд▓реЗрддрд╛ рд╣реИ:
 case ePropTest1: wstring_to_p(test1, pvarPropVal); break; 

рд╕реЗрдЯрдкреНрд░реЙрдкрд╡реЗрд▓ рддрд░реАрдХреЗ:
  case ePropTest1: if (TV_VT(varPropVal) != VTYPE_PWSTR) return false; test1 = std::wstring((wchar_t*)(varPropVal -> pstrVal)); break; 

рджреВрд╕рд░реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CaddInNative рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
 uint8_t last_type; 

рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдВрддрд┐рдо рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CaddInNative :: SetPropVal рд╡рд┐рдзрд┐ рдореЗрдВ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗрдВ:
 last_type = TV_VT(varPropVal); 

рдЕрдм, рдЬрдм рд╣рдо рджреВрд╕рд░реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо last_type рдХреЗ рдорд╛рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рд╕рдВрдХреЗрддрд┐рдд рдХрд╛рд░реНрдп рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдВрдЪрд╛рд▓рдирд╢реАрд▓рддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлреЙрд░реНрдо рдореЗрдВ 1C рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд▓рд╛рддреЗ рд╣реИрдВ:
  ;  () ("...", "DemoVK", .Native);  = ("AddIn.DemoVK.SomeName"); . = 1; ((.)); . = ""; ((.)); . = ""; ((.)); ((.));  

рд▓реЙрдиреНрдЪ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдХреНрд░рдо рдорд┐рд▓рддрд╛ рд╣реИ:
3


22

рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рд╕рдВрджреЗрд╢ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕реЗрдЯ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реЗрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред 3 рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди, 22 рд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрдирдХреЗ рдХреЛрдб рдХрд╛ рдкрддреНрд░рд╛рдЪрд╛рд░ type.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ ITS рдбрд┐рд╕реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред

рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░


рдЙрджреНрджреЗрд╢реНрдп:
  1. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдврд╝рд╛рдПрдБ:
  2. рдмрд╛рд╣рд░реА рдШрдЯрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ
  3. рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдзрд┐ Funkts1 рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ ("рдкреИрд░рд╛рдореАрдЯрд░ 1" рдФрд░ "рдкреИрд░рд╛рдореАрдЯрд░ 2") рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░рдкрддреНрд░ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ: "рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдкреИрд░рд╛рдореАрдЯрд░ 1, рдкреИрд░рд╛рдореАрдЯрд░ 2 ┬╗
  4. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдирд┐рд░реНрдорд┐рдд рдШрдЯрдХ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рдХреЛ AddInNative рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
GetNMethods , FindMethod , GetMethodName
рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреНрд░рдорд╢рдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рдзрд┐ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░реЗрдВред рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░реАрдХреЗ рдХреЗ рд╕рдорд╛рдиред
GetNParams
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ; рдпрджрд┐ рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рдпрд╛ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд░рд┐рдЯрд░реНрди 0 рд╣реИ
GetParamDefValue
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ
HasRetVal
рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЭрдВрдбрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ: рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдФрд░ рдЧрд▓рдд рдЕрдиреНрдпрдерд╛
CallAsProc
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд┐рдзрд┐ рдЧрд▓рдд рдЖрддреА рд╣реИ , рддреЛ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ 1C рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА 1 рд╕реА: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рдВрдЯрд┐рдд рдФрд░ рдореБрдХреНрдд рдХреА рдЬрд╛рддреА рд╣реИред
CallAsFunc
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд┐рдзрд┐ рдЧрд▓рдд рдЖрддреА рд╣реИ , рддреЛ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ 1C рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдореЙрдбреНрдпреВрд▓ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА 1 рд╕реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬред рдпрджрд┐ рд░рд┐рдЯрд░реНрди рдорд╛рди рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХрд╛ рд╣реИ, рддреЛ рдШрдЯрдХ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрд░ рдХреЗ AllocMemory рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкрддреЗ рдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ FreeMemory рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕ рдореЗрдореЛрд░реА рдХреЛ рдлреНрд░реА рдХрд░реЗрдЧрд╛ред
рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╕рд╣рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг, ITS рдбрд┐рд╕реНрдХ рдкрд░ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдШрдЯрдХ рдХреЛрдб рдореЗрдВ, рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 static wchar_t *g_MethodNames[] = {L"Enable", L"Disable", L"ShowInStatusLine", L"StartTimer", L"StopTimer", L"LoadPicture"}; static wchar_t *g_MethodNamesRu[] = {L"", L"", L"", L"", L"", L""}; 

рдФрд░ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ:
 enum Methods { eMethEnable = 0, eMethDisable, eMethShowInStatusLine, eMethStartTimer, eMethStopTimer, eMethLoadPicture, eMethLast // Always last }; 

рд╡реЗ GetNMethods , FindMethod, рдФрд░ GetMethodName рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд╕рдорд╛рди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
GetNParams , GetParamDefValue , HasRetVal рдкрджреНрдзрддрд┐рдпрд╛рдВ рдПрдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЖрд╡реЗрджрди рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ HasRetVal рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рдЪ рд╣реИ ред рд╕рднреА рд╕реНрдЯреАрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЭреВрдареА рд▓реМрдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИред
CallAsProc рдФрд░ CallAsFunc рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╡рд┐рдзрд┐ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
  1. рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо g_MethodNames рдФрд░ g_MethodNamesRu рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ ( AddInNative.cn рдлрд╝рд╛рдЗрд▓)
  2. рд╡рд┐рдзрд┐рдпрд╛рдБ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрдердХ рд╡рд┐рдзрд┐ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ ( AddInNative.h рдлрд╝рд╛рдЗрд▓)
  3. рдкреНрд░реЛрдЧреНрд░рд╛рдо рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ GetNParams рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ
  4. рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ GetParamDefValue рд╡рд┐рдзрд┐ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВред
  5. HasRetVal рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ
  6. рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╡рд┐рдзрд┐ рдХреЛрдб рд░рдЦрдХрд░ CallAsProc рдпрд╛ CallAsFunc рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ

рдпрд╣рд╛рдБ g_MethodNames рдФрд░ g_MethodNamesRu рд╕рд░рдгрд┐рдпрд╛рдБ рд╣реИрдВ , рд╕рд╛рде рд╣реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ :
 static wchar_t *g_MethodNames[] = {L"Enable", L"Disable", L"ShowInStatusLine", L"StartTimer", L"StopTimer", L"LoadPicture", L"Test"}; static wchar_t *g_MethodNamesRu[] = {L"", L"", L"", L"", L"", L"", L""}; 


  enum Methods { eMethEnable = 0, eMethDisable, eMethShowInStatusLine, eMethStartTimer, eMethStopTimer, eMethLoadPicture, eMethTest, eMethLast // Always last }; 

рдЖрдЗрдП GetNProps рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рдЯреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рдП:
 long CAddInNative::GetNParams(const long lMethodNum) { switch(lMethodNum) { case eMethShowInStatusLine: return 1; case eMethLoadPicture: return 1; case eMethTest: return 2; default: return 0; } return 0; } 

рдЪрд▓реЛ CAddInNative рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ :: GetParamDefValue рдлрд╝рдВрдХреНрд╢рди :
 bool CAddInNative::GetParamDefValue(const long lMethodNum, const long lParamNum, tVariant *pvarParamDefValue) { TV_VT(pvarParamDefValue)= VTYPE_EMPTY; switch(lMethodNum) { case eMethEnable: case eMethDisable: case eMethShowInStatusLine: case eMethStartTimer: case eMethStopTimer: case eMethTest: // There are no parameter values by default break; default: return false; } return false; } 

рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
 case eMethTest: 

рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рддрд░реНрдХреЛрдВ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ, рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдЦрд╛рд▓реА рдорд╛рди рд╣реЛрдЧрд╛ ( VTYPE_EMPTY )ред рдпрджрд┐ рдЖрдкрдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ CAddInNative рдХреЗ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ :: GetParamDefValue рдлрд╝рдВрдХреНрд╢рди рдХреЗ eMethTest рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЪреВрдВрдХрд┐ рдЯреЗрд╕реНрдЯ рд╡рд┐рдзрд┐ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП HasRetVal рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
 bool CAddInNative::HasRetVal(const long lMethodNum) { switch(lMethodNum) { case eMethLoadPicture: case eMethTest: return true; default: return false; } return false; } 

рдФрд░ CallAsFunc рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╡рд┐рдзрд┐ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
 bool CAddInNative::CallAsFunc(const long lMethodNum, tVariant* pvarRetValue, tVariant* paParams, const long lSizeArray) { ... std::wstring s1, s2; switch(lMethodNum) { case eMethLoadPicture: ... break; case eMethTest: if (!lSizeArray || !paParams) return false; s1 = (paParams) -> pwstrVal; s2 = (paParams+1) -> pwstrVal; wstring_to_p(std::wstring(s1+s2), pvarRetValue); ret = true; break; } return ret; } 

рдШрдЯрдХ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛрдб рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рд▓рд╛рдПрдВ:
  ;  () ("...", "DemoVK", .Native);  = ("AddIn.DemoVK.SomeName");  = .(", ", "!"); ();  

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛: "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!", рдЬреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХреА рд╣реИред

рдШрдбрд╝реА


рдЙрджреНрджреЗрд╢реНрдп:
  1. рдбреЗрдореЛ рд╡реАрдХреЗ рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╛рдиреЗрдВ
  2. "StartTimer" рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдЯрд╛рдЗрдорд░ рдЕрдВрддрд░рд╛рд▓ (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ
  3. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

WinAPI рдореЗрдВ, рдЖрдк рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WM_TIMER рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрджреЗрд╢ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЙрд╕ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЖрдкрдиреЗ рдЯрд╛рдЗрдорд░ рдмрдирд╛рддреЗ рд╕рдордп рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ред
рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, SetTimer рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 UINT SetTimer(HWND hWnd, //   UINT nIDevent, //  ()  UINT nElapse, //  TIMERPROC lpTimerFunc); //    

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо nElapse рддрд░реНрдХ (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ WM_TIMER рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ, рдЖрдк рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рд░ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЯрд╛рдЗрдорд░ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢реАрд░реНрд╖рдХ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдирд╛рдо рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ):
 void __stdcall TimerProc (HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) 

рдПрдХ рдбреЗрдореЛ рд╡реАрдХреЗ рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдорд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЪреВрдВрдХрд┐ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдПрдХ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рдШрдЯрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЯрд╛рдЗрдорд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕реЗрдЯрдЯрд╛рдЗрдорд░ рдФрд░ рдЯрд┐рдорд░рдкреНрд░реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдореЗрдВ, рд╕реЗрдЯрдЯреАрдорд░ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП MyTimerProc рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :
 m_uiTimer = ::SetTimer(NULL,0,100,(TIMERPROC)MyTimerProc); 

рдирд┐рд░реНрдорд┐рдд рдЯрд╛рдЗрдорд░ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ m_uiTimer рдЪрд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
MyTimerProc рдлрд╝рдВрдХреНрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 VOID CALLBACK MyTimerProc( HWND hwnd, // handle of window for timer messages UINT uMsg, // WM_TIMER message UINT idEvent, // timer identifier DWORD dwTime // current system time ) { if (!pAsyncEvent) return; wchar_t *who = L"ComponentNative", *what = L"Timer"; wchar_t *wstime = new wchar_t[TIME_LEN]; if (wstime) { wmemset(wstime, 0, TIME_LEN); ::_ultow(dwTime, wstime, 10); pAsyncEvent->ExternalEvent(who, what, wstime); delete[] wstime; } } 

рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рд╣рд░реА рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ 1 рд╕реА: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИред
StartTimer рд╡рд┐рдзрд┐ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреЗ рд╣реИрдВ:
рд╣рдо GetNParams рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ eMethStartTimer рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП 1 рд▓реМрдЯреЗ :
 case eMethStartTimer: return 1; 

рдЖрдЗрдП CallAsProc рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рд▓рд╛рдПрдВ :
 case eMethStartTimer: if (!lSizeArray || TV_VT(paParams) != VTYPE_I4 || TV_I4(paParams) <= 0) return false; pAsyncEvent = m_iConnect; #ifndef __linux__ m_uiTimer = ::SetTimer(NULL,0,TV_I4(paParams),(TIMERPROC)MyTimerProc); #else //   GNU/Linux #endif break; 

рдЕрдм рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ:
  ;  () ("...", "DemoVK", .Native);  = ("AddIn.DemoVK.SomeName"); .(2000);  

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдпрдХреНрд░рдо 2 рд╕реЗрдХрдВрдб рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдЬреЛ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ "1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ"


рдмрд╛рд╣рд░реА рдШрдЯрдХ рдФрд░ 1C рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо, AddInDefBase.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд IAddInDefBase рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╣рдо рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪреА:
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд┐рд░реНрдорд╛рдг
 virtual bool ADDIN_API AddError(unsigned short wcode, const WCHAR_T* source, const WCHAR_T* descr, long scode) 

wcode , scode - рддреНрд░реБрдЯрд┐ рдХреЛрдб (рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреА рдПрдХ рд╕реВрдЪреА ITS рдбрд┐рд╕реНрдХ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ)
source - рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрд░реЛрдд
descr - рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг
1 рд╕реА рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд┐рд╕реНрдЯрдо
 virtual bool ADDIN_API ExternalEvent(WCHAR_T* wszSource, WCHAR_T* wszMessage, WCHAR_T* wszData) = 0; 

wszSource - рд╕рдВрджреЗрд╢ рд╕реНрд░реЛрдд
wszMessage - рд╕рдВрджреЗрд╢ рдкрд╛рда
wszData - рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛
рд╕рдВрджреЗрд╢ рдЕрд╡рд░реЛрдзрди рдмрд╛рд╣рд░реА рдИрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
1C рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬ рд╕рд┐рд╕реНрдЯрдо
 virtual bool ADDIN_API RegisterProfileAs(WCHAR_T* wszProfileName) 

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

TVariant рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░


рдмрд╛рд╣рд░реА рдШрдЯрдХ рдФрд░ 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╕рдордп, tVariant рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ type.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ ITS рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 struct _tVariant { _ANONYMOUS_UNION union { int8_t i8Val; int16_t shortVal; int32_t lVal; int intVal; unsigned int uintVal; int64_t llVal; uint8_t ui8Val; uint16_t ushortVal; uint32_t ulVal; uint64_t ullVal; int32_t errCode; long hRes; float fltVal; double dblVal; bool bVal; char chVal; wchar_t wchVal; DATE date; IID IDVal; struct _tVariant *pvarVal; struct tm tmVal; _ANONYMOUS_STRUCT struct { void* pInterfaceVal; IID InterfaceID; } __VARIANT_NAME_2/*iface*/; _ANONYMOUS_STRUCT struct { char* pstrVal; uint32_t strLen; //count of bytes } __VARIANT_NAME_3/*str*/; _ANONYMOUS_STRUCT struct { WCHAR_T* pwstrVal; uint32_t wstrLen; //count of symbol } __VARIANT_NAME_4/*wstr*/; } __VARIANT_NAME_1; uint32_t cbElements; //Dimension for an one-dimensional array in pvarVal TYPEVAR vt; }; 

рдЯрд╛рдЗрдк рд╡реЗрд░рд┐рдПрдВрдЯ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реИрд░рд┐рдПрдВрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдирд┐рдореНрди рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:
  1. рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛
  2. рдбреЗрдЯрд╛ рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП, рдорд┐рд╢реНрд░рдг рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖реЗрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ

TVariant рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ 1C: рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдмрд╛рд╣рд░реА рдШрдЯрдХ рдХреА рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ

рдЖрд╡реЗрджрди


рдЙрджрд╛рд╣рд░рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд▓реЗрдЦ
рдЙрджрд╛рд╣рд░рдг / 1 рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдбреЗрдореЛ рдШрдЯрдХ
рдЙрджрд╛рд╣рд░рдг / 2 рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ - рд╕рдВрдкрддреНрддрд┐ рд╕реВрдЪреА рдХреЗ
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ 3 / - рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди
рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╡реАрдПрд╕ 2008 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдПрдХ рддреИрдпрд╛рд░ 1 рд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

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


All Articles