Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт 1Π‘ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с внСшними прилоТСниями, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ систСмами β€” ΠΎΡ‚ Microsoft Office Π΄ΠΎ спСциализированных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² оборудования. Но Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ скрываСтся Π·Π° этой Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Π΅Π· COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ? И ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€Π²Π°Ρ‚ΡŒΡΡ Π½Π° ошибки?

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² 1Π‘ с нуля: ΠΎΡ‚ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π΄ΠΎ практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ устроСны, Π³Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‚ ΠΊ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ нСработоспособности ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ. ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам 1Π‘, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ спСциалистам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ знания.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ Π² 1Π‘

COM (Component Object Model) β€” это тСхнология ΠΎΡ‚ Microsoft, которая позволяСт Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ‡Π΅Ρ€Π΅Π· стандартныС интСрфСйсы. Π’ контСкстС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ мостом ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ внСшними систСмами. НапримСр:

  • πŸ“Š Экспорт Π΄Π°Π½Π½Ρ‹Ρ… Π² Excel: автоматичСскоС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² с сохранСниСм форматирования.
  • πŸ“§ ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° писСм Ρ‡Π΅Ρ€Π΅Π· Outlook: интСграция с ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ Π±Π΅Π· Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ копирования.
  • πŸ–¨οΈ Π Π°Π±ΠΎΡ‚Π° с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΈΡΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ рСгистраторами, сканСрами ΡˆΡ‚Ρ€ΠΈΡ…ΠΊΠΎΠ΄ΠΎΠ².
  • πŸ”— ВзаимодСйствиС с API: Π²Ρ‹Π·ΠΎΠ² Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Π΅Π±-сСрвисов Ρ‡Π΅Ρ€Π΅Π· WinHttp.WinHttpRequest.5.1.

Π‘Π΅Π· COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² 1Π‘ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ Π±Ρ‹ слоТных ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΎΡ‰Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ внСшнюю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PDFCreator), Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Windows-вСрсиях 1Π‘. Π’ Linux ΠΈΠ»ΠΈ macOS для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, HTTP-сСрвисы ΠΈΠ»ΠΈ native-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ).

ВСхничСски COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² 1Π‘ β€” это экзСмпляр класса, зарСгистрированного Π² систСмС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ динамичСски ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· встроСнный язык.

Как COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² 1Π‘: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° взаимодСйствия

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² 1Π‘, Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ схСму ΠΈΡ… взаимодСйствия с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ:

  1. РСгистрация Π² систСмС: COM-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, DLL-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ зарСгистрирован Π² рССстрС Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ regsvr32 ΠΈΠ»ΠΈ установщика.
  2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра: Π² ΠΊΠΎΠ΄Π΅ 1Π‘ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Имя.Класса"), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
  3. Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ интСрфСйсы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Excel.Application.Workbooks.Open()).
  4. Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: послС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ минимального ΠΊΠΎΠ΄Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Excel:

Excel = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Excel.Application");

Excel.Visible = Π˜ΡΡ‚ΠΈΠ½Π°; // ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ Excel

Книга = Excel.Workbooks.Add();

Excel.Cells(1, 1).Value = "ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠΈΠ· 1Π‘!";

Excel.Quit(); // Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Excel

Π’Π°ΠΆΠ½ΠΎ: Ссли Π½Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Quit(), процСсс Excel останСтся Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² памяти, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ замСдлСнию систСмы. Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· самых распространённых ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM.

πŸ“Š Π‘ ΠΊΠ°ΠΊΠΈΠΌΠΈ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² 1Π‘?
Excel/Word
Outlook
Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (PDF, ZIP)
ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ (сканСры, ККМ)
Π”Ρ€ΡƒΠ³ΠΎΠ΅

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² 1Π‘: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ сцСнарии использования

Π’ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ 1Π‘-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‡Π°Ρ‰Π΅ всСго Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ НазначСниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
Excel.Application Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Microsoft Excel АвтоматичСскоС Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ ΠΈ сводными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ
Word.Application Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Microsoft Word ГСнСрация Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΎΠ², Π°ΠΊΡ‚ΠΎΠ², писСм ΠΏΠΎ шаблонам
Outlook.Application Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ ΠΈ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Ρ‘ΠΌ Массовая рассылка писСм с влоТСниями ΠΈΠ· 1Π‘
WinHttp.WinHttpRequest.5.1 HTTP-запросы ΠΊ Π²Π΅Π±-сСрвисам Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с API Π±Π°Π½ΠΊΠΎΠ², ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΡΠΊΠΈΡ… слуТб, CRM
Scripting.FileSystemObject Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой Π Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΎΠ², ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ²

Рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π΄Π²Π° самых вострСбованных сцСнария:

1. Экспорт Π΄Π°Π½Π½Ρ‹Ρ… Π² Excel

Π—Π°Π΄Π°Ρ‡Π°: ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌ Π·Π° мСсяц с Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ ΠΈ сохранСниСм Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XLSX.

Excel = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Excel.Application");

Книга = Excel.Workbooks.Add();

Лист = Книга.Worksheets(1);

// Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ

Лист.Cells(1, 1).Value = "ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€";

Лист.Cells(1, 2).Value = "Π‘ΡƒΠΌΠΌΠ° ΠΏΡ€ΠΎΠ΄Π°ΠΆ";

// Π”Π°Π½Π½Ρ‹Π΅ ΠΈΠ· 1Π‘

Запрос = Новый Запрос;

Запрос.ВСкст = "ВЫБРАВЬ ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹.НаимСнованиС, БУММА(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π‘ΡƒΠΌΠΌΠ°)

|Π˜Π— Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

|Π‘Π“Π Π£ΠŸΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ ПО ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹.НаимСнованиС";

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ();

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = 2;

Пока Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

Лист.Cells(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 1).Value = Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.НаимСнованиС;

Лист.Cells(Π‘Ρ‚Ρ€ΠΎΠΊΠ°, 2).Value = Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π‘ΡƒΠΌΠΌΠ°;

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π‘Ρ‚Ρ€ΠΎΠΊΠ° + 1;

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅

Книга.SaveAs("C:\ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹\ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ_ΠΏΠΎ_ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ.xlsx");

Excel.Quit();

2. ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° писСм Ρ‡Π΅Ρ€Π΅Π· Outlook

Π—Π°Π΄Π°Ρ‡Π°: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ увСдомлСния ΠΎ просрочСнных ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°Ρ… с ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Ρ‘Π½Π½Ρ‹ΠΌΠΈ Π°ΠΊΡ‚Π°ΠΌΠΈ.

Outlook = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Outlook.Application");

Письмо = Outlook.CreateItem(0); // 0 - Ρ‚ΠΈΠΏ "MailItem"

// Настройка письма

Письмо.To = "client@example.com";

Письмо.Subject = "Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ просрочСнном ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅";

Письмо.Body = "Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚! НапоминаСм ΠΎ нСобходимости ΠΎΠΏΠ»Π°Ρ‚Ρ‹ счСта β„–123.";

Письмо.Attachments.Add("C:\Акты\Акт_123.pdf");

// ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ°

Письмо.Send(); // Или .Display() для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ подтвСрТдСния

Outlook.Quit();

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Outlook ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ .Send() отправляСт письмо ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ Π±Π΅Π· подтвСрТдСния. Для тСстирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .Display(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ письмо ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΎΡΡŒ Π² ΠΎΠΊΠ½Π΅ рСдактирования.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ 1Π‘ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM. Π’ΠΎΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённыС ошибки ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  • πŸ”΄ "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚": Ρ‡Π°Ρ‰Π΅ всСго ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ зарСгистрирован Π² систСмС. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:
    • ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ класса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Excel.Application", Π° Π½Π΅ "Excel").
    • НаличиС установлСнного ПО (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Microsoft Office Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π½Π° сСрвСрС 1Π‘).
    • ΠŸΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²Π° Π½Π° доступ ΠΊ рССстру ΠΈ созданиС процСссов).
  • πŸ”΄ Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти: Ссли Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Excel.Quit()), процСссы Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² памяти. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:
  • ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°
    

    Excel = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Excel.Application");

    // ... ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Excel ...

    Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка: " + ОписаниСОшибки());

    ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ;

    Если Excel <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

    Excel.Quit();

    ΠšΠΎΠ½Π΅Ρ†Π•ΡΠ»ΠΈ;

  • πŸ”΄ ЗависаниС 1Π‘ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с COM: Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Word) ΠΌΠΎΠ³ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ. РСшСниС β€” Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ процСссС Ρ‡Π΅Ρ€Π΅Π· WScript.Shell.
  • πŸ”΄ Ошибки бСзопасности: ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Outlook ΠΈΠ»ΠΈ Internet Explorer ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ограничСния антивируса ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ бСзопасности. НастройтС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для 1Π‘ Π² антивирусС.

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ПО установлСно (Excel, Word ΠΈ Ρ‚.Π΄.)|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° созданиС COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²|ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя класса (с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ!)|Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ|Π—Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ послС использования-->

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° частая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ. Если ваша 1Π‘ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π° Office установлСн Π² 64-Π±ΠΈΡ‚Π½ΠΎΠΉ вСрсии (ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚), COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ смогут Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. РСшСниС:

  • УстановитС Office Ρ‚ΠΎΠΉ ΠΆΠ΅ разрядности, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘.
  • Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ DCOM для кросс-разрядного взаимодСйствия (слоТнСС Π² настройкС).

Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ внСшнюю COM-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΊ 1Π‘

Помимо стандартных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Excel, Word), Π² 1Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ сторониС COM-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. НапримСр, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с:

  • πŸ“„ PDF-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ: PDFCreator, iTextSharp.
  • πŸ“¦ Архивами: 7-Zip, WinRAR.
  • πŸ–₯️ ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ вСсов, сканСров, ККМ.

Алгоритм ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

  1. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ: ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это .dll ΠΈΠ»ΠΈ .exe с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ рСгистрации.
  2. Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² систСмС:
    • Для .dll: Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:
      regsvr32 C:\ΠŸΡƒΡ‚ΡŒ\К\Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.dll
    • Для .exe: Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ /regserver.
  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ: Π² рССстрС Windows ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ HKEY_CLASSES_ROOT Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Π΄Π΅Π» с ΠΈΠΌΠ΅Π½Π΅ΠΌ класса.
  4. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² 1Π‘:
    Π’Π½Π΅ΡˆΠ½ΡΡΠ‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Имя.ЗарСгистрированного.Класса");
  5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PDFCreator для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ PDF:

    PDF = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("PDFCreator.clsPDFCreator");
    

    PDF.cOption("UseAutosave") = 1;

    PDF.cOption("AutosaveDirectory") = "C:\PDF\";

    PDF.cOption("AutosaveFilename") = "Π”ΠΎΠ³ΠΎΠ²ΠΎΡ€_123";

    PDF.cOption("AutosaveFormat") = "PDF";

    PDF.cClearCache();

    PDF.cPrintFile("C:\Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹\Π”ΠΎΠ³ΠΎΠ²ΠΎΡ€.docx");

    ⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: НС всС COM-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимы с 1Π‘. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠΊΡƒΠΏΠΊΠΎΠΉ ΠΈΠ»ΠΈ установкой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, поддСрТиваСтся Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· IDispatch (основной ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ взаимодСйствия 1Π‘ с COM).
    Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° IDispatch?

    ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ рССстр Windows ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» HKEY_CLASSES_ROOT\Имя.Класса.

    Если Π² Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» "TypeLib" ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ "IDispatch" со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ "1", Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° совмСстима с 1Π‘.

    Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: оптимизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ с COM

    COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΠ·ΠΊΠΈΠΌ мСстом Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ 1Π‘, особСнно ΠΏΡ€ΠΈ массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

    1. ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ количСство создаваСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

    ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚() β€” это Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы. НапримСр, ΠΏΡ€ΠΈ экспортС 1000 строк Π² Excel:

    • ❌ ΠŸΠ»ΠΎΡ…ΠΎ:
      Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»
      

      Excel = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Excel.Application"); // Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Ρ†ΠΈΠΊΠ»Π΅!

      // ... Ρ€Π°Π±ΠΎΡ‚Π° с Excel ...

      Excel.Quit();

      ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

    • βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ:
      Excel = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("Excel.Application");
      

      Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

      // ... Ρ€Π°Π±ΠΎΡ‚Π° с Excel ...

      ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

      Excel.Quit();

    2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ асинхронныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ для Π΄ΠΎΠ»Π³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

    Если COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ выполняСт Π΄ΠΎΠ»Π³ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, гСнСрация большого ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°), блокируСтся интСрфСйс 1Π‘. РСшСниС β€” Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ‡Π΅Ρ€Π΅Π· WScript.Shell:

    WshShell = Новый COMΠžΠ±ΡŠΠ΅ΠΊΡ‚("WScript.Shell");
    

    WshShell.Run("""C:\Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹\Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡΠžΡ‚Ρ‡Π΅Ρ‚Π°.vbs"" ""ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹""", 0, Π˜ΡΡ‚ΠΈΠ½Π°);

    3. НастройтС ΠΏΡ€Π°Π²Π° доступа

    COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° 1Π‘. Если скрипт Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ административных ΠΏΡ€Π°Π² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ), настройтС:

    • Запуск 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора.
    • Или настройтС DCOM-Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· dcomcnfg.
    πŸ’‘

    Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ COM-ошибок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ Process Monitor ΠΎΡ‚ Microsoft. Она ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ рССстровыС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ пытаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ 1Π‘ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

    ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π² 1Π‘

    Π₯отя COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Ρ‹, ΠΎΠ½ΠΈ Π½Π΅ всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. Рассмотрим Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹:

    Π—Π°Π΄Π°Ρ‡Π° COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
    Π Π°Π±ΠΎΡ‚Π° с Excel Excel.Application Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OneScript.Xlsx ΠΈΠ»ΠΈ EPPlus (Ρ‡Π΅Ρ€Π΅Π· .NET) Если Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ зависимостСй ΠΎΡ‚ Office
    HTTP-запросы WinHttp.WinHttpRequest.5.1 ВстроСнный HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ HTTPЗапрос Для простых запросов Π±Π΅Π· Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ
    Π Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Scripting.FileSystemObject ВстроСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π€Π°ΠΉΠ», ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Если Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ спСцифичныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄)
    Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с API MSXML2.XMLHTTP HTTPБСрвис ΠΈΠ»ΠΈ REST-сСрвисы Для соврСмСнных Π²Π΅Π±-сСрвисов с JSON

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° HTTP-запроса Π±Π΅Π· COM:

    HTTP = Новый HTTPΠ‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅("api.example.com", 443, "", "", Π˜ΡΡ‚ΠΈΠ½Π°);
    

    Запрос = Новый HTTPЗапрос("/data");

    ΠžΡ‚Π²Π΅Ρ‚ = HTTP.ΠŸΠΎΡΠ»Π°Ρ‚ΡŒΠ”Π»ΡΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡΠ‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ(Запрос);

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠžΡ‚Π²Π΅Ρ‚.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚());

    Когда стоит ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ COM:

    • 🚫 Если Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ встроСнными срСдствами 1Π‘ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ).
    • 🚫 Если трСбуСтся кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ (COM Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Windows).
    • 🚫 Если Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ лицСнзирования.
    πŸ’‘

    COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Windows-прилоТСниями, Π½ΠΎ для соврСмСнных Π·Π°Π΄Π°Ρ‡ (REST, JSON) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС HTTP-сСрвисы 1Π‘.

    FAQ: ЧастыС вопросы ΠΎ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… Π² 1Π‘

    МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ мобильном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 1Π‘?

    НСт. COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² толстом ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΏΠΎΠ΄ Windows. Π’ Π²Π΅Π±-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, мобильном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ Linux для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

    • HTTP-сСрвисы;
    • REST API;
    • Native-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ (для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ).
Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ доступны Π² систСмС?

Бписок зарСгистрированных COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ:

  1. Π§Π΅Ρ€Π΅Π· рССстр Windows: HKEY_CLASSES_ROOT β†’ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ CLSID.
  2. Π§Π΅Ρ€Π΅Π· PowerShell:
    Get-ChildItem 'HKLM:\Software\Classes' -Recurse -ErrorAction SilentlyContinue |
    

    Where-Object { $_.GetValue("CLSID") } | Select-Object -ExpandProperty Name

  3. Π§Π΅Ρ€Π΅Π· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ OLEView (Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав Windows SDK).
ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Excel ΠΈΠ· 1Π‘ Π²Ρ‹Π»Π΅Ρ‚Π°Π΅Ρ‚ ошибка "RPC-сСрвСр нСдоступСн"?

Π­Ρ‚Π° ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

  • DCOM Π½Π΅ настроСн: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ настройки Π² dcomcnfg (пуск β†’ dcomcnfg β†’ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ DCOM).
  • Антивирус Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚: Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для 1Π‘ ΠΈ Excel.
  • Π Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Π½Π΅ совпадаСт: Ссли 1Π‘ 32-битная, Π° Office 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ (ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚).
  • ΠŸΠΎΠ²Ρ€Π΅ΠΆΠ΄Ρ‘Π½ рССстр: пСрСрСгистрируйтС Excel ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
    excel.exe /regserver
Как ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘ ΠΈ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ эффСктивно?

Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°Π±Π»ΠΈΡ†) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • ΠœΠ°ΡΡΠΈΠ²Ρ‹: COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ часто ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Excel.Range.Value = ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…).
  • Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹: для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, экспорт 100 000 строк) сначала сохранитС Π² CSV, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π² Excel.
  • ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ: Ссли Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ порциями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ экспорта Π² Excel:

// Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ массив Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ€Π°Π½Π΅Π΅

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ… = Новый Массив;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π’Π°Π±Π»ΠΈΡ†Π° Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

ΠšΠΎΠ½Π΅Ρ†Π¦ΠΈΠΊΠ»Π°;

// ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ массив Π² Excel Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ²

Excel.Range("A1:A" + ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()).Value = ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…;

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² сСрвСрных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… 1Π‘?

ВСхничСски ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ это ΠΊΡ€Π°ΠΉΠ½Π΅ Π½Π΅ рСкомСндуСтся ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

  • πŸ”΄ ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов сСрвСра.
  • πŸ”΄ Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€ΡƒΡˆΠΈΡ‚ΡŒ сСанс 1Π‘.
  • πŸ”΄ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: риск ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСссов.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ для сСрвСрных Π·Π°Π΄Π°Ρ‡:

  • ВыноситС COM-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ задания.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ внСшниС сСрвисы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, микросСрвис Π½Π° .NET, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ общаСтся с 1Π‘ ΠΏΠΎ HTTP).