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

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

1. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Π±ΠΎΡ€Π°: Ρ€Π°Π±ΠΎΡ‚Π° с коллСкциями

НачнСм с самого простого β€” ΠΎΡ‚Π±ΠΎΡ€Π° элСмСнтов ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ (Массив, БписокЗначСний, Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ). Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ подходят для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Π½Π΅ трСбуСтся ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅.

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

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

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

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

Бписок.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("АпСльсин");

// ΠžΡ‚Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· Найти()

НайдСнныйЭлСмСнт = Бписок.Найти("Π‘Π°Π½Π°Π½");

// ΠžΡ‚Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ»

ΠžΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠ‘ΠΏΠΈΡΠΎΠΊ = Новый БписокЗначСний();

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

Если Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "Π‘Π°Π½Π°Π½" Π’ΠΎΠ³Π΄Π°

ΠžΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΠ‘ΠΏΠΈΡΠΎΠΊ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ(Π­Π»Π΅ΠΌΠ΅Π½Ρ‚.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

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

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

Для Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠžΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ():

Π’Π°Π±Π»ΠΈΡ†Π° = Новый Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ();

Π’Π°Π±Π»ΠΈΡ†Π°.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π€Ρ€ΡƒΠΊΡ‚");

Π’Π°Π±Π»ΠΈΡ†Π°.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π¦Π΅Π½Π°");

Π’Π°Π±Π»ΠΈΡ†Π°.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ();

Π’Π°Π±Π»ΠΈΡ†Π°[0].Π€Ρ€ΡƒΠΊΡ‚ = "Π―Π±Π»ΠΎΠΊΠΎ";

Π’Π°Π±Π»ΠΈΡ†Π°[0].Π¦Π΅Π½Π° = 50;

// ΠžΡ‚Π±ΠΎΡ€ строк ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ

ΠžΡ‚ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Π΅Π‘Ρ‚Ρ€ΠΎΠΊΠΈ = Π’Π°Π±Π»ΠΈΡ†Π°.ΠžΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΠΈ(Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°("Π€Ρ€ΡƒΠΊΡ‚", "Π―Π±Π»ΠΎΠΊΠΎ"));

πŸ’‘

Для ускорСния ΠΎΡ‚Π±ΠΎΡ€Π° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ индСксируйтС ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ().

  • πŸ”Ή ΠŸΠ»ΡŽΡΡ‹: простота Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ обращСния ΠΊ Π±Π°Π·Π΅
  • πŸ”Έ ΠœΠΈΠ½ΡƒΡΡ‹: низкая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
  • πŸ”Ά Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ (Π΄ΠΎ 1000 элСмСнтов)

2. ΠžΡ‚Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· запросы: синтаксис ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Основной инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² 1Π‘ β€” это язык запросов. Он позволяСт ΠΎΡ‚Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ слоТных условий. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис ΠΎΡ‚Π±ΠΎΡ€Π° Π² запросС:

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

ПолС1, ПолС2

Из

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Как НомСнклатура

Π“Π΄Π΅

НомСнклатура.НаимСнованиС = "Π‘Ρ‚ΠΎΠ» ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ"

И НомСнклатура.ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ = Π›ΠΎΠΆΡŒ

Для динамичСского формирования условий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса:

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

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

"Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

| НаимСнованиС, Артикул

|Из

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Как НомСнклатура

|Π“Π΄Π΅

| НомСнклатура.НаимСнованиС ΠŸΠΎΡ…ΠΎΠΆΠ΅ На &НаимСнованиС

| И НомСнклатура.Артикул = &Артикул";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("НаимСнованиС", "%стол%");

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Артикул", "ART-12345");

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ использовании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠŸΠΎΡ…ΠΎΠΆΠ΅ На ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ добавляйтС символы % для обозначСния шаблона. Π‘Π΅Π· Π½ΠΈΡ… поиск Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ пустым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.
ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ОписаниС ΠŸΡ€ΠΈΠΌΠ΅Ρ€
= Π’ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС Π“Π΄Π΅ НаимСнованиС = "Π‘Ρ‚ΠΎΠ»"
>, < Π‘ΠΎΠ»ΡŒΡˆΠ΅/мСньшС Π“Π΄Π΅ Π¦Π΅Π½Π° > 1000
ΠœΠ΅ΠΆΠ΄Ρƒ Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π“Π΄Π΅ Π”Π°Ρ‚Π° ΠœΠ΅ΠΆΠ΄Ρƒ &Начало И &ΠšΠΎΠ½Π΅Ρ†
Π’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π“Π΄Π΅ Π“ΠΎΡ€ΠΎΠ΄ Π’ (&БписокГородов)

3. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ условия ΠΎΡ‚Π±ΠΎΡ€Π°: объСдинСниС ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы

Когда трСбуСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ нСскольким критСриям ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ И, Π˜Π›Π˜, НЕ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° с Ρ†Π΅Π½ΠΎΠΉ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅:

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

НаимСнованиС, ЦСна

Из

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Как НомСнклатура

Π“Π΄Π΅

НомСнклатура.ВидНомСнклатуры = &Π’ΠΈΠ΄

И (НомСнклатура.Π¦Π΅Π½Π° ΠœΠ΅ΠΆΠ΄Ρƒ 1000 И 5000)

И НЕ НомСнклатура.ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ

Для Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ слоТных условий примСняйтС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы. НапримСр, ΠΎΡ‚Π±ΠΎΡ€ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Π»ΠΈΡΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½Π΅:

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

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

Из

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Как НомСнклатура

Π“Π΄Π΅

БущСствуСт(

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅

Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.РСализацияВоваровУслуг.Π’ΠΎΠ²Π°Ρ€Ρ‹ Как Π’ΠΎΠ²Π°Ρ€Ρ‹

Π“Π΄Π΅ Π’ΠΎΠ²Π°Ρ€Ρ‹.НомСнклатура = НомСнклатура.Бсылка

И Π’ΠΎΠ²Π°Ρ€Ρ‹.Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.Π Π΅Π³ΠΈΠΎΠ½ = &Π Π΅Π³ΠΈΠΎΠ½

)

πŸ“Š Какой Ρ‚ΠΈΠΏ ΠΎΡ‚Π±ΠΎΡ€Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ условия Π² запросах
Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ условия с И/Π˜Π›Π˜
Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ запросы
ΠžΡ‚Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ 1Π‘
  • πŸ“Œ Π‘ΠΎΠ²Π΅Ρ‚: Для ускорСния слоТных запросов Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΈΡ… Π½Π° нСсколько простых с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ
  • πŸ“ Ошибка: Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования Π’ с большими списками Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” это Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
  • πŸ”§ Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚: Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ слоТных запросов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒΠ—Π°ΠΏΡ€ΠΎΡ()

4. ДинамичСский ΠΎΡ‚Π±ΠΎΡ€: Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ условий Π² runtime

Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ… условия ΠΎΡ‚Π±ΠΎΡ€Π° часто Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ динамичСски β€” Π² зависимости ΠΎΡ‚ дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ запроса:

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ = Новый ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ—Π°ΠΏΡ€ΠΎΡΠ°();

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ.Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ”Π°Π½Π½Ρ‹Ρ… = Новый ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠ°Π”Π°Π½Π½Ρ‹Ρ…("Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура");

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠŸΠΎΠ»Π΅("НаимСнованиС");

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠŸΠΎΠ»Π΅("Артикул");

// ДинамичСскоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ условий

Если НС ΠŸΡƒΡΡ‚Π°ΡΠ‘Ρ‚Ρ€ΠΎΠΊΠ°(Π€ΠΈΠ»ΡŒΡ‚Ρ€ΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ) Π’ΠΎΠ³Π΄Π°

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠ£ΡΠ»ΠΎΠ²ΠΈΠ΅("НаимСнованиС", ВипБравнСния.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚, Π€ΠΈΠ»ΡŒΡ‚Ρ€ΠŸΠΎΠΠ°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡŽ);

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

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

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

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€” Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ строки запроса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ():

Условия = Новый Массив();

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(ДатаНачала) Π’ΠΎΠ³Π΄Π°

Условия.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π° >= &ДатаНачала");

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

Если Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ(Π”Π°Ρ‚Π°ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡ) Π’ΠΎΠ³Π΄Π°

Условия.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π° <= &Π”Π°Ρ‚Π°ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡ");

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

ВСкстУсловий = ?(Условия.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ() > 0, "Π“Π΄Π΅ " + Π‘Ρ‚Ρ€Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ(Условия, " И "), "");

Запрос.ВСкст = "Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ * Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ " + ВСкстУсловий;

β˜‘οΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° динамичСского ΠΎΡ‚Π±ΠΎΡ€Π°

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 4
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ динамичСском Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ запросов всСгда экранируйтС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ.

5. ΠžΡ‚Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ 1Π‘: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ прСдоставляСт спСциализированныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ β€” ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ‚Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· написания запросов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚Π±ΠΎΡ€Π° Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ справочника:

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ = Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура;

ΠžΡ‚Π±ΠΎΡ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°();

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("НаимСнованиС", "Π‘Ρ‚ΠΎΠ»%");

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠŸΠΎΠΌΠ΅Ρ‚ΠΊΠ°Π£Π΄Π°Π»Π΅Π½ΠΈΡ", Π›ΠΎΠΆΡŒ);

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(,, ΠžΡ‚Π±ΠΎΡ€);

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π’Ρ‹Π±ΠΎΡ€ΠΊΠ°.НаимСнованиС);

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

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄:

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ = Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.РСализацияВоваровУслуг;

ΠžΡ‚Π±ΠΎΡ€ = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°();

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π°", НачалоДня(ВСкущаяДата()));

ΠžΡ‚Π±ΠΎΡ€.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚", ΠΠ°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚);

Π’Ρ‹Π±ΠΎΡ€ΠΊΠ° = ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€.Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ(,, ΠžΡ‚Π±ΠΎΡ€);

  • ⚑ ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ: ΠΏΡ€ΠΎΡ‰Π΅ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅, Ρ‡Π΅ΠΌ запросы
  • ⏳ НСдостаток: ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
  • πŸ›  Когда ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ: для простых ΠΎΡ‚Π±ΠΎΡ€ΠΎΠ² ΠΏΠΎ 1-2 полям

6. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΎΡ‚Π±ΠΎΡ€ΠΎΠ²: индСксы ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ построСнныС ΠΎΡ‚Π±ΠΎΡ€Ρ‹ β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΎΠ² Π² 1Π‘. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ индСксированныС поля Π² условиях ΠΎΡ‚Π±ΠΎΡ€Π° (ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² индСксы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹)
  2. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² условиях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π›Π΅Π²(НаимСнованиС, 3) = "Π‘Ρ‚ΠΎΠ»")
  3. Для часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΡ‚Π±ΠΎΡ€ΠΎΠ² примСняйтС ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²
  4. Π Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ слоТныС запросы Π½Π° нСсколько простых с Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ запроса с использованиСм Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹:

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

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

"Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹Π΅

| НомСнклатураБсылка Как НомСнклатура

|ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π’Π’_ΠžΡ‚ΠΎΠ±Ρ€Π°Π½Π½Π°ΡΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°

|Из

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Как НомСнклатура

|Π“Π΄Π΅

| НомСнклатура.Π’ΠΈΠ΄ = &Π’ΠΈΠ΄

|

|////////////////

|Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

| Π’Π’_ΠžΡ‚ΠΎΠ±Ρ€Π°Π½Π½Π°ΡΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°.НомСнклатура Как НомСнклатура,

| Π’Π’_ΠžΡ‚ΠΎΠ±Ρ€Π°Π½Π½Π°ΡΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°.НаимСнованиС

|Из

| Π’Π’_ΠžΡ‚ΠΎΠ±Ρ€Π°Π½Π½Π°ΡΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π° Как Π’Π’_ΠžΡ‚ΠΎΠ±Ρ€Π°Π½Π½Π°ΡΠΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°";

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ индСксы Π² 1Π‘?

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ β†’ БСрвис β†’ Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β†’ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ‚Π°Π±Π»ΠΈΡ† Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ "Π˜Π½Π΄Π΅ΠΊΡΡ‹" Π±ΡƒΠ΄ΡƒΡ‚ пСрСчислСны индСксированныС поля для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π±Π°Π·Π°ΠΌΠΈ (Π±ΠΎΠ»Π΅Π΅ 100Π“Π±) Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ запросы ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях рассматривайтС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ использования Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π‘Π£Π‘Π”.

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

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

Ошибка ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ РСшСниС
ΠžΡ‚Π±ΠΎΡ€ ΠΏΠΎ нСиндСксированному полю МСдлСнноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ запроса Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ»Π΅ Π² индСксы ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ условиС
ИспользованиС ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΠ”ΠΈΠ°Π»ΠΎΠ³ΠžΡ‚Π±ΠΎΡ€Π°() Π² Ρ„ΠΎΠ½Π΅ ЗависаниС Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ задания ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ Π² основной ΠΏΠΎΡ‚ΠΎΠΊ
Блишком ΠΌΠ½ΠΎΠ³ΠΎ условий Π˜Π›Π˜ Π­ΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ рост Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ Π½Π° нСсколько запросов с ΠžΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ
ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ пустых ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ошибки ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ() ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ условий

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°ΠΌΠΈ. ВсСгда ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ количСство Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

// ΠŸΠ»ΠΎΡ…ΠΎ: Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ всС поля Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ

Запрос.ВСкст = "Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ * Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ";

// Π₯ΠΎΡ€ΠΎΡˆΠΎ: явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹Π΅ поля ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ количСство

Запрос.ВСкст = "Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 1000 НомСр, Π”Π°Ρ‚Π°, Π‘ΡƒΠΌΠΌΠ°Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Из Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ";

8. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: полнотСкстовый поиск ΠΈ рСгулярныС выраТСния

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ слоТного поиска ΠΏΠΎ тСкстовому содСрТимому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ полнотСкстовый поиск:

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

"Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ

| НаимСнованиС

|Из

| Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Как НомСнклатура

|Π“Π΄Π΅

| ΠŸΠΎΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²Ρ‹ΠΉΠŸΠΎΠΈΡΠΊ(НомСнклатура.НаимСнованиС + "" + НомСнклатура.ОписаниС, &ΠŸΠΎΠΈΡΠΊΠΎΠ²Ρ‹ΠΉΠ—Π°ΠΏΡ€ΠΎΡ)";

Для Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ поиска примСняйтС рСгулярныС выраТСния (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ внСшнСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ использования встроСнного Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° начиная с вСрсии 8.3.20):

Если Π Π΅Π³Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.Найти("^АРВ-\d{5}$", Артикул) Π’ΠΎΠ³Π΄Π°

// Артикул соотвСтствуСт ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ

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

  • πŸ” Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ: для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ слоТного поиска ΠΏΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ
  • ⚠ ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: полнотСкстовый поиск Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ настройки Π² Π‘Π£Π‘Π”
  • πŸ’‘ ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°: для простых случаСв Ρ…Π²Π°Ρ‚ΠΈΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠŸΠΎΡ…ΠΎΠΆΠ΅ На
πŸ’‘

Для ускорСния полнотСкстового поиска настройтС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ индСксы Π² SQL-сСрвСрС ΠΈ рСгулярно обновляйтС статистику.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π±ΠΎΡ€ ΠΏΠΎ Π΄Π°Ρ‚Π΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… Π΄Π½Π΅ΠΉ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π Π°Π±ΠΎΡ‡ΠΈΠ΅Π”Π½ΠΈΠœΠ΅ΠΆΠ΄Ρƒ() ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ создайтС ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая провСряСт Π΄Π°Ρ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ:

Ѐункция ДатаЯвляСтсяРабочСй(Π”Π°Ρ‚Π°)

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НЕ ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΠΈ.ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ.Π­Ρ‚ΠΎΠ’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉΠ”Π΅Π½ΡŒ(Π”Π°Ρ‚Π°);

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

// Π’ запросС:

Π“Π΄Π΅ ДатаЯвляСтсяРабочСй(Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π°)

МоТно Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π±ΠΎΡ€ ΠΏΠΎ Ρ†Π²Π΅Ρ‚Ρƒ Π² справочникС Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Ρ‹?

Π”Π°, Ссли ΠΏΠΎΠ»Π΅ "Π¦Π²Π΅Ρ‚" Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² справочник. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ условия:

Π“Π΄Π΅ НомСнклатура.Π¦Π²Π΅Ρ‚ = &Π¦Π²Π΅Ρ‚

Для ΠΎΡ‚Π±ΠΎΡ€Π° ΠΏΠΎ нСскольким Ρ†Π²Π΅Ρ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Π“Π΄Π΅ НомСнклатура.Π¦Π²Π΅Ρ‚ Π’ (&ΠœΠ°ΡΡΠΈΠ²Π¦Π²Π΅Ρ‚ΠΎΠ²)
Как ΠΎΡ‚ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ²Π°Ρ€Ρ‚Π°Π»?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Π°ΠΌΠΈ:

Π“Π΄Π΅ Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° ΠœΠ΅ΠΆΠ΄Ρƒ ΠΠ°Ρ‡Π°Π»ΠΎΠšΠ²Π°Ρ€Ρ‚Π°Π»Π°(ВСкущаяДата()) И ΠšΠΎΠ½Π΅Ρ†ΠšΠ²Π°Ρ€Ρ‚Π°Π»Π°(ВСкущаяДата())
Π§Π΅ΠΌ отличаСтся ΠΎΡ‚Π±ΠΎΡ€ Ρ‡Π΅Ρ€Π΅Π· запрос ΠΎΡ‚ ΠΎΡ‚Π±ΠΎΡ€Π° Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€?

Запросы:

  • БыстрСС Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ слоТныС условия ΠΈ соСдинСния Ρ‚Π°Π±Π»ΠΈΡ†
  • Π’Ρ€Π΅Π±ΡƒΡŽΡ‚ знания языка запросов

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹:

  • ΠŸΡ€ΠΎΡ‰Π΅ Π² использовании
  • МСдлСннСС ΠΏΡ€ΠΈ большом количСствС записСй
  • НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ слоТныС условия
Как ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ запрос?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты:

  1. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒΠ—Π°ΠΏΡ€ΠΎΡ() β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ»Π°Π½ выполнСния
  2. Π–ΡƒΡ€Π½Π°Π» рСгистрации SQL-запросов Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€Π΅
  3. Анализ индСксов Ρ‡Π΅Ρ€Π΅Π· консоль Π‘Π£Π‘Π”
  4. ВСстированиС Π½Π° ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ индСксов Π½Π° полях Π² условиях
  • Блишком ΠΌΠ½ΠΎΠ³ΠΎ соСдинСний Ρ‚Π°Π±Π»ΠΈΡ†
  • ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² условиях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π›Π΅Π²(), ΠŸΡ€Π°Π²())