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

ΠœΡ‹ разбСрёмся, ΠΊΠΎΠ³Π΄Π° Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(), Π° ΠΊΠΎΠ³Π΄Π° β€” Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(), ΠΏΠΎΡ‡Π΅ΠΌΡƒ динамичСскиС массивы ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ограничСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ структурами. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ особСнностям повСдСния массивов ΠΏΡ€ΠΈ сСтСвой Ρ€Π°Π±ΠΎΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² распрСдСлённых Π±Π°Π·Π°Ρ….

Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² β€” Ρ‚Π°ΠΌ ΠΎΠ±ΡŠΡΡΠ½Π΅Π½Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ с Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² заполнСния.

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² 1Π‘ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

Массив Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ β€” это упорядочСнная коллСкция элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ°: числа, строки, Π΄Π°Ρ‚Ρ‹, ссылки Π½Π° справочники ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ языков Π²Ρ€ΠΎΠ΄Π΅ Python ΠΈΠ»ΠΈ JavaScript, Π³Π΄Π΅ массивы Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² 1Π‘ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ТёсткиС ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ сцСнарии использования:

  • πŸ“Š ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массовоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° справочников ΠΈΠ· Excel.
  • πŸ”„ ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅: ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
  • πŸ“ˆ АгрСгация Π΄Π°Π½Π½Ρ‹Ρ…: расчёт статистики, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π² ΠΎΡ‚Ρ‡Ρ‘Ρ‚.
  • πŸ”— Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с внСшними систСмами: ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… для JSON/XML ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ с сайтами ΠΈΠ»ΠΈ Π±Π°Π½ΠΊΠ°ΠΌΠΈ.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ массивы Π² 1Π‘ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Они ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π²ΠΎ врСмя выполнСния ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ:

  • ⚑ ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ сСанса всС нСсохранённыС массивы ΠΏΡ€ΠΎΠΏΠ°Π΄Π°ΡŽΡ‚.
  • πŸ’Ύ Для Π΄ΠΎΠ»Π³ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π₯ранилищСЗначСния ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² справочники/рСгистры.
  • πŸ”„ ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими массивами (>10 000 элСмСнтов) ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ памяти, особСнно Π² Ρ‚ΠΎΠ½ΠΊΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅.
πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ массивы Π² 1Π‘?
Π•ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ
НСсколько Ρ€Π°Π· Π² нСдСлю
Π Π΅Π΄ΠΊΠΎ
Никогда нС использовал

2. Π ΡƒΡ‡Π½ΠΎΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива: ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() ΠΈ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ()

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив β€” ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° основных ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • πŸ”Ή Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) β€” ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† массива.
  • πŸ”Ή Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ИндСкс, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) β€” вставляСт элСмСнт Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ (сдвигая ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΏΡ€Π°Π²ΠΎ).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° для создания массива чисСл:

МассивЧисСл = Новый Массив;

// Π”ΠΎΠ±Π°Π²ΠΈΠΌ элСмСнты Π² ΠΊΠΎΠ½Π΅Ρ†

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(10);

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(20);

МассивЧисСл.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(30);

// Вставим элСмСнт Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ (индСкс 1)

МассивЧисСл.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(1, 15);

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: [10, 15, 20, 30]

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности:

  • πŸ“Œ Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ начинаСтся с 0 (ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования).
  • 🚫 ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСмСщСния всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов.
  • ⚠️ ΠŸΡ€ΠΈ вставкС ΠΏΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ индСксу (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(100, 5)) 1Π‘ Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π° просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ†.

ОбъявлСн Π»ΠΈ массив ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ "Новый Массив"?|

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ индСксы (Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0)?|

НСт Π»ΠΈ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² строках (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, " ΠŸΡ€ΠΈΠ²Π΅Ρ‚" вмСсто "ΠŸΡ€ΠΈΠ²Π΅Ρ‚")?|

Π£Ρ‡Ρ‚Π΅Π½Π° Π»ΠΈ максимальная Π΄Π»ΠΈΠ½Π° массива для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹?-->

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях 1Π‘ Π½ΠΈΠΆΠ΅ 8.3.10 ΠΌΠ΅Ρ‚ΠΎΠ΄ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() ΠΌΠΎΠ³ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ нСявным ошибкам ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами, содСрТащими НСопрСдСлён. ΠŸΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π² Π‘ΠΏΡ€Π°Π²ΠΊΠ° β†’ О ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

3. Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· запроса

Один ΠΈΠ· самых распространённых сцСнариСв β€” пСрСнос Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса Π² массив для дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ:

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ заполнСния массива Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ запроса:

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

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

"ВЫБРАВЬ

| НомСнклатура.НаимСнованиС КАК Π’ΠΎΠ²Π°Ρ€,

| Π‘ΡƒΠΌΠΌΠ°(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) КАК Π˜Ρ‚ΠΎΠ³ΠΎ

|Π˜Π—

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

| Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• РСгистрНакоплСния.ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ КАК ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ

| ПО Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Бсылка = ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ.РСгистратор

| Π›Π•Π’ΠžΠ• Π‘ΠžΠ•Π”Π˜ΠΠ•ΠΠ˜Π• Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура КАК НомСнклатура

| ПО ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ.НомСнклатура = НомСнклатура.Бсылка

|Π“Π”Π•

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° ΠœΠ•Π–Π”Π£ &ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π° И &ΠšΠΎΠ½Π΅Ρ†ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π°

|Π‘Π“Π Π£ΠŸΠŸΠ˜Π ΠžΠ’ΠΠ’Π¬ ПО

| НомСнклатура.НаимСнованиС";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ΠΠ°Ρ‡Π°Π»ΠΎΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π°", ΠΠ°Ρ‡Π°Π»ΠΎΠœΠ΅ΡΡΡ†Π°(ВСкущаяДата()));

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ΠšΠΎΠ½Π΅Ρ†ΠŸΠ΅Ρ€ΠΈΠΎΠ΄Π°", ΠšΠΎΠ½Π΅Ρ†ΠœΠ΅ΡΡΡ†Π°(ВСкущаяДата()));

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

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

// ЗаполняСм массив строками Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°

Пока Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠΈΠ”Π°Π½Π½Ρ‹Ρ… = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

Π‘Ρ‚Ρ€ΠΎΠΊΠΈΠ”Π°Π½Π½Ρ‹Ρ….Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π’ΠΎΠ²Π°Ρ€", Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’ΠΎΠ²Π°Ρ€);

Π‘Ρ‚Ρ€ΠΎΠΊΠΈΠ”Π°Π½Π½Ρ‹Ρ….Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π˜Ρ‚ΠΎΠ³ΠΎ", Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π˜Ρ‚ΠΎΠ³ΠΎ);

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

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

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½ΡŽΠ°Π½ΡΡ‹:

  • πŸ”Ή Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° создаётся структура (ассоциативный массив), Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌ.
  • πŸ”Ή Если Π² запросС ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ (>20), Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() β€” это быстрСС, Ρ‡Π΅ΠΌ Ρ€ΡƒΡ‡Π½ΠΎΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
  • πŸ”Ή ΠŸΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (>50 000 строк) стоит Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ запрос Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠŸΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉΠ—Π°ΠΏΡ€ΠΎΡ.
πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ количСство строк Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запроса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(); ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π—Π°ΠΏΡ€ΠΎΡΠ°.Π’Ρ‹Π±Ρ€Π°Π½Π½ΠΎ(); β€” это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π°Π·Ρ‹ быстрСС, Ρ‡Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° всСх Π΄Π°Π½Π½Ρ‹Ρ… Π² массив.

4. ДинамичСскоС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива Π² Ρ†ΠΈΠΊΠ»Π΅

Часто массивы Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ динамичСски β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ элСмСнтов справочника ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„Π°ΠΉΠ»Π°. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ статичСскими ΠΈ динамичСскими массивами:

  • πŸ“Œ БтатичСский массив ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ (задаётся ΠΏΡ€ΠΈ создании). Π’ 1Π‘ Π΅Π³ΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Новый Массив(Π Π°Π·ΠΌΠ΅Ρ€).
  • πŸ“Œ ДинамичСский массив Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ автоматичСски ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнтов (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² 1Π‘).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского заполнСния массива Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· справочника:

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹;

ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ² = Новый Массив;

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

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

// Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ²

Если Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ = Π›ΠΎΠΆΡŒ Π’ΠΎΠ³Π΄Π°

ΠœΠ°ΡΡΠΈΠ²ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚ΠΎΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Бсылка);

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

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

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ динамичСском Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ:

  • ❌ Π£Ρ‚Π΅Ρ‡ΠΊΠ° памяти: Ссли Π² Ρ†ΠΈΠΊΠ»Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°) ΠΈ Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°ΡŽΡ‚ΡΡ.
  • ❌ Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
  • ❌ НСучтённыС NULL-значСния: Ссли Π² массив добавляСтся НСопрСдСлён, это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΏΡ€ΠΈ сортировкС.
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с распрСдСлёнными Π±Π°Π·Π°ΠΌΠΈ (Π£Π Π˜Π‘, Π£Π Π‘Π”) динамичСскоС Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массивов Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅() с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ.

5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: быстрыС способы заполнСния

Когда Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΡ‘ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (дСсятки тысяч элСмСнтов), стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() становятся нСэффСктивными. Рассмотрим Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠŸΠ°ΠΌΡΡ‚ΡŒ Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() Π² Ρ†ΠΈΠΊΠ»Π΅ Низкая БрСдняя ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π΄ΠΎ 1 000 элСмСнтов
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ() Высокая Низкая ΠœΠ°ΡΡΠΈΠ²Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ значСниями
Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ БрСдняя Низкая Π˜Π·Π²Π΅ΡΡ‚Π΅Π½ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива
ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() массивов ΠžΡ‡Π΅Π½ΡŒ высокая Высокая ОбъСдинСниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов
Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() ΠΈΠ· запроса Максимальная БрСдняя Π Π°Π±ΠΎΡ‚Π° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ запросов

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ() для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива:

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ массив ΠΈΠ· 100 элСмСнтов, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… нулями

ΠœΠ°ΡΡΠΈΠ²ΠΡƒΠ»Π΅ΠΉ = Новый Массив(100);

ΠœΠ°ΡΡΠΈΠ²ΠΡƒΠ»Π΅ΠΉ.Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ(0);

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ массив ΠΈΠ· 50 элСмСнтов со строкой "ΠŸΡƒΡΡ‚ΠΎ"

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

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ("ΠŸΡƒΡΡ‚ΠΎ");

Для максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ‹:

  • πŸ”Ή Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ(), Ссли Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса.
  • πŸ”Ή Для массовой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ примСняйтС ΠŸΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉΠ—Π°ΠΏΡ€ΠΎΡ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π° 100–500 строк.
  • πŸ”Ή Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов β€” это ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя выполнСния.
πŸ’‘

Π‘Π°ΠΌΡ‹ΠΉ быстрый способ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ() ΠΈΠ»ΠΈ Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΠšΠΎΠ»ΠΎΠ½ΠΊΡƒ() Π±Π΅Π· ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ.

6. Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами

Π’ 1Π‘ Π½Π΅Ρ‚ встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Python с Π΅Π³ΠΎ списками списков), Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массивов, содСрТащих Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы. Π­Ρ‚ΠΎ вострСбовано для:

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ 3Γ—3):

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° = Новый Массив;

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ = 1 По 3 Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ° = Новый Массив;

// ЗаполняСм строку элСмСнтами

Для Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ‘Ρ‚ΠΎΠ»Π±Ρ†Π° = 1 По 3 Π¦ΠΈΠΊΠ»

Π‘Ρ‚Ρ€ΠΎΠΊΠ°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ * Π‘Ρ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ‘Ρ‚ΠΎΠ»Π±Ρ†Π°);

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

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

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

// Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

// [

// [1, 2, 3],

// [2, 4, 6],

// [3, 6, 9]

// ]

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами:

  • πŸ”Ή НСт встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ структурами β€” всё приходится Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
  • πŸ”Ή ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ размСрности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, массив 100Γ—100 обрабатываСтся Π² 10 000 Ρ€Π°Π· ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ 10Γ—10).
  • πŸ”Ή Для хранСния Ρ€Π°Π·Ρ€Π΅ΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† (Π³Π΄Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ элСмСнтов пустыС) Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ БоотвСтствиС.
Как ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с большими ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ?

Для ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ 100Γ—100 рСкомСндуСтся:

1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с расчётом индСкса ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: индСкс = Π½ΠΎΠΌΠ΅Ρ€Π‘Ρ‚Ρ€ΠΎΠΊΠΈ * количСствоБтолбцов + Π½ΠΎΠΌΠ΅Ρ€Π‘Ρ‚ΠΎΠ»Π±Ρ†Π°.

2. Π Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ сохранСниСм Π² Π₯ранилищСЗначСния.

3. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π»Π΅Π½Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ (block processing), Ссли ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° симмСтричная.

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

Π”Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами. Π’ΠΎΡ‚ самыС распространённыС:

  1. πŸ”Έ ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° с индСксациСй: ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту с индСксом, Ρ€Π°Π²Π½Ρ‹ΠΌ Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°(), ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС (послСдний индСкс Π½Π° 1 мСньшС).
  2. πŸ”Έ ИзмСнСниС массива Π² Ρ†ΠΈΠΊΠ»Π΅: Ссли Π² Ρ†ΠΈΠΊΠ»Π΅ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив (Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ/ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты), это ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ нСпрСдсказуСмому повСдСнию.
  3. πŸ”Έ ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ссылок, Π° Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: ΠΏΡ€ΠΈ присваивании Массив2 = Массив1 копируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылка, Π° Π½Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ копирования Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().
  4. πŸ”Έ НСучтённыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…: Ссли Π² массивС ΡΠΌΠ΅ΡˆΠ°Π½Ρ‹ числа ΠΈ строки, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ() ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ исправлСниС:

// ❌ ΠžΠ¨Π˜Π‘ΠšΠ: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ массива Π² Ρ†ΠΈΠΊΠ»Π΅ Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ

Массив = Новый Массив;

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(1);

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(2);

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(3);

Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив Π¦ΠΈΠΊΠ»

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ = 2 Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(1); // Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ пропуску элСмСнта 3!

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

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

// βœ… ΠŸΠ ΠΠ’Π˜Π›Π¬ΠΠž: использованиС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Для i = Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() По 0 Π¨Π°Π³ -1 Π¦ΠΈΠΊΠ»

Если Массив[i] = 2 Π’ΠΎΠ³Π΄Π°

Массив.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(i);

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

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

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

8. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡

Рассмотрим нСсколько Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, Π³Π΄Π΅ массивы Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹:

πŸ“Œ Π—Π°Π΄Π°Ρ‡Π° 1: МассовоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ² справочника

Допустим, Π½ΡƒΠΆΠ½ΠΎ для всСх Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ставку НДБ. Π›ΠΎΠ³ΠΈΠΊΠ°:

  1. Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² массив.
  2. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ массив (ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния).
  3. Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ измСнСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π±Π°Π·Ρƒ.
ΠœΠ°ΡΡΠΈΠ²ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹ = Новый Массив;

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ();

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

Если Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Π“Ρ€ΡƒΠΏΠΏΠ° = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.ГруппыНомСнклатуры.Π’ΠΎΠ²Π°Ρ€Ρ‹ Π’ΠΎΠ³Π΄Π°

Π”Π°Π½Π½Ρ‹Π΅ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

Π”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Бсылка", Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.Бсылка);

Π”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("БтавкаНДБ", Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.БтавкиНДБ.НДБ20);

ΠœΠ°ΡΡΠΈΠ²ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π”Π°Π½Π½Ρ‹Π΅);

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

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

// МассовоС обновлСниС

Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из ΠœΠ°ΡΡΠΈΠ²ΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹ Π¦ΠΈΠΊΠ»

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Бсылка.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚();

ΠžΠ±ΡŠΠ΅ΠΊΡ‚.БтавкаНДБ = Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.БтавкаНДБ;

ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π—Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ();

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

πŸ“Œ Π—Π°Π΄Π°Ρ‡Π° 2: ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ

НуТно ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΏΠΎ мСсяцам ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ. Массив позволяСт Π³ΠΈΠ±ΠΊΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ:

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° = Новый БоотвСтствиС; // ΠšΠ»ΡŽΡ‡ - "Π Π΅Π³ΠΈΠΎΠ½.ΠœΠ΅ΡΡΡ†", Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - сумма

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

Запрос.ВСкст = "ВЫБРАВЬ Π Π΅Π³ΠΈΠΎΠ½, ΠœΠ•Π‘Π―Π¦(Π”Π°Ρ‚Π°) КАК ΠœΠ΅ΡΡΡ†, Π‘ΡƒΠΌΠΌΠ°(Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) КАК Π‘ΡƒΠΌΠΌΠ° Π˜Π— Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг";

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

Пока Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ() Π¦ΠΈΠΊΠ»

ΠšΠ»ΡŽΡ‡ = Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π Π΅Π³ΠΈΠΎΠ½ + "|" + Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.ΠœΠ΅ΡΡΡ†;

Если Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(ΠšΠ»ΡŽΡ‡) Π’ΠΎΠ³Π΄Π°

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°[ΠšΠ»ΡŽΡ‡] = Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°[ΠšΠ»ΡŽΡ‡] + Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π‘ΡƒΠΌΠΌΠ°;

Π˜Π½Π°Ρ‡Π΅

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ°.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ΠšΠ»ΡŽΡ‡, Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.Π‘ΡƒΠΌΠΌΠ°);

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

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

πŸ“Œ Π—Π°Π΄Π°Ρ‡Π° 3: ΠŸΠ°Ρ€ΡΠΈΠ½Π³ CSV-Ρ„Π°ΠΉΠ»Π°

ΠŸΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· CSV ΡƒΠ΄ΠΎΠ±Π½ΠΎ сначала ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всё Π² массив, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π±Π°Π·Ρƒ:

ВСкстЀайла = Новый ЧтСниСВСкста(ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»Ρƒ);

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

Пока ВСкстЀайла.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ() Π¦ΠΈΠΊΠ»

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ВСкстЀайла.ВСкущаяБтрока);

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

// УдаляСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку)

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

ΠœΠ°ΡΡΠΈΠ²Π‘Ρ‚Ρ€ΠΎΠΊ.Π£Π΄Π°Π»ΠΈΡ‚ΡŒ(0);

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

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (CSV, JSON) всСгда сначала Π·Π°Π³Ρ€ΡƒΠΆΠ°ΠΉΡ‚Π΅ ΠΈΡ… Π² массив, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΠΉΡ‚Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π±Π°Π·Ρ‹ ΠΈ ускорит Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ.

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

πŸ”Ή Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() для динамичСских массивов ΠΈΠ»ΠΈ свойство Π’Π“Ρ€Π°Π½ΠΈΡ†Π°() + 1 для статичСских. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Массив = Новый Массив;

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(1);

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(2);

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ()); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 2

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°()); // Π’Π΅Ρ€Π½Ρ‘Ρ‚ 1 (индСкс послСднСго элСмСнта)

πŸ”Ή МоТно Π»ΠΈ Π² массивС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…?

Π”Π°, Π² 1Π‘ массивы Π½Π΅ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ массивС числа, строки ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Однако это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам ΠΏΡ€ΠΈ сортировкС ΠΈΠ»ΠΈ сравнСнии. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ² = Новый Массив;

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(100); // Число

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°"); // Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉΠœΠ°ΡΡΠΈΠ².Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(ВСкущаяДата()); // Π”Π°Ρ‚Π°

ΠŸΡ€ΠΈ сортировкС Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ упорядочСны ΠΏΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ 1Π‘, Ρ‡Ρ‚ΠΎ Π½Π΅ всСгда Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

πŸ”Ή Как ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(). Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ сортировки ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сравнСния:

Массив = Новый Массив;

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(3);

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(1);

Массив.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(2);

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ

Массив.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(НаправлСниСБортировки.Π’ΠΎΠ·Ρ€);

// ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ сортировка (ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ)

Массив.Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ΠŸΠΎΠ£Π±Ρ‹Π²Π°Π½ΠΈΡŽ);

Ѐункция Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ΠŸΠΎΠ£Π±Ρ‹Π²Π°Π½ΠΈΡŽ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2)

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1 > Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ -1;

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1 < Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2 Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ 1;

Π˜Π½Π°Ρ‡Π΅

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;

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

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

πŸ”Ή Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° массива?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ() Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ»ΠΈ ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() (доступСн с вСрсии 8.3.14):

Массив1 = Новый Массив;

Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(1);

Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(2);

Массив2 = Новый Массив;

Массив2.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(3);

Массив2.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(4);

// Бпособ 1: Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ»

Для ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Из Массив2 Π¦ΠΈΠΊΠ»

Массив1.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚);

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

// Бпособ 2: Ρ‡Π΅Ρ€Π΅Π· ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ() (быстрСС)

ΠœΠ°ΡΡΠΈΠ²ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹ΠΉ = Массив1.ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(Массив2);

πŸ”Ή ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² массив Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка "ИндСкс Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†"?

Π­Ρ‚Π° ошибка появляСтся Π² Π΄Π²ΡƒΡ… случаях:

  1. Π’Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту ΠΏΠΎ индСксу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС, Ρ‡Π΅ΠΌ Массив.Π’Π“Ρ€Π°Π½ΠΈΡ†Π°().
  2. Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ() с ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ индСксом ΠΈΠ»ΠΈ индСксом, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Массив.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

Массив = Новый Массив(5); // БтатичСский массив Π½Π° 5 элСмСнтов

Массив.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(10, "Ошибка"); // ИндСкс 10 Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ† (максимум 4)