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

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

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

1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ "описаниС Ρ‚ΠΈΠΏΠ°" Π² 1Π‘ ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π΅Π³ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ

Π’ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ описаниС Ρ‚ΠΈΠΏΠ° β€” это мСтаинформация ΠΎ структурС Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ…:

  • πŸ“œ Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²ΠΎΠ΅ прСдставлСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Число", "БправочникБсылка.НомСнклатура")
  • πŸ”Ή ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° ОписаниСВипов (возвращаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π’ΠΈΠΏΠ—Π½Ρ‡() ΠΈΠ»ΠΈ ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅().Π’ΠΈΠΏΡ‹)
  • πŸ“Š БоставныС описания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Ρ‚Π°Π±Π»ΠΈΡ† Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ структур с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ)

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ описаний Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

  • πŸ”„ ДинамичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° совмСстимости (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄ присваиваниСм значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ)
  • πŸ› οΈ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (гСнСрация Π½ΠΎΠ²Ρ‹Ρ… справочников, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ΠΎΠ²)
  • πŸ”— Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с внСшними систСмами (ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ JSON/XML Π² Ρ‚ΠΈΠΏΡ‹ 1Π‘)
  • πŸ“ˆ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π° (ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ ТСсткого кодирования Ρ‚ΠΈΠΏΠΎΠ²)

Π‘Π΅Π· ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ прСобразования Π²Ρ‹ рискуСтС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ошибки Π²ΠΈΠ΄Π° "Π’ΠΈΠΏ Π½Π΅ совмСстим" ΠΈΠ»ΠΈ "НСдопустимоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слоТно ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ, особСнно Π² динамичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… структурах. НапримСр, Ссли Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° "Π‘Ρ‚Ρ€ΠΎΠΊΠ°" ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅ΠΉ "Число", ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ даст ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это явно β€” Π½ΠΎ Ссли Ρ‚ΠΈΠΏΡ‹ приходят ΠΈΠ·Π²Π½Π΅ ΠΊΠ°ΠΊ строки, ошибка проявится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этапС исполнСния.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π’ вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½ΠΈΠΆΠ΅ 8.3.10 Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅. ΠŸΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°.Π’Π΅Ρ€ΡΠΈΡΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹().

2. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ получСния Ρ‚ΠΈΠΏΠ° ΠΈΠ· описания

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ прСдоставляСт нСсколько встроСнных инструмСнтов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Рассмотрим основныС:

2.1. Ѐункция Π’ΠΈΠΏ()

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ значСния β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π’ΠΈΠΏ():

ВипЧисла = Π’ΠΈΠΏ(10); // Π’Π΅Ρ€Π½Π΅Ρ‚ "Число"

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

Однако этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями. Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строковоС описаниС Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "ДокумСнтБсылка.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ"), Π’ΠΈΠΏ() Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

2.2. ΠœΠ΅Ρ‚ΠΎΠ΄ Π’ΠΈΠΏΠ—Π½Ρ‡()

Для создания Ρ‚ΠΈΠΏΠ° ΠΏΠΎ Π΅Π³ΠΎ описанию ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция Π’ΠΈΠΏΠ—Π½Ρ‡():

ВипПоОписанию = Π’ΠΈΠΏΠ—Π½Ρ‡("БправочникБсылка.НомСнклатура");

Если ВипПоОписанию = Π’ΠΈΠΏ(Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.НомСнклатура.ΠŸΡƒΡΡ‚Π°ΡΠ‘ΡΡ‹Π»ΠΊΠ°()) Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("Π’ΠΈΠΏΡ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚!");

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

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΈ ссылочных Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ограничСния:

  • ❌ НС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с составными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Массив[Число]")
  • ❌ НС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΡ‹ ΠΈΠ· подсистСм Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ)
  • ❌ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ синтаксиса β€” ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ

2.3. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ОписаниСВипов

Для слоТных случаСв ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ОписаниСВипов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ²:

ОписаниС = Новый ОписаниСВипов("БправочникБсылка.НомСнклатура, ДокумСнтБсылка.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ");

Для КаТдого Π’ΠΈΠΏ Из ОписаниС Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π’ΠΈΠΏ.ИмяВипа);

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

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΡƒΠ΄ΠΎΠ±Π΅Π½ для:

  • πŸ” Анализа мноТСствСнных Ρ‚ΠΈΠΏΠΎΠ² (Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ)
  • πŸ“‹ ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…)
  • πŸ”„ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ описаний
⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ОписаниСВипов ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БовмСстим()) ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников. ВсСгда тСстируйтС Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
πŸ“Š Какой ΠΌΠ΅Ρ‚ΠΎΠ΄ получСния Ρ‚ΠΈΠΏΠΎΠ² Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‡Π°Ρ‰Π΅?
Π’ΠΈΠΏΠ—Π½Ρ‡()
ОписаниСВипов
Π ΡƒΡ‡Π½ΠΎΠΉ Ρ€Π°Π·Π±ΠΎΡ€ строк
Π”Ρ€ΡƒΠ³ΠΎΠ΅

3. Π Π°Π±ΠΎΡ‚Π° со строковыми описаниями Ρ‚ΠΈΠΏΠΎΠ²

Часто описания Ρ‚ΠΈΠΏΠΎΠ² приходят Π² Π²ΠΈΠ΄Π΅ строк (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², JSON ΠΈΠ»ΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ 1Π‘, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ синтаксис ΠΈ особСнности ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

3.1. Бинтаксис строковых описаний

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ строковых описаний:

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Ρ‚ΠΈΠΏ"Число"Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Ρ‚Π°, Π‘ΡƒΠ»Π΅Π²ΠΎ)
Бсылочный Ρ‚ΠΈΠΏ"БправочникБсылка.НомСнклатура"Бсылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…
Боставной Ρ‚ΠΈΠΏ"Массив[Число]"ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°
ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ"Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°"ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ допустимых Ρ‚ΠΈΠΏΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ"ΠœΠΎΡΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°.МойВип"Π’ΠΈΠΏΡ‹ ΠΈΠ· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ синтаксиса:

  • πŸ“Œ Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ: "Число" ΠΈ "число" β€” Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ
  • πŸ“Œ ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹: Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠΌΠ΅Π½ Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ Бсылка.НомСнклатура" β€” ошибка)
  • πŸ“Œ ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для составных Ρ‚ΠΈΠΏΠΎΠ² ("Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°[Имя:Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ]")

3.2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² Ρ‚ΠΈΠΏ

Для динамичСского создания Ρ‚ΠΈΠΏΠ° ΠΈΠ· строки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

Ѐункция Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’Π’ΠΈΠΏ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°)

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π’ΠΈΠΏΠ—Π½Ρ‡(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°);

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

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, составныС Ρ‚ΠΈΠΏΡ‹ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹

Если Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, "[") > 0 Π’ΠΎΠ³Π΄Π°

// Π›ΠΎΠ³ΠΈΠΊΠ° для Ρ€Π°Π·Π±ΠΎΡ€Π° составных Ρ‚ΠΈΠΏΠΎΠ²

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлСно;

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

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

Для слоТных случаСв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°[Имя:Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Π½Π½Ρ‹Π΅:ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ]") потрСбуСтся парсинг строки с рСкурсивной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ часто ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ΡΡ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, OneScript ΠΈΠ»ΠΈ vanessa-automation).

πŸ’‘

Если Π²Π°ΠΌ часто приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со строковыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, создайтС справочник соотвСтствий (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "Число" β†’ TypeNumber) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ для ΡƒΠ½ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ описаний Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

4. Π Π°Π±ΠΎΡ‚Π° с составными ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ

БоставныС Ρ‚ΠΈΠΏΡ‹ (массивы, структуры, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ особого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ стандартныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π΅ всСгда с Π½ΠΈΠΌΠΈ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ.

4.1. Π Π°Π·Π±ΠΎΡ€ составных Ρ‚ΠΈΠΏΠΎΠ²

Для Ρ‚ΠΈΠΏΠ° "Массив[Число]" функция Π’ΠΈΠΏΠ—Π½Ρ‡() Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ:

  1. Π˜Π·Π²Π»Π΅Ρ‡ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС "Число")
  2. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой массив ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ
  3. Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ элСмСнтов
Ѐункция Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΠ‘ΠΎΡΡ‚Π°Π²Π½ΠΎΠΉΠ’ΠΈΠΏ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°)

Если Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, "Массив[") = 1 Π’ΠΎΠ³Π΄Π°

Π’ΠΈΠΏΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π° = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, 7, Π‘Ρ‚Ρ€Π”Π»ΠΈΠ½Π°(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°) - 8);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Новый ОписаниСВипов("Массив", Π’ΠΈΠΏΠ—Π½Ρ‡(Π’ΠΈΠΏΠ­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°));

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

// Аналогично для Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°[], Π’Π°Π±Π»ΠΈΡ†Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠΉ[] ΠΈ Π΄Ρ€.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ НСопрСдСлСно;

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

4.2. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ

Если Ρ‚ΠΈΠΏ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ внСшнСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π΅Π³ΠΎ описаниС ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ "ΠœΠΎΡΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°.МойВип". Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°ΠΊΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ:

  • πŸ”Œ ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΠ Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅()
  • πŸ“š Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅().Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ…
  • πŸ”„ ΠŸΡ€ΠΈ нСобходимости создайтС ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ:

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ = ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅().Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ˜ΠΌΠ΅Π½ΠΈ("ΠœΠΎΡΠŸΠΎΠ΄ΡΠΈΡΡ‚Π΅ΠΌΠ°");

Если Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ <> НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

Π’ΠΈΠΏΠ˜Π·Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ = Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅.Π’ΠΈΠΏΡ‹.ΠΠ°ΠΉΡ‚ΠΈΠŸΠΎΠ˜ΠΌΠ΅Π½ΠΈ("МойВип");

// Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΈΠΏΠΎΠΌ

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

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ вСсти сСбя нСпрСдсказуСмо ΠΏΡ€ΠΈ сСриализации/дСсСриализации (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· JSON). ВсСгда провСряйтС ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π°.

5. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

Рассмотрим нСсколько Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… сцСнариСв, Π³Π΄Π΅ трСбуСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ описаний Ρ‚ΠΈΠΏΠΎΠ².

5.1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° совмСстимости ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ функция с динамичСски опрСдСляСмыми ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏΠ‘Ρ‚Ρ€ΠΎΠΊΠΎΠΉ)

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ = Π’ΠΈΠΏΠ—Π½Ρ‡(ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏΠ‘Ρ‚Ρ€ΠΎΠΊΠΎΠΉ);

Если НЕ Π’ΠΈΠΏΠ—Π½Ρ‡(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).БовмСстим(ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ) Π’ΠΎΠ³Π΄Π°

Π’Ρ‹Π·Π²Π°Ρ‚ΡŒΠ˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ "НСкоррСктный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…!";

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

// Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

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

5.2. ГСнСрация структуры ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру с Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ:

Π¨Π°Π±Π»ΠΎΠ½ = "Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°[Имя:Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Ρ‚Π°:Π”Π°Ρ‚Π°, Π‘ΡƒΠΌΠΌΠ°:Число]";

Π’ΠΈΠΏΡ‹ΠŸΠΎΠ»Π΅ΠΉ = Π Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒΠ‘ΠΎΡΡ‚Π°Π²Π½ΠΎΠΉΠ’ΠΈΠΏ(Π¨Π°Π±Π»ΠΎΠ½); // ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ функция

НоваяБтруктура = Новый Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°;

Для КаТдого ПолС Из Π’ΠΈΠΏΡ‹ΠŸΠΎΠ»Π΅ΠΉ Π¦ΠΈΠΊΠ»

НоваяБтруктура.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ПолС.Имя, ПолС.Π’ΠΈΠΏ.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠŸΠΎΠ£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ());

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

5.3. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с JSON: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ JSON часто трСбуСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ строковыС Ρ‚ΠΈΠΏΡ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅:

JSONΠ’ΠΈΠΏ = "БправочникБсылка.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹";

Π”Π°Π½Π½Ρ‹Π΅ = ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒJSON(ΠŸΡƒΡ‚ΡŒΠšΠ€Π°ΠΉΠ»Ρƒ);

Если Π’ΠΈΠΏΠ—Π½Ρ‡(JSONΠ’ΠΈΠΏ).БовмСстим(Π’ΠΈΠΏ(Π”Π°Π½Π½Ρ‹Π΅.Бсылка)) Π’ΠΎΠ³Π΄Π°

// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° совмСстимых Π΄Π°Π½Π½Ρ‹Ρ…

Π˜Π½Π°Ρ‡Π΅

// ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ошибка

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

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ строка Π½Π΅ пустая|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ синтаксис описания Ρ‚ΠΈΠΏΠ°|Π£Ρ‡Π΅ΡΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹|ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ-->

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

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

6.1. Ошибки синтаксиса Π² строковых описаниях

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… описаний ΠΈ ΠΈΡ… исправлСния:

ΠžΡˆΠΈΠ±ΠΊΠ°Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°
"справочникссылка.Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π°""БправочникБсылка.НомСнклатура"Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ
"Массив[Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°]""Массив[БоотвСтствиС(Число, Π‘Ρ‚Ρ€ΠΎΠΊΠ°)]"ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ составного Ρ‚ΠΈΠΏΠ°
"ДокумСнтБсылка. Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ""ДокумСнтБсылка.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ"ΠŸΡ€ΠΎΠ±Π΅Π» ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ

6.2. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠΎΠ²

Π”Π°ΠΆΠ΅ Ссли Ρ‚ΠΈΠΏΡ‹ каТутся совмСстимыми, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡ… Π½Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ. НапримСр:

  • πŸ”΄ "Число" ΠΈ "Число(10,2)" β€” Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹
  • πŸ”΄ "БправочникБсылка.НомСнклатура" ΠΈ "Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠžΠ±ΡŠΠ΅ΠΊΡ‚.НомСнклатура" β€” нСсовмСстимы
  • πŸ”΄ "ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ" совмСстим со всСм, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ БовмСстим():

Π’ΠΈΠΏ1 = Π’ΠΈΠΏΠ—Π½Ρ‡("Число");

Π’ΠΈΠΏ2 = Π’ΠΈΠΏΠ—Π½Ρ‡("Число(10,2)");

Если Π’ΠΈΠΏ1.БовмСстим(Π’ΠΈΠΏ2) Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("БовмСстимы!");

Π˜Π½Π°Ρ‡Π΅

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ("НСсовмСстимы!");

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

6.3. Ошибки ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Null

Π’ΠΈΠΏ Null Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ особого внимания:

  • πŸ“Œ Π’ΠΈΠΏ(Null) Π²Π΅Ρ€Π½Π΅Ρ‚ "Null", Π½ΠΎ Π’ΠΈΠΏΠ—Π½Ρ‡("Null") Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ
  • πŸ“Œ НСопрСдСлСно ΠΈ Null β€” Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π² 1Π‘
  • πŸ“Œ Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Null ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Null, Π° Π½Π΅ Π’ΠΈΠΏ(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) = Π’ΠΈΠΏ(Null)
πŸ’‘

ВсСгда провСряйтС строковыС описания Ρ‚ΠΈΠΏΠΎΠ² Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Ошибки Π½Π° этом этапС приводят ΠΊ падСнию ΠΊΠΎΠ΄Π° Π² самых Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Ρ… мСстах.

7. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π Π°Π±ΠΎΡ‚Π° с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, особСнно Π² Ρ†ΠΈΠΊΠ»Π°Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…. Рассмотрим способы ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

7.1. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Если Π²Π°ΠΌ часто трСбуСтся ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ:

ΠŸΠ΅Ρ€Π΅ΠΌ ΠΌΠ’ΠΈΠΏΡ‹ Кэш;

Ѐункция ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ’ΠΈΠΏ(ОписаниСВипа)

Если ΠΌΠ’ΠΈΠΏΡ‹ = НСопрСдСлСно Π’ΠΎΠ³Π΄Π°

ΠΌΠ’ΠΈΠΏΡ‹ = Новый БоотвСтствиС;

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

Если НЕ ΠΌΠ’ΠΈΠΏΡ‹.Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ΠšΠ»ΡŽΡ‡(ОписаниСВипа) Π’ΠΎΠ³Π΄Π°

ΠΌΠ’ΠΈΠΏΡ‹.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(ОписаниСВипа, Π’ΠΈΠΏΠ—Π½Ρ‡(ОписаниСВипа));

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΌΠ’ΠΈΠΏΡ‹[ОписаниСВипа];

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

7.2. ИзбСганиС ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ

НС провСряйтС Ρ‚ΠΈΠΏΡ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ:

  • βœ… НуТно: ΠŸΡ€ΠΈ присваивании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • βœ… НуТно: ΠŸΡ€ΠΈ сСриализации/дСсСриализации
  • ❌ НС Π½ΡƒΠΆΠ½ΠΎ: Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠΎ коллСкциям с ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ
  • ❌ НС Π½ΡƒΠΆΠ½ΠΎ: ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ

7.3. ИспользованиС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…

Если Ρ‚ΠΈΠΏΡ‹ извСстны Π·Π°Ρ€Π°Π½Π΅Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ справочников), ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ ΠΈΡ… ΠΈΠ· ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…:

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

Π­Ρ‚ΠΎ быстрСС, Ρ‡Π΅ΠΌ Ρ€Π°Π·Π±ΠΎΡ€ строковых описаний, ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ².

8. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈ внСшниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Для слоТных Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

8.1. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° OneScript

OneScript прСдоставляСт Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ:

  • πŸ”§ ΠŸΠ°Ρ€ΡΠΈΠ½Π³ слоТных составных Ρ‚ΠΈΠΏΠΎΠ²
  • πŸ”§ Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎ шаблонам
  • πŸ”§ Π‘Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ/Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²

8.2. vanessa-automation для тСстирования

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, vanessa-automation позволяСт:

  • πŸ§ͺ Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ тСстовыС Π½Π°Π±ΠΎΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ
  • πŸ§ͺ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² Π² автоматичСском Ρ€Π΅ΠΆΠΈΠΌΠ΅
  • πŸ§ͺ Π­ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ошибки прСобразования

8.3. Π‘Π°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Для спСцифичСских Π·Π°Π΄Π°Ρ‡ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ собствСнныС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. НапримСр, функция для рСкурсивного Ρ€Π°Π·Π±ΠΎΡ€Π° составных Ρ‚ΠΈΠΏΠΎΠ²:

Ѐункция Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΠ‘Π»ΠΎΠΆΠ½Ρ‹ΠΉΠ’ΠΈΠΏ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°)

// Π›ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π·Π±ΠΎΡ€Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

// "Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°[Имя:Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π”Π°Π½Π½Ρ‹Π΅:Массив[Число]]"

// ...

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ рСкурсивного парсСра

Ѐункция Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΠ‘Π»ΠΎΠΆΠ½Ρ‹ΠΉΠ’ΠΈΠΏ(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°)

Если Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, "[") > 0 Π’ΠΎΠ³Π΄Π°

ОсновнойВип = Π›Π΅Π²(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, "["));

Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ = Π‘Ρ€Π΅Π΄(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, Найти(Π‘Ρ‚Ρ€ΠΎΠΊΠ°Π’ΠΈΠΏΠ°, "[") + 1);

// РСкурсивный Ρ€Π°Π·Π±ΠΎΡ€ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

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

// ...

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

FAQ: ЧастыС вопросы ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² 1Π‘

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° справочника ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅:

Π’ΠΈΠΏΠ Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π° = ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠΈ.Π˜ΠΌΡΠ‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊΠ°.Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹.Π˜ΠΌΡΠ Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Π°.Π’ΠΈΠΏ;

Если Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚ составной (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, табличная Ρ‡Π°ΡΡ‚ΡŒ), ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΅Π³ΠΎ структурС Ρ‡Π΅Ρ€Π΅Π· Π’ΠΈΠΏ.ВипЗначСния.

МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ "Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ" ΠΈΠ· строки?

НСт, Π’ΠΈΠΏΠ—Π½Ρ‡() Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ этом случаС:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ.Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΠ”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚()
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ для дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° β€” Ρ€Π°Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· ОписаниСВипов с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ совмСстимости.

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ ΠΈΠ· JSON Π² Ρ‚ΠΈΠΏ 1Π‘?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ соотвСтствиС Ρ‚ΠΈΠΏΠΎΠ² JSON ΠΈ 1Π‘:

JSON-Ρ‚ΠΈΠΏΠ’ΠΈΠΏ 1Π‘ΠŸΡ€ΠΈΠΌΠ΅Ρ€
numberЧисло10.5
stringΠ‘Ρ‚Ρ€ΠΎΠΊΠ°"тСкст"
arrayМассив[1, 2, 3]
objectΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°{"key": "value"}

Для слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ структуры) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ рСкурсивный ΠΎΠ±Ρ…ΠΎΠ΄.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π’ΠΈΠΏΠ—Π½Ρ‡("Число(10,2)") Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ?

Ѐункция Π’ΠΈΠΏΠ—Π½Ρ‡() Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ числовыС Ρ‚ΠΈΠΏΡ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ "Число" ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ:

Если Π’ΠΈΠΏΠ—Π½Ρ‡(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) = Π’ΠΈΠΏΠ—Π½Ρ‡("Число") И Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ >= 0 И Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ <= 99999999.99 Π’ΠΎΠ³Π΄Π°

// Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ соотвСтствуСт Число(10,2)

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

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ пСрСмСнная содСрТит любой ссылочный Ρ‚ΠΈΠΏ?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‡Π΅Ρ€Π΅Π· Π’ΠΈΠΏΠ—Π½Ρ‡() ΠΈ строковоС сравнСниС:

Ѐункция ЭтоБсылочныйВип(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

Π’ΠΈΠΏ = Π’ΠΈΠΏΠ—Π½Ρ‡(Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅);

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Найти(Π’ΠΈΠΏ.ИмяВипа, "Бсылка") > 0;

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

Для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "БправочникБсылка.").