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

ΠœΡ‹ рассмотрим Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис, Π½ΠΎ ΠΈ практичСскиС сцСнарии: ΠΎΡ‚ простого чтСния свойств Π΄ΠΎ динамичСского создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² runtime. ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ β€” ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° с опрСдСляСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ влияСт Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΊΠΎΠ΄Π°, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… стоит Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ошибками Π²Ρ€ΠΎΠ΄Π΅ "НСдопустимоС использованиС опрСдСляСмого Ρ‚ΠΈΠΏΠ°" ΠΈΠ»ΠΈ "Π’ΠΈΠΏ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°", здСсь Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ систСмноС объяснСниС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈ способы ΠΈΡ… устранСния.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ опрСдСляСмый Ρ‚ΠΈΠΏ Π² 1Π‘ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ (Determinable Type) Π² 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ 8 β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, структура ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСтся динамичСски Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ статичСских Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, БправочникБсылка.НомСнклатура), опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ Π½Π΅ привязаны ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π² зависимости ΠΎΡ‚ контСкста.

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

  • πŸ”Ή Π Π°Π±ΠΎΡ‚Π° с внСшними систСмами: ΠΊΠΎΠ³Π΄Π° структура Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Ρ€Π°Π½Π΅Π΅ нСизвСстна (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с API, Π³Π΄Π΅ ΠΎΡ‚Π²Π΅Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ).
  • πŸ”Ή Π“ΠΈΠ±ΠΊΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹: ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников с Ρ€Π°Π·Π½ΠΎΠΉ структурой.
  • πŸ”Ή ДинамичСскиС Ρ„ΠΎΡ€ΠΌΡ‹: ΠΊΠΎΠ³Π΄Π° интСрфСйс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄ Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ настройки систСмы.
  • πŸ”Ή ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ: ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ старыС вСрсии ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ структурой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объявлСния опрСдСляСмого Ρ‚ΠΈΠΏΠ° Π² ΠΊΠΎΠ΄Π΅:

ΠŸΠ΅Ρ€Π΅ΠΌ ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π’ΠΈΠΏ ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉ; // ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ опрСдСляСмого Ρ‚ΠΈΠΏΠ°

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("БправочникБсылка.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹"); // ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ опрСдСляСмый Ρ‚ΠΈΠΏ β€” это Π½Π΅ просто "ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Π°Ρ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ°", Π° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ со своими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ свойствами. Π•Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΅ΠΌΡƒ присвоСн Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

πŸ“Š Как часто Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ Π² 1Π‘?
ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅
Иногда, для спСцифичных Π·Π°Π΄Π°Ρ‡
Π Π΅Π΄Π΅, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½Π΅Ρ‚ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹
Никогда нС использовал

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ синтаксис: ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ опрСдСляСмого Ρ‚ΠΈΠΏΠ° внСшнС ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ со статичСскими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π½ΠΎ Π΅ΡΡ‚ΡŒ критичСскиС различия. Рассмотрим основныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ свойство ΠΈΠ»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, всСгда провСряйтС, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ присвоСн ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки Π²ΠΈΠ΄Π° "Π’ΠΈΠΏ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ свойства":

Если Π’ΠΈΠΏΠ—Π½Ρ‡(ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚) = Π’ΠΈΠΏ("БправочникБсылка.НомСнклатура") Π’ΠΎΠ³Π΄Π°

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.НаимСнованиС); // БСзопасноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅

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

2. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ? для бСзопасного доступа

Π’ соврСмСнных вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (8.3.14+) поддСрТиваСтся бСзопасный доступ ΠΊ свойствам Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ?:

НаимСнованиС = ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚?.НаимСнованиС; // Π’Π΅Ρ€Π½Π΅Ρ‚ НСопрСдСлСно, Ссли свойства Π½Π΅Ρ‚

3. ДинамичСскоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ()

Если имя свойства ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°Ρ€Π°Π½Π΅Π΅ нСизвСстно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ():

Π˜ΠΌΡΠ‘Π²ΠΎΠΉΡΡ‚Π²Π° = "НаимСнованиС";

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ("ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚." + Π˜ΠΌΡΠ‘Π²ΠΎΠΉΡΡ‚Π²Π°);

πŸ’‘

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с опрСдСляСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π² Ρ†ΠΈΠΊΠ»Π°Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΊΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π’ΠΈΠΏΠ—Π½Ρ‡() Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ ускорит Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° 15-30%.

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

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

Ошибка ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° РСшСниС
"НСдопустимоС использованиС опрСдСляСмого Ρ‚ΠΈΠΏΠ°" ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСсовмСстимого Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Число Π² БправочникБсылка) Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ
"Π’ΠΈΠΏ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°" Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅Ρ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ‚ΠΈΠΏΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠΉΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· Π’ΠΈΠΏΠ—Π½Ρ‡(ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚).ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹().Найти("Π˜ΠΌΡΠœΠ΅Ρ‚ΠΎΠ΄Π°")
НСкоррСктноС сравнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ссылкС вмСсто сравнСния ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ(Π”Ρ€ΡƒΠ³ΠΎΠΉΠžΠ±ΡŠΠ΅ΠΊΡ‚) ΠΈΠ»ΠΈ ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€()
Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти НСосвобоТдСниС ссылок Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ опрСдСляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π―Π²Π½ΠΎ присваивайтС НСопрСдСлСно Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ

ОсобСнно ΠΊΠΎΠ²Π°Ρ€Π½Π° ошибка с нСявным ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ². НапримСр, этот ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("Число");

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = "Π‘Ρ‚Ρ€ΠΎΠΊΠ°"; // ΠžΠ¨Π˜Π‘ΠšΠ! НСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°");

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = "Новая строка"; // Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

ΠŸΠΎΡ‡Π΅ΠΌΡƒ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок опрСдСляСмых Ρ‚ΠΈΠΏΠΎΠ²?

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² 1Π‘ ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π΄ΠΎ 100мс Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "НСдопустимоС использованиС Ρ‚ΠΈΠΏΠ°") Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Ρ‹ Π² Π±Π»ΠΎΠΊΠ΅ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΠ·-Π·Π° особСнностСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ 1Π‘.

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ: динамичСскоС созданиС ΠΈ модификация

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΈ динамичСски ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ структурой. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для:

  • πŸ”§ Π“Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ тСстовых Π΄Π°Π½Π½Ρ‹Ρ…
  • πŸ”§ Боздания Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… вычислСний
  • πŸ”§ Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° "Π€Π°Π±Ρ€ΠΈΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²"

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ динамичСского создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ опрСдСляСмый Ρ‚ΠΈΠΏ Π½Π° основС структуры

ΠΌΠ’ΠΈΠΏ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°");

ΠΌΠ’ΠΈΠΏ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("НаимСнованиС", Π’ΠΈΠΏ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°"));

ΠΌΠ’ΠΈΠΏ.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", Π’ΠΈΠΏ("Число"));

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ экзСмпляр

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠΌΠ’ΠΈΠΏ;

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.НаимСнованиС = "Π’ΠΎΠ²Π°Ρ€ 1";

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ = 10;

Для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚() ΠΈ Π£Π΄Π°Π»ΠΈΡ‚ΡŒΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚():

ΠΌΠ’ΠΈΠΏ.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚("Π¦Π΅Π½Π°", Π’ΠΈΠΏ("Число"), "10,2"); // ДобавляСм Π½ΠΎΠ²ΠΎΠ΅ свойство с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

βœ… Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ имя Ρ‚ΠΈΠΏΠ° сущСствуСт Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…

βœ… ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа ΠΊ Ρ‚ΠΈΠΏΡƒ

βœ… Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹

βœ… ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ создании-->

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΊΠΎΠ³Π΄Π° опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ тормозят систСму

НСсмотря Π½Π° Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

  1. 🐒 ПозднСС связываниС: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² происходит Π²ΠΎ врСмя выполнСния, Π° Π½Π΅ Π½Π° этапС компиляции.
  2. 🐒 Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ: ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° постоянно ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ².
  3. 🐒 Π£Ρ‚Π΅Ρ‡ΠΊΠΈ памяти: нСосвобоТдСнныС опрСдСляСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΊΡƒΡ‡Π΅.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (тСст Π½Π° 10 000 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ):

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ БтатичСский Ρ‚ΠΈΠΏ (мс) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ (мс)
Π§Ρ‚Π΅Π½ΠΈΠ΅ свойства 12 45
Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° 18 72
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² 8 33

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • πŸš€ ЗамСняйтС опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ статичСскими Ρ‚Π°ΠΌ, Π³Π΄Π΅ структура Π΄Π°Π½Π½Ρ‹Ρ… извСстна Π·Π°Ρ€Π°Π½Π΅Π΅.
  • πŸš€ ΠšΡΡˆΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π’ΠΈΠΏΠ—Π½Ρ‡() Π² Ρ†ΠΈΠΊΠ»Π°Ρ….
  • πŸš€ Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… опрСдСляСмых Ρ‚ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, коллСкция опрСдСляСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²).
πŸ’‘

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ нСизвСстной структуры ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹. Если структура фиксирована ΠΈ обрабатываСтся часто β€” создайтС спСциализированный класс.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ систСмами: JSON, XML, REST API

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с внСшними Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π³Π΄Π΅ структура ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Рассмотрим Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии:

1. ΠŸΠ°Ρ€ΡΠΈΠ½Π³ JSON с нСизвСстной структурой

ΠΌΠ”Π°Π½Π½Ρ‹Π΅ = Новый Π§Ρ‚Π΅Π½ΠΈΠ΅JSON;

ΠΌΠ”Π°Π½Π½Ρ‹Π΅.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ(ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒJSONИзAPI());

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = ΠΌΠ”Π°Π½Π½Ρ‹Π΅.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ(); // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ опрСдСляСмый Ρ‚ΠΈΠΏ

// ДинамичСский ΠΎΠ±Ρ…ΠΎΠ΄ свойств

Для КаТдого мБвойство Из ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Бвойства() Π¦ΠΈΠΊΠ»

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(мБвойство.Имя + ": " + ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚[мБвойство.Имя]);

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

2. ГСнСрация XML для ΠΎΠ±ΠΌΠ΅Π½Π°

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°");

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π”Π°Ρ‚Π°", ВСкущаяДата());

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹", Новый Массив);

ΠΌΠ—Π°ΠΏΠΈΡΡŒXML = Новый Π—Π°ΠΏΠΈΡΡŒXML;

ΠΌΠ—Π°ΠΏΠΈΡΡŒXML.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠ‘Ρ‚Ρ€ΠΎΠΊΡƒ();

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = ΠΌΠ—Π°ΠΏΠΈΡΡŒXML.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ();

3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² REST API

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с API часто приходится ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹, Π³Π΄Π΅ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π³ΠΈΠ±ΠΊΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ случаи:

ΠΌΠžΡ‚Π²Π΅Ρ‚ = Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒHTTPЗапрос("https://api.example.com/data");

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = JSON.ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ(ΠΌΠžΡ‚Π²Π΅Ρ‚.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ’Π΅ΠΊΡΡ‚());

// БСзопасноС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… свойств

Π˜ΠΌΡΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ = ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚?.Π”Π°Π½Π½Ρ‹Π΅?.ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ?.Имя ?? "НСизвСстно";

πŸ’‘

ΠŸΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ всСгда фиксируйтС Π²Π΅Ρ€ΡΠΈΡŽ структуры Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ коммСнтариях. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ измСнСния ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹: ΠΊΠΎΠ³Π΄Π° опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ (ΠΈ Π½ΡƒΠΆΠ½ΠΎ) Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅:

1. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ БоотвСтствиС

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° простая коллСкция ΠΏΠ°Ρ€ "ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅" Π±Π΅Π· слоТной Π»ΠΎΠ³ΠΈΠΊΠΈ:

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

ΠΌΠ”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("НаимСнованиС", "Π’ΠΎΠ²Π°Ρ€ 1");

ΠΌΠ”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π¦Π΅Π½Π°", 1000);

2. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ значСния

Для хранСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ сСриализации:

ΠΌΠ₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ = Новый Π₯ранилищСЗначСния(ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚);

ΠΌΠ’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉΠžΠ±ΡŠΠ΅ΠΊΡ‚ = ΠΌΠ₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ();

3. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ классы

Если Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ слоТная, Π»ΡƒΡ‡ΡˆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс:

ΠŸΠ΅Ρ€Π΅ΠΌ ΠΌΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ”Π°Π½Π½Ρ‹Ρ…;

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠŸΡ€ΠΈΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠΈΠžΠ±ΡŠΠ΅ΠΊΡ‚Π°()

ΠΌΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ”Π°Π½Π½Ρ‹Ρ… = Новый ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ”Π°Π½Π½Ρ‹Ρ…ΠšΠ»ΠΈΠ΅Π½Ρ‚Π°();

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

4. Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с динамичСскими ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ нСизвСстной структуры:

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

ΠΌΠ’Π°Π±Π»ΠΈΡ†Π°.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("НаимСнованиС", Новый ОписаниСВипов("Π‘Ρ‚Ρ€ΠΎΠΊΠ°"));

ΠΌΠ’Π°Π±Π»ΠΈΡ†Π°.Колонки.Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ", Новый ОписаниСВипов("Число"));

πŸ’‘

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°: Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π½Π° этапС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹. Если Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π½ΡƒΠΆΠ½Π° Π½Π° этапС выполнСния (runtime) β€” рассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹.

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

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ опрСдСляСмыС Ρ‚ΠΈΠΏΡ‹ Π² запросах 1Π‘?

НСт, Π² языкС запросов 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ нСльзя Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с опрСдСляСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  1. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ опрСдСляСмый Ρ‚ΠΈΠΏ Π² структуру ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π² запрос.
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  3. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ссли Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с динамичСской структурой.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСобразования:

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

Для КаТдого мБвойство Из ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Бвойства() Π¦ΠΈΠΊΠ»

ΠΌΠ”Π°Π½Π½Ρ‹Π΅.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ(мБвойство.Имя, ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚[мБвойство.Имя]);

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

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ опрСдСляСмый Ρ‚ΠΈΠΏ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрном взаимодСйствии?

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π½ΡŽΠ°Π½ΡΡ‹:

  • πŸ”Έ На сСрвСрС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ зарСгистрирован Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² опрСдСляСмом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.
  • πŸ”Έ ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ сСти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сСриализуСтся, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • πŸ”Έ Для слоТных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π₯ранилищСЗначСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

&НаБСрвСрС

Ѐункция ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅()

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("БправочникБсылка.НомСнклатура");

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚;

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

&ΠΠ°ΠšΠ»ΠΈΠ΅Π½Ρ‚Π΅

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Команда1()

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΠ”Π°Π½Π½Ρ‹Π΅(); // Ошибки Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ссли Ρ‚ΠΈΠΏ зарСгистрирован

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ сравнСнии Π΄Π²ΡƒΡ… опрСдСляСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² всСгда возвращаСтся Π›ΠΎΠΆΡŒ?

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ссылкС, Π° Π½Π΅ ΠΏΠΎ содСрТимому. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π½ΡƒΠΆΠ½ΠΎ:

  1. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнСния.
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² строку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· JSON).
  3. Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ свойства Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ сравнСния:

Ѐункция Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹(ΠžΠ±ΡŠΠ΅ΠΊΡ‚1, ΠžΠ±ΡŠΠ΅ΠΊΡ‚2)

Если Π’ΠΈΠΏΠ—Π½Ρ‡(ΠžΠ±ΡŠΠ΅ΠΊΡ‚1) <> Π’ΠΈΠΏΠ—Π½Ρ‡(ΠžΠ±ΡŠΠ΅ΠΊΡ‚2) Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

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

Для КаТдого мБвойство Из ΠžΠ±ΡŠΠ΅ΠΊΡ‚1.Бвойства() Π¦ΠΈΠΊΠ»

Если ΠžΠ±ΡŠΠ΅ΠΊΡ‚1[мБвойство.Имя] <> ΠžΠ±ΡŠΠ΅ΠΊΡ‚2[мБвойство.Имя] Π’ΠΎΠ³Π΄Π°

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π›ΠΎΠΆΡŒ;

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

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π˜ΡΡ‚ΠΈΠ½Π°;

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

Как ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ с опрСдСляСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ?

ΠžΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π° с опрСдСляСмыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТной ΠΈΠ·-Π·Π° динамичСской ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ΠΎΡ‚ нСсколько совСтов:

  • πŸ› Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π’ΠΈΠΏΠ—Π½Ρ‡(ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚)) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°.
  • πŸ› Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚Π΅ всС свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ»:
  • Для КаТдого мБвойство Из ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Бвойства() Π¦ΠΈΠΊΠ»
    

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(мБвойство.Имя + ": " + ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚[мБвойство.Имя]);

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

  • πŸ› Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ΅ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° (ЖурналРСгистрации) для отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ².
  • πŸ› Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ останова с условиСм Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°:
  • Если Π’ΠΈΠΏΠ—Π½Ρ‡(ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚) <> ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉΠ’ΠΈΠΏ Π’ΠΎΠ³Π΄Π°
    

    ΠŸΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ;

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

Для слоТных случаСв ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, которая эмулируСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ сцСнарий с ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.

МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ опрСдСляСмый Ρ‚ΠΈΠΏ Π½Π° основС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²?

Π”Π°, Π½ΠΎ с ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ опрСдСляСмый Ρ‚ΠΈΠΏ Π½Π° основС Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².
  2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ β€” ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².
  3. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ "Миксин" (Mixin) Ρ‡Π΅Ρ€Π΅Π· динамичСскоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚ = Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°");

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚", Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π—Π°ΠΊΠ°Π·ΠŸΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Ρ"));

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ("ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚", Новый ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡ‹ΠΉΠ’ΠΈΠΏ("БправочникБсылка.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚Ρ‹"));

// ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойствам Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° = ВСкущаяДата();

ΠΌΠžΠ±ΡŠΠ΅ΠΊΡ‚.ΠšΠΎΠ½Ρ‚Ρ€Π°Π³Π΅Π½Ρ‚.НаимСнованиС = "ООО Π ΠΎΠ·Π½ΠΈΡ†Π°";

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², сохраняя ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ структурой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.