diff --git a/build.gradle.kts b/build.gradle.kts
index 2aa1a6016ed..978e463ab56 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -73,7 +73,7 @@ dependencies {
api("org.eclipse.lsp4j", "org.eclipse.lsp4j.websocket", "0.17.0")
// 1c-syntax
- api("com.github.1c-syntax", "bsl-parser", "167aaad827322e09ccde4658a71152dad234de4b") {
+ api("com.github.ovcharenko-di", "bsl-parser", "feature~externalSource-SNAPSHOT") {
exclude("com.tunnelvisionlabs", "antlr4-annotations")
exclude("com.ibm.icu", "*")
exclude("org.antlr", "ST4")
diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/QueryToMissingMetadataDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/QueryToMissingMetadataDiagnosticTest.java
index 72352cd4404..441557602c9 100644
--- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/QueryToMissingMetadataDiagnosticTest.java
+++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/QueryToMissingMetadataDiagnosticTest.java
@@ -49,8 +49,12 @@ void test() {
4, 18, 55)
.hasMessageOnRange("Исправьте обращение к несуществующему метаданному \"РегистрСведений.УдалитьИмяРегистра\" в запросе",
19, 40, 74)
+ .hasMessageOnRange("Исправьте обращение к несуществующему метаданному \"ВнешнийИсточникДанных.ВнешнийИсточникДанных2\" в запросе",
+ 50, 18, 62)
+ .hasMessageOnRange("Исправьте обращение к несуществующему метаданному \"ВнешнийИсточникДанных.ВнешнийИсточникДанных2\" в запросе",
+ 66, 18, 62)
- .hasSize(2);
+ .hasSize(4);
}
diff --git a/src/test/resources/diagnostics/QueryToMissingMetadataDiagnostic.bsl b/src/test/resources/diagnostics/QueryToMissingMetadataDiagnostic.bsl
index 4633a42f133..de6c053997a 100644
--- a/src/test/resources/diagnostics/QueryToMissingMetadataDiagnostic.bsl
+++ b/src/test/resources/diagnostics/QueryToMissingMetadataDiagnostic.bsl
@@ -37,3 +37,32 @@
| РегистрСведений.рЕГИСТРСведений1 КАК Таблица"; // не ошибка
Запрос2.Выполнить();
+Запрос1 = Новый Запрос;
+Запрос1.Текст = "ВЫБРАТЬ
+ | Таблица1.Поле1 КАК Поле1
+ |ИЗ
+ | ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.Таблица1 КАК Таблица1"; // не ошибка
+Запрос1.Выполнить();
+
+Запрос2 = Новый Запрос;
+Запрос2.Текст = "ВЫБРАТЬ
+ | Таблица1.Поле1 КАК Поле1
+ |ИЗ
+ | ВнешнийИсточникДанных.ВнешнийИсточникДанных2.Таблица.Таблица1 КАК Таблица1"; // ошибка
+Запрос2.Выполнить();
+
+ИмяТаблицы = "Таблица10";
+Запрос3 = Новый Запрос;
+Запрос3.Текст = "ВЫБРАТЬ
+ | Таблица1.Поле1 КАК Поле1
+ |ИЗ
+ | ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица." + ИмяТаблицы + " КАК Таблица1"; // не ошибка
+Запрос3.Выполнить();
+
+ИмяТаблицы = "Таблица10";
+Запрос4 = Новый Запрос;
+Запрос4.Текст = "ВЫБРАТЬ
+ | Таблица1.Поле1 КАК Поле1
+ |ИЗ
+ | ВнешнийИсточникДанных.ВнешнийИсточникДанных2.Таблица." + ИмяТаблицы + " КАК Таблица1"; // ошибка
+Запрос4.Выполнить();
diff --git a/src/test/resources/metadata/designer/Configuration.xml b/src/test/resources/metadata/designer/Configuration.xml
index 1e14bdca9c8..ce5d5aaa993 100644
--- a/src/test/resources/metadata/designer/Configuration.xml
+++ b/src/test/resources/metadata/designer/Configuration.xml
@@ -208,6 +208,7 @@
РегламентноеЗаданиеНесуществующийМетод
РегламентноеЗаданиеПриватныйМетод
РегламентноеЗаданиеПредопределенноеНесколькоПараметров
+ ВнешнийИсточникДанных1
\ No newline at end of file
diff --git "a/src/test/resources/metadata/designer/ExternalDataSources/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\230\321\201\321\202\320\276\321\207\320\275\320\270\320\272\320\224\320\260\320\275\320\275\321\213\321\2051.xml" "b/src/test/resources/metadata/designer/ExternalDataSources/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\230\321\201\321\202\320\276\321\207\320\275\320\270\320\272\320\224\320\260\320\275\320\275\321\213\321\2051.xml"
new file mode 100644
index 00000000000..9a76c5c5a7d
--- /dev/null
+++ "b/src/test/resources/metadata/designer/ExternalDataSources/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\230\321\201\321\202\320\276\321\207\320\275\320\270\320\272\320\224\320\260\320\275\320\275\321\213\321\2051.xml"
@@ -0,0 +1,28 @@
+
+
+
+
+
+ 1af090bf-8bc3-43d6-abf7-0f7185073f81
+ 3c3a22d1-7a71-4fab-93d5-373d807ce245
+
+
+ 4184dd6b-60b5-4353-afe9-476050c8207a
+ aa4ec83e-cecb-4abe-b314-8a279f3b8730
+
+
+ f1a6fe6f-90ac-4e17-86d0-9a700091d95a
+ 16a8e401-e884-41d8-857a-7fa4456315f7
+
+
+
+ ВнешнийИсточникДанных1
+
+
+ Automatic
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/src/test/resources/metadata/designer/ExternalDataSources/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\230\321\201\321\202\320\276\321\207\320\275\320\270\320\272\320\224\320\260\320\275\320\275\321\213\321\2051/Tables/\320\242\320\260\320\261\320\273\320\270\321\206\320\2601.xml" "b/src/test/resources/metadata/designer/ExternalDataSources/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\230\321\201\321\202\320\276\321\207\320\275\320\270\320\272\320\224\320\260\320\275\320\275\321\213\321\2051/Tables/\320\242\320\260\320\261\320\273\320\270\321\206\320\2601.xml"
new file mode 100644
index 00000000000..b3bd207fdbb
--- /dev/null
+++ "b/src/test/resources/metadata/designer/ExternalDataSources/\320\222\320\275\320\265\321\210\320\275\320\270\320\271\320\230\321\201\321\202\320\276\321\207\320\275\320\270\320\272\320\224\320\260\320\275\320\275\321\213\321\2051/Tables/\320\242\320\260\320\261\320\273\320\270\321\206\320\2601.xml"
@@ -0,0 +1,121 @@
+
+
+
+
+
+ f293cd9a-813b-4871-b1e7-5219e98cc704
+ 3b51e46e-d56b-489e-a480-2c6a40e61c7f
+
+
+ 45681edf-cf03-457a-91ec-900dcaf93300
+ a1a09e26-2a36-4025-b5cf-4584c6a2cb13
+
+
+ 46034421-e7c6-473e-a719-7d83872ca163
+ 6cd2a74a-68a2-4ae0-a868-8f30c483568d
+
+
+ 0fa79f74-4bbd-4656-b60c-37f7d59bce79
+ ba936a9a-d60a-4f7a-8478-e7725727e77d
+
+
+ c947c4fd-75cf-4b61-9202-12e3e22f4c1b
+ 22aab3a5-a132-40a7-aa20-42ecad0184eb
+
+
+ c498636f-11f4-40f4-bddf-498f85534a1c
+ 42911c5b-d9a1-4197-9b32-95e57d930c01
+
+
+ e6512286-f03c-4e75-86a1-5ab626774f61
+ c8e6130a-8a0c-4755-9fb1-7a21bb2da092
+
+
+ dd315100-5cfd-4a58-9326-11829b89d62e
+ 3296cfea-a9c6-45cf-8b32-8e48e2b1fe4b
+
+
+
+ Таблица1
+
+
+ Table
+
+
+ ObjectData
+
+ ExternalDataSource.ВнешнийИсточникДанных1.Table.Таблица1.Field.Поле1
+
+
+
+
+
+ true
+ false
+
+ ExternalDataSource.ВнешнийИсточникДанных1.Table.Таблица1.Field.Поле1
+
+ Auto
+ Begin
+ Directly
+ Auto
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+ Auto
+
+ InDialog
+
+
+ Automatic
+
+
+
+
+ Поле1
+
+
+
+ xs:string
+
+ 10
+ Variable
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+
+
+ Auto
+ Auto
+ Auto
+
+
+ false
+ false
+
+
+
+
+
\ No newline at end of file