Ошибка «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β» ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ запрос 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΊΠ°ΠΊ строку β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых распространённых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с языком запросов ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Она Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° систСма Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Запрос Π² строковоС прСдставлСниС ΠΈΠ·-Π·Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² конструкции. Π§Π°Ρ‰Π΅ всСго это связано с нСявными привСдСниями, нСсоотвСтствиСм ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ»ΠΈ синтаксичСскими ошибками Π² тСкстС запроса.

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

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β»?

ΠšΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ кроСтся Π² строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ языка запросов 1Π‘. Когда Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Запрос Π² строку (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ВСкст ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ?), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ всС элСмСнты запроса Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ². Ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Ρ‚Ρ€Ρ‘Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… случаях:

  • πŸ”Ή НСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²: ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π”Π°Ρ‚Π° с Число ΠΈΠ»ΠΈ Π‘Ρ‚Ρ€ΠΎΠΊΡƒ с Π‘ΡƒΠ»Π΅Π²ΠΎ Π±Π΅Π· явного прСобразования.
  • πŸ”Ή ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² запрос ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΠ³Π΄Π° оТидаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ Массив, Π° оТидаСтся БписокЗначСний).
  • πŸ”Ή БинтаксичСскиС ошибки: ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ»Π΅ΠΉ, Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ВЫБРАВЬ вмСсто ВЫБРАВЬ РАЗРЕШЕННЫЕ).

ОсобСнно часто ошибка проявляСтся ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСскими запросами, Π³Π΄Π΅ тСкст формируСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. НапримСр, Ссли Π²Ρ‹ собираСтС строку запроса ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… частСй ΠΈ Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ для строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° воспринимаСт ΠΈΡ… ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

πŸ“Š Как часто Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с ошибками Ρ‚ΠΈΠΏΠΎΠ² Π² 1Π‘?
Часто, это моя головная боль
Иногда, ΠΏΡ€ΠΈ слоТных запросах
Рядом, Π½ΠΎ Ρ€Π΅ΡˆΠ°ΡŽ быстро
Никогда Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π’Π°Π±Π»ΠΈΡ†Π° совмСстимости Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² запросах 1Π‘

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ Π±Π΅Π· явного прСобразования. НиТС прСдставлСна Ρ‚Π°Π±Π»ΠΈΡ†Π° совмСстимости для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых Ρ‚ΠΈΠΏΠΎΠ² Π² языкС запросов:

Π’ΠΈΠΏ 1 Π’ΠΈΠΏ 2 Π‘ΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСобразования
Число Π‘Ρ‚Ρ€ΠΎΠΊΠ° ❌ НСсовмСстимы БВРОКА(123) ΠΈΠ»ΠΈ Π§Π˜Π‘Π›Πž("123")
Π”Π°Ρ‚Π° Π‘Ρ‚Ρ€ΠΎΠΊΠ° βœ… БовмСстимы (с ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ) ЀОРМАВ(Π”Π°Ρ‚Π°, "Π”Π€=dd.MM.yyyy")
Π‘ΡƒΠ»Π΅Π²ΠΎ Число βœ… БовмСстимы (0/1 β†’ Π›ΠΎΠΆΡŒ/Π˜ΡΡ‚ΠΈΠ½Π°) Π•Π‘Π’Π¬NULL(ПолС, 0) = 1
БправочникБсылка Π‘Ρ‚Ρ€ΠΎΠΊΠ° ❌ НСсовмСстимы БВРОКА(Бсылка.НаимСнованиС)
Массив БписокЗначСний ❌ НСсовмСстимы Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π—ΠΠΠ§Π•ΠΠ˜Π•(Бписок)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π΄Π°ΠΆΠ΅ Ссли Ρ‚ΠΈΠΏΡ‹ условно совмСстимы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π”Π°Ρ‚Π° ΠΈ Π‘Ρ‚Ρ€ΠΎΠΊΠ°), ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. ВсСгда провСряйтС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π² запрос Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€().

πŸ’‘

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

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ сцСнарии ошибки ΠΈ ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Рассмотрим 3 самых распространённых случая, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β», ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

1. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π°Ρ‚Ρ‹ с числом ΠΈΠ»ΠΈ строкой

Ошибка появляСтся, Ссли Π² условии Π“Π”Π• Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° Π”Π°Ρ‚Π° со строковым ΠΈΠ»ΠΈ числовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· прСобразования:

ВЫБРАВЬ

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π°

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

Π“Π”Π•

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° = "01.01.2023" // Ошибка: строка vs Π΄Π°Ρ‚Π°

РСшСниС: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π”ΠΠ’ΠΠ’Π Π•ΠœΠ―() ΠΈΠ»ΠΈ ΠΠΠ§ΠΠ›ΠžΠ”ΠΠ―():

ВЫБРАВЬ

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π°

Π˜Π—

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.ΠŸΠΎΡΡ‚ΡƒΠΏΠ»Π΅Π½ΠΈΠ΅Π’ΠΎΠ²Π°Ρ€ΠΎΠ² КАК Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

Π“Π”Π•

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° = Π”ΠΠ’ΠΠ’Π Π•ΠœΠ―(2023, 1, 1)

2. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ Π² запрос ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π° Π² тСкстС запроса оТидаСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. НапримСр:

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

Запрос.ВСкст = "ВЫБРАВЬ Π’ΠΎΠ²Π°Ρ€ Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Π“Π”Π• Π’ΠΎΠ²Π°Ρ€ = &ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€", 123); // Ошибка: число vs ссылка Π½Π° справочник

РСшСниС: ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ:

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

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€", БсылкаНаВовар);

3. НСявноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² выраТСниях

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π‘ΡƒΠ»Π΅Π²ΠΎ Π² Число ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. НапримСр:

ВЫБРАВЬ

Π•Π‘Π’Π¬NULL(ПолС.Π€Π»Π°Π³, Π›ΠΎΠΆΡŒ) + 1 // Ошибка: Π‘ΡƒΠ»Π΅Π²ΠΎ + Число

РСшСниС: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ с Π’Π«Π ΠΠ—Π˜Π’Π¬():

ВЫБРАВЬ

Π’Π«Π ΠΠ—Π˜Π’Π¬(Π•Π‘Π’Π¬NULL(ПолС.Π€Π»Π°Π³, Π›ΠΎΠΆΡŒ) КАК Π§Π˜Π‘Π›Πž) + 1

Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ|ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ синтаксис Π½Π° ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² ΠΈΠΌΠ΅Π½Π°Ρ… ΠΏΠΎΠ»Π΅ΠΉ|Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явныС прСобразования Ρ‚ΠΈΠΏΠΎΠ² (БВРОКА(), Π§Π˜Π‘Π›Πž(), Π”ΠΠ’ΠΠ’Π Π•ΠœΠ―())|Π’Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запрос Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ тСкста запроса-->

Как Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ: пошаговая инструкция

Если Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ошибкой «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β», слСдуйтС этому Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ для Π΅Ρ‘ устранСния:

  1. Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ тСкст запроса:

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ВСкст ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ?, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ строку запроса:

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Запрос.ВСкст);

    Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ синтаксичСскиС ошибки ΠΈΠ»ΠΈ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹.

  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

    Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€(), Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π’ΠΈΠΏΠ—Π½Ρ‡():

    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π’ΠΈΠΏΠ—Π½Ρ‡(ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€1));
  3. Π Π°Π·Π±Π΅ΠΉΡ‚Π΅ запрос Π½Π° части:

    Если запрос слоТный, тСстируйтС Π΅Π³ΠΎ ΠΏΠΎ частям. НапримСр, сначала Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ Π±Π΅Π· условий, Π·Π°Ρ‚Π΅ΠΌ добавляйтС условия ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ.

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚Π΅ динамичСски Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ запросам. Если тСкст запроса собираСтся ΠΈΠ· строковых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ:

  • πŸ”Ή ВсС строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚Ρ‹ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ.
  • πŸ”Ή ИмСна ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ† написаны ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (рСгистр Π½Π΅ Π²Π°ΠΆΠ΅Π½, Π½ΠΎ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹).
  • πŸ”Ή ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· &Π˜ΠΌΡΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π° Π½Π΅ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠ΅ΠΉ строк.
Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия?

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ошибка проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅, Π½ΠΎ Π½Π΅ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ:

1. Π’ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ упрощённая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ².

2. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасности ΠΈ совмСстимости.

РСшСниС: тСстируйтС запрос Π² ΠΎΠ±ΠΎΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для ΠΎΡ‚Π»ΠΎΠ²Π° ошибок.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ прСобразования запроса Π² строку

Рассмотрим нСсколько практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ запрос ΠΊΠ°ΠΊ строку Π±Π΅Π· ошибок Ρ‚ΠΈΠΏΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ запрос с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ

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

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

"ВЫБРАВЬ

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

| Π’ΠΎΠ²Π°Ρ€.Артикул КАК Артикул

|Π˜Π—

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

|Π“Π”Π•

| Π’ΠΎΠ²Π°Ρ€.Π­Ρ‚ΠΎΠ“Ρ€ΡƒΠΏΠΏΠ° = &Π­Ρ‚ΠΎΡ‚ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π­Ρ‚ΠΎΡ‚ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€", Π›ΠΎΠΆΡŒ); // Π‘ΡƒΠ»Π΅Π²ΠΎ

ВСкстЗапроса = Запрос.ВСкст; // ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² строку Π±Π΅Π· ошибок

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Запрос с Π΄Π°Ρ‚Π°ΠΌΠΈ

ДатаНачала = НачалоДня(ВСкущаяДата());

Π”Π°Ρ‚Π°ΠšΠΎΠ½Ρ†Π° = ΠšΠΎΠ½Π΅Ρ†Π”Π½Ρ(ВСкущаяДата());

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

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

"ВЫБРАВЬ

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.НомСр КАК НомСр

|Π˜Π—

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

|Π“Π”Π•

| Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.Π”Π°Ρ‚Π° ΠœΠ•Π–Π”Π£ &ДатаНачала И &Π”Π°Ρ‚Π°ΠšΠΎΠ½Ρ†Π°";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("ДатаНачала", ДатаНачала);

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

Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Запрос.ВСкст);

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: ДинамичСский запрос с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Ρ‚ΠΈΠΏΠΎΠ²

Π’ΠΈΠΏΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° = Π’ΠΈΠΏΠ—Π½Ρ‡(ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠŸΠΎΠΈΡΠΊΠ°);

Если Π’ΠΈΠΏΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° = Π’ΠΈΠΏ("Π‘Ρ‚Ρ€ΠΎΠΊΠ°") Π’ΠΎΠ³Π΄Π°

Запрос.ВСкст = "ВЫБРАВЬ НаимСнованиС Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Π“Π”Π• НаимСнованиС ΠŸΠžΠ”ΠžΠ‘ΠΠž &Π‘Ρ‚Ρ€ΠΎΠΊΠ°";

Запрос.Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€("Π‘Ρ‚Ρ€ΠΎΠΊΠ°", "%" + ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠŸΠΎΠΈΡΠΊΠ° + "%");

Π˜Π½Π°Ρ‡Π΅Π•ΡΠ»ΠΈ Π’ΠΈΠΏΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° = Π’ΠΈΠΏ("Число") Π’ΠΎΠ³Π΄Π°

Запрос.ВСкст = "ВЫБРАВЬ Артикул Π˜Π— Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура Π“Π”Π• Артикул = &Число";

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

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

πŸ’‘

ВсСгда провСряйтС Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΈΡ… Π² запрос. Π”Π°ΠΆΠ΅ Ссли ошибка Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ прСдприятия ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Ошибки, связанныС с вСрсиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘

ПовСдСниС систСмы ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ 1Π‘:ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅. НапримСр:

  • πŸ”Ή Π’ вСрсии 8.3.10 ΠΈ Π½ΠΈΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСявныС прСобразования Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π»ΠΈΡΡŒ, Π½ΠΎ начиная с 8.3.12 ΠΎΠ½ΠΈ стали Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
  • πŸ”Ή Π’ 8.3.18+ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ (Π’Π˜ΠŸΠ—ΠΠΠ§Π•ΠΠ˜Π―(), ΠŸΠ Π•ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠ’Π¬()).

Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с унаслСдованными конфигурациями, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ:

  • πŸ”Ή Запросы, написанныС для старых вСрсий, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ послС обновлСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.
  • πŸ”Ή НовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π’Π«Π ΠΠ—Π˜Π’Π¬()) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны Π² старых Ρ€Π΅Π»ΠΈΠ·Π°Ρ….
πŸ’‘

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости ΠΊΠΎΠ΄Π° с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ вСрсиями ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ‚ΠΎΡ€ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстимости. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ Π² настройках запуска (ΠžΡ‚Π»Π°Π΄ΠΊΠ° β†’ Настройка β†’ ВСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹).

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Если Π²Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, тСстируйтС запросы Π½Π° минимально ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ вСрсии. НСкоторыС синтаксичСскиС конструкции (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ВЫБРАВЬ Π ΠΠ—Π›Π˜Π§ΠΠ«Π•) ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² старых Ρ€Π΅Π»ΠΈΠ·Π°Ρ….

FAQ: ЧастыС вопросы ΠΏΠΎ ошибкС «НСсовмСстимыС Ρ‚ΠΈΠΏΡ‹Β»

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запроса, Π° Π½Π΅ ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании?

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° 1Π‘ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² Π½Π° этапС компиляции запроса, Π° Π½Π΅ ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ошибка проявится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ:

  • Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос (Запрос.Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ()).
  • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ тСкст (Запрос.ВСкст).
  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ нСсовмСстимого Ρ‚ΠΈΠΏΠ°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, всСгда провСряйтС тСкст запроса ΠΈ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎ выполнСния.

Как ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, число ΠΈ строку)?

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

  • БВРОКА(Число) β€” для прСобразования числа Π² строку.
  • Π§Π˜Π‘Π›Πž(Π‘Ρ‚Ρ€ΠΎΠΊΠ°) β€” для прСобразования строки Π² число (Ссли строка содСрТит числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).
  • Π”ΠΠ’ΠΠ’Π Π•ΠœΠ―(Π“ΠΎΠ΄, ΠœΠ΅ΡΡΡ†, Π”Π΅Π½ΡŒ) β€” для создания Π΄Π°Ρ‚Ρ‹ ΠΈΠ· чисСл.

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

Π“Π”Π• БВРОКА(ПолС.ЧисловоСЗначСниС) = &Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€
МоТно Π»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² Π² запросах?

НСт, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² β€” это Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° бСзопасности ΠΈ коррСктности Ρ€Π°Π±ΠΎΡ‚Ρ‹ 1Π‘. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ°...Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок.
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ Π’Π«Π ΠΠ—Π˜Π’Π¬() для Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ прСобразования.
  • Π’ старых вСрсиях ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Π΄ΠΎ 8.3.10) Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π»ΠΈ ΠΌΠ΅Π½Π΅Π΅ строгими, Π½ΠΎ это Π½Π΅ рСкомСндуСтся для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Ρ‹Π·Π²Π°Π» ΠΎΡˆΠΈΠ±ΠΊΡƒ?

Если запрос содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:

  1. Π£Π΄Π°Π»ΠΈΡ‚Π΅ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· запроса ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, выполняСтся Π»ΠΈ ΠΎΠ½.
  2. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· провСряя Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
  3. Когда ошибка появится снова, Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π²ΠΈΠ½ΠΎΠ²Π½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст запроса с подставлСнными ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (Ρ‡Π΅Ρ€Π΅Π· Запрос.Π’Π΅ΠΊΡΡ‚Π—Π°ΠΏΡ€ΠΎΡΠ°Π‘ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅).

ВлияСт Π»ΠΈ рСгистр Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² Π² запросах?

НСт, рСгистр Π½Π΅ влияСт Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ², Π½ΠΎ влияСт Π½Π°:

  • ИмСна Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΏΠΎΠ»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ.НомСнклатура ΠΈ справочник.Π½ΠΎΠΌΠ΅Π½ΠΊΠ»Π°Ρ‚ΡƒΡ€Π° β€” это ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅).
  • ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова языка запросов (ВЫБРАВЬ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ β€” ΠΎΠ±Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚).

Однако для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ читаСмости ΠΊΠΎΠ΄Π° рСкомСндуСтся ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова β€” Π·Π°Π³Π»Π°Π²Π½Ρ‹ΠΌΠΈ, ΠΈΠΌΠ΅Π½Π° ΠΏΠΎΠ»Π΅ΠΉ β€” ΠΊΠ°ΠΊ Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…).