Π’ систСмС 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «транзакция» встрСчаСтся повсСмСстно β€” ΠΎΡ‚ бухгалтСрских ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΊ Π΄ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Но Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΠΈΡ… Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ критичСским ошибкам?

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ раскроСт ΡΡƒΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ 8.3, ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БухгалтСрия 3.0 ΠΈΠ»ΠΈ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ΠΉ 11), ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Π³Π΄Π΅ программисты ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½ΠΈΠΌΠΈ Ρ‡Π°Ρ‰Π΅ всСго. ΠœΡ‹ разбСрёмся, Ρ‡Π΅ΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² 1Π‘ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ классичСских Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΡ… нСльзя ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с внСшними систСмами.

Если Π²Ρ‹ Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€, ΡƒΠ²ΠΈΠ΄Π΅Π²ΡˆΠΈΠΉ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ сообщСниС «Вранзакция ΠΏΡ€Π΅Ρ€Π²Π°Π½Π°Β», ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€” здСсь Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ вопросы. А для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ 1Π‘, ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ простыС Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ транзакция Π² 1Π‘: ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ

Вранзакция Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” это нСдСлимая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, которая Π»ΠΈΠ±ΠΎ выполняСтся Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π»ΠΈΠ±ΠΎ Π½Π΅ выполняСтся Π²ΠΎΠΎΠ±Ρ‰Π΅. ΠŸΡ€ΠΎΡ‰Π΅ говоря, это Β«ΠΏΠ°ΠΊΠ΅Ρ‚Β» дСйствий, Π³Π΄Π΅ Π»ΠΈΠ±ΠΎ всё ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π»ΠΈΠ±ΠΎ откатываСтся Π΄ΠΎ исходного состояния. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π΄Π΅Π½Π΅Π³ ΠΌΠ΅ΠΆΠ΄Ρƒ счСтами. Если списаниС со счСта А ΠΏΡ€ΠΎΡˆΠ»ΠΎ, Π° зачислСниС Π½Π° счСт Π‘ Π½Π΅Ρ‚ β€” систСма Π²Π΅Ρ€Π½Ρ‘Ρ‚ всё ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСсоотвСтствий.

Π’ 1Π‘ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Microsoft SQL Server ΠΈΠ»ΠΈ PostgreSQL) ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Они Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ сбоях β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ элСктричСства, ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°Ρ… ΠΏΡ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅. Π‘Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Β«Ρ€Π°Π·Π²Π°Π»ΠΈΡ‚ΡŒΡΡΒ» послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΆΠ΅ Π½Π΅ΡˆΡ‚Π°Ρ‚Π½ΠΎΠΉ ситуации.

Аналогия ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ: ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠΊΡƒΠΏΠ°Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π°Ρ€ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅. Вранзакция здСсь β€” это Ρ‚Ρ€ΠΈ дСйствия:

  1. Π’Ρ‹ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚Π΅ дСньги кассиру.
  2. ΠšΠ°ΡΡΠΈΡ€ ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°Π΅Ρ‚ Ρ‡Π΅ΠΊ.
  3. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ‚ΠΎΠ²Π°Ρ€.

Если Π½Π° любом этапС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ΄Ρ‘Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΎ сдачи), сдСлка отмСняСтся Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ β€” дСньги Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ, Ρ‡Π΅ΠΊ аннулируСтся, Ρ‚ΠΎΠ²Π°Ρ€ остаётся Π½Π° ΠΏΠΎΠ»ΠΊΠ΅.

πŸ“Š Π“Π΄Π΅ Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с транзакциями Π² 1Π‘?
Π’ бухгалтСрских ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠ°Ρ…
ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅
ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ
НС знаю, Ρ‡Ρ‚ΠΎ это

Как устроСны Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘ 8.3

Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ управляСмых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ взаимодСйствиС с Π‘Π£Π‘Π”. Когда Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ записи Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°:

  • πŸ”’ Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ.
  • ✍️ ЀиксируСт всС измСнСния Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ области (Π½Π΅ Π² самой Π±Π°Π·Π΅!).
  • πŸ”„ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ послС выполнСния всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
  • πŸ’Ύ БохраняСт измСнСния Π² Π±Π°Π·Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли всё ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ (Commit).
  • 🚫 ΠžΡ‚ΠΌΠ΅Π½ΡΠ΅Ρ‚ всё ΠΏΡ€ΠΈ ошибкС (Rollback).

Π’Π°ΠΆΠ½ΠΎ: Π² 1Π‘ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ явными (ΠΊΠΎΠ³Π΄Π° программист сам ΠΈΡ… ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΊΠΎΠ΄Π΅) ΠΈ нСявными (автоматичСски создаваСмыми ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ записи Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°). НСявныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ часто становятся ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ «зависаний» Π±Π°Π·Ρ‹, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π§Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ?

Если транзакция ΠΏΡ€Π΅Ρ€Π²Π°Π½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€Ρ‹Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» сбой), систСма автоматичСски выполняСт ΠΎΡ‚ΠΊΠ°Ρ‚ (rollback). ВсС измСнСния, сдСланныС Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π°Π½Π½ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ "висячиС" ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ нСсохранённых Π΄Π°Π½Π½Ρ‹Ρ….

ВСхничСски транзакция Π² 1Π‘ соотвСтствуСт стандарту ACID: Atomicity (Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΡΡ‚ΡŒ), Consistency (ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ), Isolation (ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ), Durability (Π΄ΠΎΠ»Π³ΠΎΠ²Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ). НапримСр, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° РСализацияВоваровУслуг Π² Π£Π’ 11 ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ:

  • πŸ“Œ ВсС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ записаны ΠΈΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ.
  • πŸ“Š ΠžΡΡ‚Π°Ρ‚ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈ Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Π΅ срСдства обновятся синхронно.
  • πŸ” Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ увидят ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ (Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅) Π΄Π°Π½Π½Ρ‹Π΅.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ 1Π‘ (Π±Π΅Π· Π‘Π£Π‘Π”) Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈΠ½Π°Ρ‡Π΅ β€” ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π°ΠΌ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Для ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… систСм рСкомСндуСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π’ΠΈΠ΄Ρ‹ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² 1Π‘ ΠΈ Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² 1Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌ. Π˜Ρ… ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ настройкС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’ΠΈΠΏ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π“Π΄Π΅ примСняСтся ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ
НСявныС АвтоматичСски ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² ΠœΠΎΠ³ΡƒΡ‚ Π·Π°ΠΌΠ΅Π΄Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
Π―Π²Π½Ρ‹Π΅ Π—Π°Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ программистом
ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

// ... ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ...

ΠšΠΎΠ½Π΅Ρ†Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ();

Π’Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния, Π½ΠΎ Π³ΠΈΠ±Ρ‡Π΅
Π”Π»ΠΈΠ½Π½Ρ‹Π΅ ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с большим Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ выполнСния ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с внСшнСй систСмой ΠœΠΎΠ³ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² с сохранСниСм ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ всСми Π‘Π£Π‘Π” (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, SQL Server β€” Π΄Π°, PostgreSQL β€” с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ)
РаспрСдСлённыС Π Π°Π±ΠΎΡ‚Π° с нСсколькими Π±Π°Π·Π°ΠΌΠΈ ОбмСн ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘:БухгалтСрия ΠΈ 1Π‘:Π—Π£ΠŸ Π‘Π»ΠΎΠΆΠ½Ρ‹ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‡Π°Ρ‰Π΅ всСго Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ нСявныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. НапримСр, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π‘Ρ‡Ρ‘Ρ‚Π€Π°ΠΊΡ‚ΡƒΡ€Π°Π’Ρ‹Π΄Π°Π½Π½Ρ‹ΠΉ Π² Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ΠΈΠΈ 3.0 ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° автоматичСски ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, записываСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠΈ ΠΏΠΎ Π΄Π΅Π±Π΅Ρ‚Ρƒ/ΠΊΡ€Π΅Π΄ΠΈΡ‚Ρƒ, обновляСт рСгистры накоплСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΠ”Π‘ΠŸΠΎΠΊΡƒΠΏΠΊΠΈ) ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ фиксируСт измСнСния. Если Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ этапС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ошибка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΏΡ€Π°Π² Π½Π° запись), всС дСйствия отмСнятся.

Π―Π²Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ для контроля Π½Π°Π΄ слоТными опСрациями. НапримСр, ΠΏΡ€ΠΈ массовом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ†Π΅Π½ Π² Π£Π’ 11 ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ процСсс Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ сбоС Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Β«ΠΏΠΎΠ»ΡƒΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹Ρ…Β» Π΄Π°Π½Π½Ρ‹Ρ…:

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

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

Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π° = НоваяЦСна;

Π’ΠΎΠ²Π°Ρ€.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

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

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² бухгалтСрском ΠΈ складском ΡƒΡ‡Ρ‘Ρ‚Π΅: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ

Π’ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… конфигурациях 1Π‘ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ скрыты ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½ΠΎ ΠΈΡ… слСдствиС Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ. Рассмотрим нСсколько кСйсов, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ.

1. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² 1Π‘:БухгалтСрия 3.0

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠŸΠ»Π°Ρ‚Ρ‘ΠΆΠ½ΠΎΠ΅ΠŸΠΎΡ€ΡƒΡ‡Π΅Π½ΠΈΠ΅Π˜ΡΡ…ΠΎΠ΄ΡΡ‰Π΅Π΅ систСма:

  • πŸ’° БписываСт дСньги со счёта 51 «РасчётныС счСта».
  • πŸ“ Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΡƒ ΠΏΠΎ Π΄Π΅Π±Π΅Ρ‚Ρƒ счёта 60 «Расчёты с поставщиками».
  • πŸ“‹ ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ рСгистр накоплСния ДСнСТныСБрСдства.

Если Π½Π° любом этапС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚ ошибка (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ остаток Π½Π° счётС), транзакция откатится, ΠΈ Π² Π±Π°Π·Π΅ Π½Π΅ останСтся Β«ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‡Π°Ρ‚Ρ‹Ρ…Β» ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠΊ.

2. Π˜Π½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ Π² 1Π‘:Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»Π΅ΠΉ 11

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π˜Π½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡΠ’ΠΎΠ²Π°Ρ€ΠΎΠ²ΠΠ°Π‘ΠΊΠ»Π°Π΄Π°Ρ… систСма:

  • πŸ“¦ БвСряСт фактичСскиС остатки с ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ.
  • πŸ”„ ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ рСгистр ВоварыНаБкладах.
  • πŸ“‘ Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠΈ ΠΏΠΎ счёту 94 «НСдостачи ΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΎΡ‚ ΠΏΠΎΡ€Ρ‡ΠΈ цСнностСй» (Ссли Π΅ΡΡ‚ΡŒ расхоТдСния).

Π‘Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ сбоС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ нСсинхронизированныС Π΄Π°Π½Π½Ρ‹Π΅ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² рСгистрС остатки обновились, Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠΈ Π½Π΅Ρ‚.

3. Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π½Ρ‹Π΅ начислСния Π² 1Π‘:Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрсоналом 3.1

ΠŸΡ€ΠΈ расчётС Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΠ°Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹Π˜Π’Π·Π½ΠΎΡΠΎΠ²:

  • πŸ’΅ ΠΠ°Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρƒ сотрудникам (счёт 70).
  • πŸ“ˆ Π£Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ НДЀЛ (счёт 68.01).
  • πŸ₯ ΠΠ°Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ страховыС взносы (счёт 69).

Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ Ρ…Π²Π°Ρ‚ΠΈΡ‚ срСдств Π½Π° счётС для удСрТания НДЀЛ, транзакция ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ всС начислСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² отчётности.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ конфигурациях с ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΌ ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1Π‘:БухгалтСрия для Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹) Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ·-Π·Π° особСнностСй Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ВсСгда провСряйтС Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° тСстовой Π±Π°Π·Π΅ ΠΏΠ΅Ρ€Π΅Π΄ массовыми опСрациями.

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΡ‘ΠΌ измСняСмых Π΄Π°Π½Π½Ρ‹Ρ… (большиС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ Π΄Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ)

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° запись

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹

ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ)

ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹-->

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ 1Π‘: ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” это инструмСнт контроля Π½Π°Π΄ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ…. Однако ΠΈΡ… Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ Π±Π°Π·Ρ‹, timeout-ошибкам ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Рассмотрим ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Π΅Ρ€Π½Ρ‹.

1. Π―Π²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ конструкции ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ()/Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. НапримСр, ΠΏΡ€ΠΈ массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ¦Π΅Π½Ρ‹ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹()

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

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

Запрос.ВСкст = "ВЫБРАВЬ Π‘Π‘Π«Π›ΠšΠ£ КАК Бсылка Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура";

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

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

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

Π’ΠΎΠ²Π°Ρ€ = Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Бсылка.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚();

Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π° = Π’ΠΎΠ²Π°Ρ€.Π¦Π΅Π½Π° * 1.1; // ΠŸΠΎΠ²Ρ‹ΡˆΠ°Π΅ΠΌ Π½Π° 10%

Π’ΠΎΠ²Π°Ρ€.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

2. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, длящиСся Π±ΠΎΠ»Π΅Π΅ 30 сСкунд, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ большиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° части:

// ΠŸΠ»ΠΎΡ…ΠΎ: ΠΎΠ΄Π½Π° транзакция Π½Π° 10 000 строк

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

// Π₯ΠΎΡ€ΠΎΡˆΠΎ: Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎ 100 строк

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… = 0;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉΠœΠ°ΡΡΠΈΠ² Π¦ΠΈΠΊΠ»

Если ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… % 100 = 0 Π’ΠΎΠ³Π΄Π°

Если ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… > 0 Π’ΠΎΠ³Π΄Π°

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… = ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… + 1;

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

3. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ: особСнности

Π’ 1Π‘ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π½ΠΎ ΠΈΡ… ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ Π‘Π£Π‘Π”:

  • πŸ”Ή Microsoft SQL Server: полноцСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ нСзависимо).
  • πŸ”Ή PostgreSQL: Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· SAVEPOINT.
  • πŸ”Ή Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ:

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(); // Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 1

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// ... ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ уровня 1 ...

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(); // Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 2

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// ... ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ уровня 2 ...

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(); // ЀиксируСм ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ 2

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

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(); // ΠžΡ‚ΠΊΠ°Ρ‚ уровня 2

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ!");

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(); // ЀиксируСм ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ 1

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

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(); // ΠžΡ‚ΠΊΠ°Ρ‚ уровня 1

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ошибка!");

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² PostgreSQL ΠΎΡ‚ΠΊΠ°Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚ΠΊΠ°Ρ‚Ρƒ внСшнСй. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ВсСгда тСстируйтС Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π° тСстовой Π±Π°Π·Π΅!
πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с транзакциями Π² 1Π‘ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (F5). ΠŸΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΡƒ останова Π½Π° строкС Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, всС Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ измСнились ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ фиксациСй.

Ошибки Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² 1Π‘: ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈ способы Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Ошибки, связанныС с транзакциями, β€” ΠΎΠ΄Π½ΠΈ ΠΈΠ· самых слоТных для диагностики. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ «зависания» Π±Π°Π·Ρ‹, сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии.

1. Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (Lock Timeout)

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: сообщСниС «Вранзакция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈΠ·-Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌΒ».

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • πŸ•’ Длинная транзакция Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ сСансС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΡˆΡ‘Π» Π½Π° ΠΎΠ±Π΅Π΄, Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚).
  • πŸ”„ Π Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅, зависшСС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±Π°Π·ΠΎΠΉ.
  • πŸ“‘ МСдлСнноС сСтСвоС соСдинСниС (Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅).

РСшСния:

  • πŸ” Найти ΠΈ ΡƒΠ±ΠΈΡ‚ΡŒ «висящий» сСанс Ρ‡Π΅Ρ€Π΅Π· АдминистрированиС β†’ АктивныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ.
  • ⚑ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запрос ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ Π½Π° части.
  • ⏱️ Π£Π²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² настройках Π‘Π£Π‘Π” (Π½Π΅ рСкомСндуСтся для постоянного использования).

2. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ цСлостности Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: расхоТдСния Π² рСгистрах, Β«Π±ΠΈΡ‚Ρ‹Π΅Β» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ошибки ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • 🚨 ΠŸΡ€Π΅Ρ€Π²Π°Π½Π½Π°Ρ транзакция (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ 1Π‘).
  • πŸ”§ Ошибка Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ транзакция Π½Π΅ откатываСтся ΠΏΡ€ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ.
  • πŸ”„ ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΏΡ€ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

РСшСния:

  • πŸ”„ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ВСстированиС ΠΈ исправлСниС Π±Π°Π·Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€.
  • πŸ“Š Π‘Π²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΈ рСгистров с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° Анализ состояния ΡƒΡ‡Ρ‘Ρ‚Π°.
  • πŸ”§ ΠŸΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄.

3. Ошибка «Вранзакция ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Ρ‚Π°Β»

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: сообщСниС «НСльзя Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ транзакция ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Ρ‚Π°Β» ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ().

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • πŸ”„ Π’ ΠΊΠΎΠ΄Π΅ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚Π° прСдыдущая транзакция (отсутствуСт Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() ΠΈΠ»ΠΈ ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ()).
  • πŸ“œ Π’Ρ‹Π·ΠΎΠ² ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ влоТСнности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅).

РСшСния:

  • πŸ” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.
  • πŸ”„ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ВранзакцияАктивна() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ состояния:
Если НЕ ВранзакцияАктивна() Π’ΠΎΠ³Π΄Π°

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

4. Ошибки ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

Π‘ΠΈΠΌΠΏΡ‚ΠΎΠΌΡ‹: Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½, Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, ошибки Ρ‚ΠΈΠΏΠ° Β«ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ссылочной цСлостности».

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • πŸ”„ Вранзакция Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ вСсь процСсс ΠΎΠ±ΠΌΠ΅Π½Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Π½Π½Ρ‹Π΅ записаны Π² ΠΎΠ΄Π½Ρƒ Π±Π°Π·Ρƒ, Π½ΠΎ Π½Π΅ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ).
  • πŸ“‘ Π Π°Π·Π½Ρ‹ΠΉ порядок фиксации Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² ΡƒΠ·Π»Π°Ρ… ΠΎΠ±ΠΌΠ΅Π½Π°.

РСшСния:

  • πŸ”— Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ распрСдСлённыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (Ссли Π‘Π£Π‘Π” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚).
  • πŸ“Š ВСсти Π»ΠΎΠ³ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΡ€ΠΈ сбоях.
πŸ’‘

Бамая частая ошибка ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с транзакциями Π² 1Π‘ β€” отсутствиС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ВсСгда ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°.../Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ ошибкС Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌ состоянии.

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π΄Ρ‘ΠΆΠ½ΠΎΡΡ‚ΡŒ, Π½ΠΎ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ·ΠΊΠΎΠ΅ мСсто Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΈΡ… использованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π±Π°Π·Ρ‹ Π² дСсятки Ρ€Π°Π·. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы.

1. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹

НС всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. НапримСр, простоС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹, Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ) ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ:

// ΠŸΠ»ΠΎΡ…ΠΎ: транзакция для чтСния

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

// Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π±Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

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

2. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ запросы Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ

Π”Π»ΠΈΠ½Π½Ρ‹Π΅ запросы с ΠŸΠžΠœΠ•Π‘Π’Π˜Π’Π¬ ΠΈΠ»ΠΈ слоТными соСдинСниями ΠΌΠΎΠ³ΡƒΡ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксы для ускорСния Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ.
  • πŸ”Ή Π Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ большиС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° части (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ 100–500 строк).
  • πŸ”Ή Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠŸΠžΠ›ΠΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• (FULL JOIN) β€” ΠΎΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

3. УправляйтС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ изоляции

Π’ 1Π‘ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции Read Committed, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • πŸ”Ή Read Uncommitted: позволяСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ нСзафиксированныС Π΄Π°Π½Π½Ρ‹Π΅ (риск «грязного чтСния»).
  • πŸ”Ή Repeatable Read: Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π΅Π΄Π»ΠΎΠΊΠΈ.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ изоляции ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠΎΠ΄Π΅:

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ(Π£Ρ€ΠΎΠ²Π΅Π½ΡŒΠ˜Π·ΠΎΠ»ΡΡ†ΠΈΠΈΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΠ΅Π§Ρ‚Π΅Π½ΠΈΠ΅);

4. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

Для диагностики ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ”Ή Π’ SQL Server: систСмныС прСдставлСния sys.dm_tran_locks ΠΈ sys.dm_os_waiting_tasks.
  • πŸ”Ή Π’ PostgreSQL: запрос SELECT * FROM pg_locks;.
  • πŸ”Ή Π’ 1Π‘: ΠΆΡƒΡ€Π½Π°Π» рСгистрации (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ событиС Β«Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…Β»).

5. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ транзакциям

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ:

  • πŸ”Ή ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π·Π°Π΄Π°Ρ‡: для Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массовая рассылка писСм).
  • πŸ”Ή Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: для ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… расчётов.
  • πŸ”Ή ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Β«ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅Β»: вмСсто Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ удалСния.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ высоконагруТСнных систСмах (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с тысячами ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ) Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π΄Π΅Π΄Π»ΠΎΠΊΠ°ΠΌ β€” ситуациям, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ трСбуСтся Π°Π½Π°Π»ΠΈΠ· ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² Π‘Π£Π‘Π” ΠΈ оптимизация ΠΊΠΎΠ΄Π°.

Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ систСмами β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых слоТных Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

1. ОбмСн ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·Π°ΠΌΠΈ 1Π‘

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 1Π‘:БухгалтСрия ΠΈ 1Π‘:Π—Π£ΠŸ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½Ρ‹ для синхронизации:

  • πŸ”„ Π’ исходной Π±Π°Π·Π΅: Π΄Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° врСмя Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ.
  • πŸ”„ Π’ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π±Π°Π·Π΅: Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для ΠΎΠ±ΠΌΠ΅Π½Π° с Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠ΅ΠΉ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅()

ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°

// 1. Π’Ρ‹Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² XML

Π”Π°Π½Π½Ρ‹Π΅ = Новый Π—Π°ΠΏΠΈΡΡŒXML;

Π”Π°Π½Π½Ρ‹Π΅.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚);

// 2. ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π±Π°Π·Ρƒ

ΠžΡ‚Π²Π΅Ρ‚ = HTTPБСрвис.ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅(Π”Π°Π½Π½Ρ‹Π΅.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ());

Если НЕ ΠžΡ‚Π²Π΅Ρ‚.УспСх Π’ΠΎΠ³Π΄Π°

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

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

Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°;

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

ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ();

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Ошибка Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ: " + ОписаниСОшибки());

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

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

ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с внСшними систСмами

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ с 1Π‘-Битрикс, МойБклад ΠΈΠ»ΠΈ Π±Π°Π½ΠΊ-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ”Ή ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ.
  • πŸ”Ή Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: фиксируйтС всС этапы ΠΎΠ±ΠΌΠ΅Π½Π° для ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΈ ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….
  • πŸ”Ή ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ: Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π΅Ρ‚Ρ€Π°Π΅Π² ΠΏΡ€ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сбоях.

3. РаспрСдСлённыС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ

Если Π½ΡƒΠΆΠ½ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… систСмах ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

  • πŸ”Ή Π”Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ (2PC): сначала Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ всСх систСмах, Π·Π°Ρ‚Π΅ΠΌ фиксируСм.
  • πŸ”Ή ΠšΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: Ссли ΠΎΠ΄Π½Π° ΠΈΠ· систСм Π½Π΅ смогла Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, выполняСм ΠΎΡ‚ΠΊΠ°Ρ‚ Π²ΠΎ всСх.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°:

// Π€Π°Π·Π° 1: ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Π£ΡΠΏΠ΅ΡˆΠ½Π° = Π˜ΡΡ‚ΠΈΠ½Π°;

Для КаТдого Π£Π·Π΅Π» Из БписокУзлов Π¦ΠΈΠΊΠ»

Если НЕ Π£Π·Π΅Π».ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅() Π’ΠΎΠ³Π΄Π°

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Π£ΡΠΏΠ΅ΡˆΠ½Π° = Π›ΠΎΠΆΡŒ;

ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

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

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

Если ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Π£ΡΠΏΠ΅ΡˆΠ½Π° Π’ΠΎΠ³Π΄Π°

// Π€Π°Π·Π° 2: Ѐиксация

Для КаТдого Π£Π·Π΅Π» Из БписокУзлов Π¦ΠΈΠΊΠ»

Π£Π·Π΅Π».Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅();

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

Π˜Π½Π°Ρ‡Π΅

// ΠžΡ‚ΠΊΠ°Ρ‚

Для КаТдого Π£Π·Π΅Π» Из БписокУзлов Π¦ΠΈΠΊΠ»

Π£Π·Π΅Π».ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ();

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