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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ 5 основных способов ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй β€” ΠΎΡ‚ классичСского Ρ†ΠΈΠΊΠ»Π° Для КаТдого Π΄ΠΎ спСциализированных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ НайтиБтроки() ΠΈ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(). ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (10 000+ строк) ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ падСнию систСмы. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… вСрсий ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ протСстированы Π½Π° конфигурациях Π£Π’ 11, Π‘ΠŸ 3.0 ΠΈ Π—Π£ΠŸ 3.1.

1. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ†ΠΈΠΊΠ» Для КаТдого: простота vs ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

НаиболСС ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° β€” использованиС конструкции Для КаТдого ... Из ... Π¦ΠΈΠΊΠ». Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ трСбуСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ…ΠΎΠ΄ всСх строк Π±Π΅Π· слоТных условий Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. НапримСр, Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ" Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° "РСализацияВоваровУслуг":

Π‘ΡƒΠΌΠΌΠ°ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° = 0;

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΎΠ²Π°Ρ€Ρ‹ Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹ Π¦ΠΈΠΊΠ»

Π‘ΡƒΠΌΠΌΠ°ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° = Π‘ΡƒΠΌΠΌΠ°ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π° + Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ;

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ“Œ ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° чтСния ΠΊΠΎΠ΄Π° β€” ΠΈΠ΄Π΅Π°Π»Π΅Π½ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².
  • πŸ”„ АвтоматичСская Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ β€” Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ управлСния индСксами.
  • πŸ› οΈ Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со всСми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², справочников, рСгистров).

Однако Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ критичСскиС нСдостатки:

  • ⚠️ Низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (Π±ΠΎΠ»Π΅Π΅ 5 000 строк). ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ создаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.
  • 🚫 Ошибки ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ β€” Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строку, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ "ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°".
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании Для КаТдого Π² транзакциях Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… увСличиваСтся ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ количСству строк. Для ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массового измСнСния Ρ†Π΅Π½) рассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
πŸ“Š Какой способ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… частСй Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π¦ΠΈΠΊΠ» "Для КаТдого"
ΠœΠ΅Ρ‚ΠΎΠ΄ "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ()"
Π¦ΠΈΠΊΠ» ΠΏΠΎ индСксу
Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (НайтиБтроки, Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ)
НС знаю, ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

2. ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΏΠΎ индСксу: ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Для КаТдого β€” явный ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ строк ΠΏΠΎ ΠΈΡ… порядковому Π½ΠΎΠΌΠ΅Ρ€Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(). Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Π΅Ρ‚ большС контроля Π½Π°Π΄ процСссом ΠΈ позволяСт ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ "Π½Π° Π»Π΅Ρ‚Ρƒ". ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для обнулСния Ρ†Π΅Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части "НомСнклатура":

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ‚Ρ€ΠΎΠΊ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ();

Для ИндСкс = 0 По ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ‚Ρ€ΠΎΠΊ - 1 Π¦ΠΈΠΊΠ»

ВСкущаяБтрока = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс);

ВСкущаяБтрока.Π¦Π΅Π½Π° = 0;

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

Когда стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄:

  • πŸ”’ НуТно Π·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ индСкс строки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для логгирования ΠΈΠ»ΠΈ условной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ 10-ΠΉ строки).
  • πŸ”„ ВрСбуСтся ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° (ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ строки).
  • ⚑ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Для КаТдого (особСнно Π² управляСмых Ρ„ΠΎΡ€ΠΌΠ°Ρ…).

Π’Π°ΠΆΠ½Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹:

  • Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ начинаСтся с 0, Π° Π½Π΅ с 1.
  • ΠŸΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ строки всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ индСксы ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ пропуску элСмСнтов. РСшСниС β€” ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ с ΠΊΠΎΠ½Ρ†Π° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ:
Для ИндСкс = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 По 0 Π¨Π°Π³ -1 Π¦ΠΈΠΊΠ»

ВСкущаяБтрока = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс);

Если ВСкущаяБтрока.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 0 Π’ΠΎΠ³Π΄Π°

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(ИндСкс);

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

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

πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ нСсколько строк ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, сначала собСритС ΠΈΡ… индСксы Π² массив, Π° Π·Π°Ρ‚Π΅ΠΌ удаляйтС Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ сдвиг индСксов ΠΈ ошибки.

3. ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(): Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив строк Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· привязки ΠΊ исходному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ:

  • πŸ“Š ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Ρ†Π΅Π½Ρ‹).
  • πŸ” Π€ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· измСнСния ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • πŸš€ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… заданиях ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ использовании многопоточности Π² сСрвСрных ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ…).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ строк Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части "Услуги" ΠΈ сортировка ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ "Π‘ΡƒΠΌΠΌΠ°":

БтрокиУслуг = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Услуги.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ();

БтрокиУслуг.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠŸΠΎ("Π‘ΡƒΠΌΠΌΠ° Π£Π±Ρ‹Π²"); // Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ указания направлСния сортировки

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из БтрокиУслуг Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС + ": " + Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π‘ΡƒΠΌΠΌΠ°);

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

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π₯арактСристика Для КаТдого ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ()
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ 10 000+ строк Низкая Высокая (Ρ€Π°Π±ΠΎΡ‚Π° с массивом)
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сортировки НСт Π”Π°
ИзмСнСниС исходной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π”Π° (с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ) НСт (Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΠΏΠΈΠ΅ΠΉ)
ΠŸΠ°ΠΌΡΡ‚ΡŒ Π­ΠΊΠΎΠ½ΠΎΠΌΠ½ΠΎ Π—Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() создаСт ΠΏΠΎΠ»Π½ΡƒΡŽ копию Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части Π² памяти. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ 50 000 строк это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ памяти сСрвСра 1Π‘. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (см. Ρ€Π°Π·Π΄Π΅Π» 5).

4. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: НайтиБтроки() ΠΈ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ()

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ прСдоставляСт Π΄Π²Π° ΠΌΠΎΡ‰Π½Ρ‹Ρ… инструмСнта для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями:

НайтиБтроки(): Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ²

ΠœΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ строк ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ критСриям, Π½Π΅ пСрСбирая всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. НапримСр, Π½Π°ΠΉΠ΄Π΅ΠΌ всС строки с количСством большС 10 Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части "Π’ΠΎΠ²Π°Ρ€Ρ‹":

Π€ΠΈΠ»ΡŒΡ‚Ρ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°();

Π€ΠΈΠ»ΡŒΡ‚Ρ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅", Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ.Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅.Π‘ΠΎΠ»ΡŒΡˆΠ΅);

Π€ΠΈΠ»ΡŒΡ‚Ρ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", 10);

НайдСнныСБтроки = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.НайтиБтроки(Π€ΠΈΠ»ΡŒΡ‚Ρ€);

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из НайдСнныСБтроки Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π΅Π½Π° = Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π¦Π΅Π½Π° * 0.9; // Π‘ΠΊΠΈΠ΄ΠΊΠ° 10%

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

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ условия Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ:

  • πŸ”’ ЧисловыС сравнСния (Π‘ΠΎΠ»ΡŒΡˆΠ΅, МСньшС, Π Π°Π²Π½ΠΎ).
  • πŸ“ Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚, НачинаСтсяБ).
  • πŸ—“οΈ Π”Π°Ρ‚Ρ‹ (Π’Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, Π Π°Π²Π½ΠΎΠ”Π°Ρ‚Π΅).

Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ(): экспорт Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ доступ ΠΊ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтам ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ΅, поиску, соСдинСнию Ρ‚Π°Π±Π»ΠΈΡ†. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π΅:

Π’Π— = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ();

Π’Π—.Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ("НомСнклатура", "ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ"); // Π‘ΡƒΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚ количСство ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π΅

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π—.НомСнклатура.НаимСнованиС + ": " + Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘ΡƒΠΌΠΌΠ°);

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

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() вмСсто ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ()?

ΠœΠ΅Ρ‚ΠΎΠ΄ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°, соСдинСниС, поиск ΠΏΠΎ нСскольким ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌ). ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² строк, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ для простого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†: постраничная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ частями, содСрТащими дСсятки тысяч строк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ рСгистрах накоплСния), классичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° становятся нСэффСктивными. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с использованиСм:

  • πŸ“„ ΠœΠ΅Ρ‚ΠΎΠ΄Π° Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ строк с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ.
  • πŸ”„ Π¦ΠΈΠΊΠ»ΠΎΠ² с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° порциями ΠΏΠΎ 100–500 строк с ΠΏΠ°ΡƒΠ·ΠΎΠΉ.
  • πŸ—ƒοΈ Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† β€” Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π£Π‘Π” для слоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ постраничного ΠΎΠ±Ρ…ΠΎΠ΄Π° с ΠΏΠ°ΡƒΠ·ΠΎΠΉ (Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ для Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ):

Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ = 200;

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ‚Ρ€ΠΎΠΊ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ();

Для Начало = 0 По ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ‚Ρ€ΠΎΠΊ - 1 Π¨Π°Π³ Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ Π¦ΠΈΠΊΠ»

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΡ€Ρ†ΠΈΠΈ = Мин(Начало + Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ - 1, ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎΠ‘Ρ‚Ρ€ΠΎΠΊ - 1);

// ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΡ€Ρ†ΠΈΡŽ строк

Для ИндСкс = Начало По ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΡ€Ρ†ΠΈΠΈ Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс);

// ... ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строки ...

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

// ΠŸΠ°ΡƒΠ·Π° для освобоТдСния рСсурсов

Если Начало Mod (Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ * 5) = 0 Π’ΠΎΠ³Π΄Π°

ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ(1); // ΠŸΠ°ΡƒΠ·Π° 1 сСкунда ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 1000 строк

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

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ постраничной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΠ°Ρ‡Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() ΠΈ Π—Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ() для ΠΏΠΎΡ€Ρ†ΠΈΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

β˜‘οΈ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

6. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ

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

πŸ”₯ Ошибка 1: ИзмСнСниС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π°

Битуация: Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° Для КаТдого Π²Ρ‹ удаляСтС Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ строку. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ "ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°".

РСшСниС: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ ΠΏΠΎ индСксу с ΠΊΠΎΠ½Ρ†Π° ΠΈΠ»ΠΈ собирайтС индСксы удаляСмых строк Π² массив:

Π˜Π½Π΄Π΅ΠΊΡΡ‹Π”Π»ΡΠ£Π΄Π°Π»Π΅Π½ΠΈΡ = Новый Массив();

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹ Π¦ΠΈΠΊΠ»

Если Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 0 Π’ΠΎΠ³Π΄Π°

Π˜Π½Π΄Π΅ΠΊΡΡ‹Π”Π»ΡΠ£Π΄Π°Π»Π΅Π½ΠΈΡ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.ИндСкс);

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

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

// УдаляСм Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС

Для ИндСкс = Π˜Π½Π΄Π΅ΠΊΡΡ‹Π”Π»ΡΠ£Π΄Π°Π»Π΅Π½ΠΈΡ.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 По 0 Π¨Π°Π³ -1 Π¦ΠΈΠΊΠ»

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(Π˜Π½Π΄Π΅ΠΊΡΡ‹Π”Π»ΡΠ£Π΄Π°Π»Π΅Π½ΠΈΡ[ИндСкс]);

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

⚑ Ошибка 2: Π—Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎ связь с Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ

ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΉ строки Ρ‡Π΅Ρ€Π΅Π· Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() Π½Π΅ устанавливаСтС ссылку Π½Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρƒ ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚). Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам ΠΏΡ€ΠΈ записи.

РСшСниС: ВсСгда заполняйтС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹:

НоваяБтрока = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

НоваяБтрока.НомСнклатура = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€ 1");

НоваяБтрока.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 1;

🐒 Ошибка 3: ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ·-Π·Π° Π»ΠΈΡˆΠ½ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Частая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тяТСлых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ справочникам) Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π­Ρ‚ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

РСшСниС: ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

// ΠŸΠ»ΠΎΡ…ΠΎ: ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ справочнику Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΈΡ‚ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π°

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹ Π¦ΠΈΠΊΠ»

НомСнклатура = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС);

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

// Π₯ΠΎΡ€ΠΎΡˆΠΎ: ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°ΠšΡΡˆ = Новый БоотвСтствиС();

Для КаТдого Π‘Ρ‚Ρ€ΠΎΠΊΠ° Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹ Π¦ΠΈΠΊΠ»

Если НЕ ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°ΠšΡΡˆ.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС) Π’ΠΎΠ³Π΄Π°

ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°ΠšΡΡˆ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС, Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°.НаимСнованиС));

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

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

πŸ’‘

ВсСгда провСряйтС ΠΊΠΎΠ΄ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ ΠΈΠ·-Π·Π° спСцифики ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ настроСк Π‘Π£Π‘Π”.

FAQ: ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° частыС вопросы

МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ строки Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС?

Π”Π°, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» ΠΏΠΎ индСксу с шагом -1, начиная с послСднСго элСмСнта:

Для ИндСкс = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 По 0 Π¨Π°Π³ -1 Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс);

// ... ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ...

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

Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ строк ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° порядок ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π°ΠΆΠ΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, расчСт начислСний Π² Π—Π£ΠŸ).

Как Π½Π°ΠΉΡ‚ΠΈ строку Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ НайтиБтроки() с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ:

Π€ΠΈΠ»ΡŒΡ‚Ρ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("НомСнклатура", Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.Π’ΠΎΠ²Π°Ρ€1);

НайдСнныСБтроки = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.НайтиБтроки(Π€ΠΈΠ»ΡŒΡ‚Ρ€);

Если НайдСнныСБтроки.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0 Π’ΠΎΠ³Π΄Π°

ΠŸΠ΅Ρ€Π²Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ° = НайдСнныСБтроки[0];

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

Для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ поиска ΠΏΠΎ нСскольким полям ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² структурС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°.

Π§Π΅ΠΌ отличаСтся ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() ΠΎΡ‚ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ()?

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² строк Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части, сохраняя ΠΈΡ… привязку ΠΊ исходному Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ. Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ (сортировка, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°, соСдинСниС).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎ суммС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() + ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ?

Для Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… Π·Π°Π΄Π°Π½ΠΈΠΉ:

  1. Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ()).
  2. Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° ΠΏΠΎΡ€Ρ†ΠΈΠΈ (ΠΏΠΎ 100–500 строк).
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ() для освобоТдСния рСсурсов.
  4. ЗафиксируйтС измСнСния порциями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ задания:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ’Π°Π±Π»ΠΈΡ‡Π½ΡƒΡŽΠ§Π°ΡΡ‚ΡŒΠ€ΠΎΠ½ΠΎΠ²ΠΎ(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚) Экспорт

Π’Π— = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΠΎΠ²Π°Ρ€Ρ‹.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ();

Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ = 200;

Для Начало = 0 По Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¨Π°Π³ Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ Π¦ΠΈΠΊΠ»

ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΡ€Ρ†ΠΈΠΈ = Мин(Начало + Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ - 1, Π’Π—.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1);

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

Для ИндСкс = Начало По ΠšΠΎΠ½Π΅Ρ†ΠŸΠΎΡ€Ρ†ΠΈΠΈ Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π— = Π’Π—.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(ИндСкс);

// ... ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ...

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

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

Если Начало Mod (Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠΎΡ€Ρ†ΠΈΠΈ * 10) = 0 Π’ΠΎΠ³Π΄Π°

ΠŸΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ(1); // ΠŸΠ°ΡƒΠ·Π° ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 2000 строк

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

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

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ строки Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ Π² Ρ‚ΠΎΠΌ порядкС?

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ строк Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΉ части опрСдСляСтся свойством ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ (Ссли ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ) ΠΈΠ»ΠΈ порядком добавлСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ порядок:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ() для явного упорядочивания.
  • ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ устанавливайтС Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ НомСрБтроки (Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ).
  • Для Π²Ρ‹Π²ΠΎΠ΄Π° отсортируйтС строки Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() + Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().