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

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

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΊ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам 1Π‘, Ρ‚Π°ΠΊ ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ спСциалистам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ знания ΠΈΠ»ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для своих Π·Π°Π΄Π°Ρ‡. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° протСстированы Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π»ΠΈΠ·Π°Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ пояснСниями.

1. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: Ρ†ΠΈΠΊΠ» ΠΏΠΎ элСмСнтам массива

Π‘Π°ΠΌΡ‹ΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ β€” поэлСмСнтноС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· массива Π² Π½ΠΎΠ²Ρ‹ΠΉ список. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² любой вСрсии 1Π‘ 8.x ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Π•Π³ΠΎ Π³Π»Π°Π²Π½Ρ‹ΠΉ плюс β€” простота ΠΈ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, Π° минус β€” ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (тысячи элСмСнтов ΠΈ Π±ΠΎΠ»Π΅Π΅).

Алгоритм дСйствий:

  • πŸ“Œ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ БписокЗначСний
  • πŸ”„ ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎ элСмСнтам исходного массива
  • βž• Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ()
  • πŸ”™ Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ сформированный список

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

Ѐункция ΠœΠ°ΡΡΠΈΠ²Π’Π‘ΠΏΠΈΡΠΎΠΊΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉΠ‘Π°Π·ΠΎΠ²Ρ‹ΠΉ(Массив)

Бписок = Новый БписокЗначСний;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Бписок;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

πŸ’‘

Если массив содСрТит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, справочники ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.НаимСнованиС), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² спискС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ осмыслСнныС подписи вмСсто тСхничСских ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (Π΄ΠΎ 1000 элСмСнтов) ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° трСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎ врСмя пСрСноса. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΈΠΏΡ‹ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΡƒΡΠ»ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ:

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°") Π’ΠΎΠ³Π΄Π°

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΎΠΊΡ€Π›ΠŸ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚)); // Π£Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹

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

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли массив содСрТит Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ массивы?

Если исходный массив ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ структуру (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массивы Π²Π½ΡƒΡ‚Ρ€ΠΈ массивов), этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСкурсивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ структуру Π² плоский Π²ΠΈΠ΄ Π·Π°Ρ€Π°Π½Π΅Π΅. НапримСр:

Ѐункция Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²(Массив)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Новый Массив;

Для КаТдого Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚) = Π’ΠΈΠΏ("Массив") Π’ΠΎΠ³Π΄Π°

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ + Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΠœΠ°ΡΡΠΈΠ²(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

Π˜Π½Π°Ρ‡Π΅

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

2. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄: конструктор списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

Начиная с вСрсии 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8.3.10, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° прСдоставляСт Π±ΠΎΠ»Π΅Π΅ эффСктивный способ создания списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” конструктор Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Новый БписокЗначСний(Массив). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² 2–3 Ρ€Π°Π·Π° быстрСС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

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

  • ⚑ Высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ β€” Π½Π΅Ρ‚ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ 1Π‘
  • πŸ“ ΠšΡ€Π°Ρ‚ΠΊΠΎΡΡ‚ΡŒ β€” ΠΎΠ΄Π½Π° строка вмСсто Ρ†ΠΈΠΊΠ»Π°
  • πŸ›‘οΈ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ β€” автоматичСски ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ НСопрСдСлённыС значСния

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

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

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚1");

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(100);

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π”Π°Ρ‚Π°(2023, 1, 1));

Бписок = Новый БписокЗначСний(ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…);

πŸ’‘

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π°Ρ‚Ρ‹ ΠΈΠ»ΠΈ числа) Π² строковоС прСдставлСниС, подходящСС для отобраТСния Π² интСрфСйсС. Π­Ρ‚ΠΎ избавляСт ΠΎΡ‚ нСобходимости Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ.

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Новый БписокЗначСний(Массив) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… подписСй для элСмСнтов. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² спискС Π½Π΅ значСния, Π° ΠΈΡ… описания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, наимСнования справочников), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ().

Для сравнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² рассмотрим тСст Π½Π° массивС ΠΈΠ· 10 000 элСмСнтов:

ΠœΠ΅Ρ‚ΠΎΠ΄Π’Ρ€Π΅ΠΌΡ выполнСния (мс)ΠŸΠ°ΠΌΡΡ‚ΡŒ (ΠšΠ‘)
Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ128450
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Новый БписокЗначСний()42380
ΠœΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ()55400

3. ΠœΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(): Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ

Для Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ трСбуСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ процСссом Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°Π½ΠΈΠ΅ подписСй, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²), ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(). Он сочСтаСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Бписок.Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(ΠœΠ°ΡΡΠΈΠ²Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, МассивПодписСй);

Π“Π΄Π΅:

  • ΠœΠ°ΡΡΠΈΠ²Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” исходный массив Π΄Π°Π½Π½Ρ‹Ρ…
  • МассивПодписСй β€” ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ массив строк для отобраТСния (Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ с Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ подписСй:

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

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€1"));

ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ….Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ("Π’ΠΎΠ²Π°Ρ€2"));

МассивПодписСй = Новый Массив;

МассивПодписСй.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π’ΠΎΠ²Π°Ρ€ 1 (склад)");

МассивПодписСй.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π’ΠΎΠ²Π°Ρ€ 2 (ΠΏΠΎΠ΄ Π·Π°ΠΊΠ°Π·)");

Бписок = Новый БписокЗначСний;

Бписок.Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(ΠœΠ°ΡΡΠΈΠ²Π”Π°Π½Π½Ρ‹Ρ…, МассивПодписСй);

πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅ для прСобразования массивов Π² списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?
Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Новый БписокЗначСний()
ΠœΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ()
Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ особСнно ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСскими списками, Π³Π΄Π΅ трСбуСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½Π΅ тСхничСскиС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, Π° осмыслСнныС наимСнования. НапримСр, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ списка ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² для Π²Ρ‹Π±ΠΎΡ€Π° Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅:

ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ…ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ²(); // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ссылок

МассивПодписСй = Новый Массив;

Для КаТдого ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ Из ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² Π¦ΠΈΠΊΠ»

МассивПодписСй.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°(ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС) + " (" + ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.ИНН + ")");

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

Π‘ΠΏΠΈΡΠΎΠΊΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² = Новый БписокЗначСний;

Π‘ΠΏΠΈΡΠΎΠΊΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ², МассивПодписСй);

4. Π Π°Π±ΠΎΡ‚Π° с большими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: пакСтная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΈΠ· дСсятков тысяч элСмСнтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· внСшнСго источника ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π»ΠΎΠ³ΠΎΠ²), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ памяти ΠΈΠ»ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ интСрфСйса. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ Π½Π° ΠΏΠΎΡ€Ρ†ΠΈΠΈ.

Алгоритм ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ β€” 1000–5000 элСмСнтов)
  2. Π Π°Π·Π±ΠΈΡ‚ΡŒ исходный массив Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹
  3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ
  4. ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Ѐункция ΠœΠ°ΡΡΠΈΠ²Π’Π‘ΠΏΠΈΡΠΎΠΊΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠΉΠŸΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ(Массив, Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚Π° = 1000)

Бписок = Новый БписокЗначСний;

ΠšΠΎΠ»Π²ΠΎΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² = Π¦Π΅Π»(Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() / Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚Π°) + 1;

Для ΠΠΎΠΌΠŸΠ°ΠΊΠ΅Ρ‚ = 1 По ΠšΠΎΠ»Π²ΠΎΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π¦ΠΈΠΊΠ»

Начало = (ΠΠΎΠΌΠŸΠ°ΠΊΠ΅Ρ‚ - 1) * Π Π°Π·ΠΌΠ΅Ρ€ΠŸΠ°ΠΊΠ΅Ρ‚Π°;

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

ΠŸΠ°ΠΊΠ΅Ρ‚ = Новый БписокЗначСний(Массив.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(Начало, ΠšΠΎΠ½Π΅Ρ† - Начало + 1));

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ΠŸΠ°ΠΊΠ΅Ρ‚);

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Бписок;

ΠšΠΎΠ½Π΅Ρ†Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (тСстируйтС Π½Π° Π²Π°ΡˆΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…)|Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ() для извлСчСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² массива|ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ интСрфСйса Π½Π° врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠŸΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠžΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ°())|ΠžΡ‡ΠΈΡ‰Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ())

-->

Для ΠΊΡ€Π°ΠΉΠ½Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ элСмСнтов) рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ запросов 1Π‘ вмСсто списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр:

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

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

Запрос.ВСкст =

"ВЫБРАВЬ

| &Массив КАК Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

|ΠŸΠžΠœΠ•Π‘Π’Π˜Π’Π¬ Π’Π’_Π”Π°Π½Π½Ρ‹Π΅";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Массив", Массив);

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

// Π”Π°Π»Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ запроса

5. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ массивов слоТных Ρ‚ΠΈΠΏΠΎΠ²

Часто массивы содСрТат Π½Π΅ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ значСния (числа, строки), Π° слоТныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹: структуры, соотвСтствия, ссылки Π½Π° справочники ΠΈΠ»ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Для Ρ‚Π°ΠΊΠΈΡ… случаСв Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии:

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² массивСРСкомСндуСмый ΠΌΠ΅Ρ‚ΠΎΠ΄ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°
БтруктурыБСриализация Π² строку ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… полСйБписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.ΠšΠ»ΡŽΡ‡, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)
Бсылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ прСдставлСний (Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅())Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.НаимСнованиС)
ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ массиваРСкурсивная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ»ΠΈ "ΡΠΏΠ»ΡŽΡ‰ΠΈΠ²Π°Π½ΠΈΠ΅"Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ","))

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со структурами:

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ = Новый Массив;

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°1 = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Код,НаимСнованиС", "001", "Π’ΠΎΠ²Π°Ρ€ 1");

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°2 = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Код,НаимСнованиС", "002", "Π’ΠΎΠ²Π°Ρ€ 2");

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°1);

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°2);

Бписок = Новый БписокЗначСний;

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

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Код, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.НаимСнованиС);

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

πŸ’‘

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ слоТных структур ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ БтрокаБоотвСтствия() ΠΈΠ»ΠΈ Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒJSON() (доступна Π² послСдних вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ содСрТимоС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со ссылками Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… (справочники, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹) Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… состояниС:

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если массив содСрТит нСсохранённыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΠ²Ρ‹Π΅ элСмСнты справочника, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π½Π΅ записаны Π² Π±Π°Π·Ρƒ), ΠΈΡ… прСдставлСния Π² спискС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ свойств:
Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚, ?(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.ЭтоНовый() = Π˜ΡΡ‚ΠΈΠ½Π°, "ΠΠžΠ’Π«Π™: " + Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.НаимСнованиС, Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.НаимСнованиС));

6. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ особСнныС случаи

ΠŸΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ массивов Π² списки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ ошибками, связанными с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ состояниСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

ЧастыС ошибки ΠΈ ΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  • 🚨 Ошибка ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² список ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нСсовмСстимого Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅)
  • 🚨 ИндСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† массива β€” ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту ΠΏΡ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅
  • 🚨 НСопрСдСлённоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ элСмСнтом списка β€” массив содСрТит НСопрСдСлён ΠΈΠ»ΠΈ NULL

Для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ ошибок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ состояний:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° БСзопасноСДобавлСниСВБписок(Бписок, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

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

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = НСопрСдСлён Π’ΠΎΠ³Π΄Π°

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("NULL");

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Π’ΠΈΠΏΠ—Π½Ρ‡(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) = Π’ΠΈΠΏ("Π”Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅Π”Π°Π½Π½Ρ‹Π΅") Π’ΠΎΠ³Π΄Π°

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (" + Π‘Ρ‚Ρ€ΠΎΠΊΠ°(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.Π Π°Π·ΠΌΠ΅Ρ€()) + " Π±Π°ΠΉΡ‚)");

Π˜Π½Π°Ρ‡Π΅

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

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

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

Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΠ–ΡƒΡ€Π½Π°Π»Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ(НБтр("ru = 'Ошибка добавлСния элСмСнта: '") + ОписаниСОшибки());

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

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

ΠžΡΠΎΠ±Ρ‹ΠΉ случай β€” Ρ€Π°Π±ΠΎΡ‚Π° с пустыми ΠΈΠ»ΠΈ частично Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ массивами. НапримСр, Ссли массив содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ НСопрСдСлён значСния, стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ пустой список, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкам Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, добавляйтС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ:

Если Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() = 0 Или Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ(Π’ΠΈΠΏ("НСопрСдСлён")) = Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Новый БписокЗначСний; // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ пустой список, Π° Π½Π΅ NULL

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

Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ массив с цикличСскими ссылками?

Если массив содСрТит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, элСмСнт A содСрТит ссылку Π½Π° элСмСнт B, Π° элСмСнт B β€” Π½Π° элСмСнт A), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ прСобразования ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях:

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹.

2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² строковоС прСдставлСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒJSON()).

3. Для справочников ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ вмСсто ссылок.

7. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²: ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ?

Π’Ρ‹Π±ΠΎΡ€ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ гибкости. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° с рСкомСндациями ΠΏΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ:

ΠœΠ΅Ρ‚ΠΎΠ΄Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΠ“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° подписСйРСкомСндации
Π¦ΠΈΠΊΠ» Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎΠΠΈΠ·ΠΊΠ°ΡΠ’Ρ‹ΡΠΎΠΊΠ°ΡΠ”Π°ΠœΠ°Π»Π΅Π½ΡŒΠΊΠΈΠ΅ массивы, слоТная Π»ΠΎΠ³ΠΈΠΊΠ°
ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Новый БписокЗначСний()Π’Ρ‹ΡΠΎΠΊΠ°ΡΠΠΈΠ·ΠΊΠ°ΡΠΠ΅Ρ‚ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ массивы, ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹
Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ()Π‘Ρ€Π΅Π΄Π½ΡΡΠ‘Ρ€Π΅Π΄Π½ΡΡΠ”Π°ΠœΠ°ΡΡΠΈΠ²Ρ‹ со ссылками, Π½ΡƒΠΆΠ½Ρ‹ подписи
ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠžΡ‡Π΅Π½ΡŒ Π²Ρ‹ΡΠΎΠΊΠ°ΡΠΠΈΠ·ΠΊΠ°ΡΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎΠžΡ‡Π΅Π½ΡŒ большиС массивы (>10 000 элСмСнтов)
Запросы/Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹Π Π°Π·Π½Π°ΡΠ’Ρ‹ΡΠΎΠΊΠ°ΡΠ”Π°Π­ΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎ большиС Π΄Π°Π½Π½Ρ‹Π΅ (>100 000 элСмСнтов)

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Ρ‹Π±ΠΎΡ€Ρƒ:

  • πŸ”Ή Для массивов Π΄ΠΎ 1000 элСмСнтов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ конструктор ΠΈΠ»ΠΈ Ρ†ΠΈΠΊΠ» (Ссли Π½ΡƒΠΆΠ½Ρ‹ подписи).
  • πŸ”Ή Для массивов 1000–10 000 элСмСнтов ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ().
  • πŸ”Ή Для массивов >10 000 элСмСнтов примСняйтС ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.
  • πŸ”Ή Для слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (структуры, ссылки) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» с Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.
πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² список, Π½ΠΎ ΠΈ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠŸΠΎΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡŽ() ΠΈΠ»ΠΈ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠŸΠΎΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ() послС создания списка. Π­Ρ‚ΠΎ эффСктивнСС, Ρ‡Π΅ΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный массив.

FAQ: ЧастыС вопросы ΠΏΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ массивов

МоТно Π»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² массив?

Π”Π°, для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ():

Массив = Бписок.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ();

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ€Π½Ρ‘Ρ‚ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π±Π΅Π· подписСй. Если Π½ΡƒΠΆΠ½Ρ‹ подписи, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ»:

ΠœΠ°ΡΡΠΈΠ²Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ = Новый Массив;

МассивПодписСй = Новый Массив;

Для Инд = 0 По Бписок.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() - 1 Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Бписок.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ(Инд));

МассивПодписСй.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Бписок.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠŸΠΎΠ΄ΠΏΠΈΡΡŒ(Инд));

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

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив структур Π² список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ†ΠΈΠΊΠ» с Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ составной подписи:

Бписок = Новый БписокЗначСний;

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

Подпись = Π‘Ρ‚Ρ€Π¨Π°Π±Π»ΠΎΠ½("Код: %1, НаимСнованиС: %2, Π¦Π΅Π½Π°: %3",

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Код, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.НаимСнованиС, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°.Π¦Π΅Π½Π°);

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, Подпись);

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ массива Π΄Π°Ρ‚ Π² список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ тСряСтся Ρ„ΠΎΡ€ΠΌΠ°Ρ‚?

Бписок Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Π°Ρ‚Ρ‹ Π² строки согласно Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ настройкам. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Π΄Π°Ρ‚Ρ‹ Π² строки явно:

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π”Π°Ρ‚Π°, Π€ΠΎΡ€ΠΌΠ°Ρ‚(Π”Π°Ρ‚Π°, "Π”Π€=dd.MM.yyyy"));

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π”Π°Ρ‚Π°, Π‘Ρ‚Ρ€ΠΎΠΊΠ°(Π”Π΅Π½ΡŒ(Π”Π°Ρ‚Π°)) + " " + ΠœΠ΅ΡΡΡ†(Π”Π°Ρ‚Π°, Π˜ΡΡ‚ΠΈΠ½Π°) + " " + Π“ΠΎΠ΄(Π”Π°Ρ‚Π°));
Как ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ БписокЗначСний.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ(Π˜ΡΡ‚ΠΈΠ½Π°) ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ:

Бписок = Новый БписокЗначСний;

Бписок.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ = Π˜ΡΡ‚ΠΈΠ½Π°;

Бписок.Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ(Массив);

Или удаляйтС Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ Π½Π° этапС ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ массива:

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Массив.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΡ();
МоТно Π»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ массив Π² список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° мобильной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ 1Π‘?

Π”Π°, всС описанныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Π² мобильном ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅:

  • На ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΠΈΠΆΠ΅ β€” ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (>5000 элСмСнтов).
  • ΠœΠ΅Ρ‚ΠΎΠ΄ Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡ() ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ большС памяти.
  • Для отобраТСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ДинамичСскийБписок вмСсто БписокЗначСний.