Skip to content

Commit 52459f2

Browse files
committed
исправление разбора запросов к ВИД
1 parent ec58aba commit 52459f2

File tree

6 files changed

+185
-2
lines changed

6 files changed

+185
-2
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ dependencies {
7373
api("org.eclipse.lsp4j", "org.eclipse.lsp4j.websocket", "0.17.0")
7474

7575
// 1c-syntax
76-
api("com.github.1c-syntax", "bsl-parser", "167aaad827322e09ccde4658a71152dad234de4b") {
76+
api("com.github.ovcharenko-di", "bsl-parser", "feature~externalSource-SNAPSHOT") {
7777
exclude("com.tunnelvisionlabs", "antlr4-annotations")
7878
exclude("com.ibm.icu", "*")
7979
exclude("org.antlr", "ST4")

src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/QueryToMissingMetadataDiagnosticTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,12 @@ void test() {
4949
4, 18, 55)
5050
.hasMessageOnRange("Исправьте обращение к несуществующему метаданному \"РегистрСведений.УдалитьИмяРегистра\" в запросе",
5151
19, 40, 74)
52+
.hasMessageOnRange("Исправьте обращение к несуществующему метаданному \"ВнешнийИсточникДанных.ВнешнийИсточникДанных2\" в запросе",
53+
50, 18, 62)
54+
.hasMessageOnRange("Исправьте обращение к несуществующему метаданному \"ВнешнийИсточникДанных.ВнешнийИсточникДанных2\" в запросе",
55+
66, 18, 62)
5256

53-
.hasSize(2);
57+
.hasSize(4);
5458

5559
}
5660

src/test/resources/diagnostics/QueryToMissingMetadataDiagnostic.bsl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,32 @@
3737
| РегистрСведений.рЕГИСТРСведений1 КАК Таблица"; // не ошибка
3838
Запрос2.Выполнить();
3939

40+
Запрос1 = Новый Запрос;
41+
Запрос1.Текст = "ВЫБРАТЬ
42+
| Таблица1.Поле1 КАК Поле1
43+
|ИЗ
44+
| ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.Таблица1 КАК Таблица1"; // не ошибка
45+
Запрос1.Выполнить();
46+
47+
Запрос2 = Новый Запрос;
48+
Запрос2.Текст = "ВЫБРАТЬ
49+
| Таблица1.Поле1 КАК Поле1
50+
|ИЗ
51+
| ВнешнийИсточникДанных.ВнешнийИсточникДанных2.Таблица.Таблица1 КАК Таблица1"; // ошибка
52+
Запрос2.Выполнить();
53+
54+
ИмяТаблицы = "Таблица10";
55+
Запрос3 = Новый Запрос;
56+
Запрос3.Текст = "ВЫБРАТЬ
57+
| Таблица1.Поле1 КАК Поле1
58+
|ИЗ
59+
| ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица." + ИмяТаблицы + " КАК Таблица1"; // не ошибка
60+
Запрос3.Выполнить();
61+
62+
ИмяТаблицы = "Таблица10";
63+
Запрос4 = Новый Запрос;
64+
Запрос4.Текст = "ВЫБРАТЬ
65+
| Таблица1.Поле1 КАК Поле1
66+
|ИЗ
67+
| ВнешнийИсточникДанных.ВнешнийИсточникДанных2.Таблица." + ИмяТаблицы + " КАК Таблица1"; // ошибка
68+
Запрос4.Выполнить();

src/test/resources/metadata/designer/Configuration.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@
208208
<ScheduledJob>РегламентноеЗаданиеНесуществующийМетод</ScheduledJob>
209209
<ScheduledJob>РегламентноеЗаданиеПриватныйМетод</ScheduledJob>
210210
<ScheduledJob>РегламентноеЗаданиеПредопределенноеНесколькоПараметров</ScheduledJob>
211+
<ExternalDataSource>ВнешнийИсточникДанных1</ExternalDataSource>
211212
</ChildObjects>
212213
</Configuration>
213214
</MetaDataObject>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.11">
3+
<ExternalDataSource uuid="5f88206e-509f-481e-8e0c-840afa34498f">
4+
<InternalInfo>
5+
<xr:GeneratedType name="ExternalDataSourceManager.ВнешнийИсточникДанных1" category="Manager">
6+
<xr:TypeId>1af090bf-8bc3-43d6-abf7-0f7185073f81</xr:TypeId>
7+
<xr:ValueId>3c3a22d1-7a71-4fab-93d5-373d807ce245</xr:ValueId>
8+
</xr:GeneratedType>
9+
<xr:GeneratedType name="ExternalDataSourceTablesManager.ВнешнийИсточникДанных1" category="TablesManager">
10+
<xr:TypeId>4184dd6b-60b5-4353-afe9-476050c8207a</xr:TypeId>
11+
<xr:ValueId>aa4ec83e-cecb-4abe-b314-8a279f3b8730</xr:ValueId>
12+
</xr:GeneratedType>
13+
<xr:GeneratedType name="ExternalDataSourceCubesManager.ВнешнийИсточникДанных1" category="CubesManager">
14+
<xr:TypeId>f1a6fe6f-90ac-4e17-86d0-9a700091d95a</xr:TypeId>
15+
<xr:ValueId>16a8e401-e884-41d8-857a-7fa4456315f7</xr:ValueId>
16+
</xr:GeneratedType>
17+
</InternalInfo>
18+
<Properties>
19+
<Name>ВнешнийИсточникДанных1</Name>
20+
<Synonym/>
21+
<Comment/>
22+
<DataLockControlMode>Automatic</DataLockControlMode>
23+
</Properties>
24+
<ChildObjects>
25+
<Table>Таблица1</Table>
26+
</ChildObjects>
27+
</ExternalDataSource>
28+
</MetaDataObject>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.11">
3+
<Table uuid="ed664505-7033-43c4-a844-242010a82c23">
4+
<InternalInfo>
5+
<xr:GeneratedType name="ExternalDataSourceTableManager.ВнешнийИсточникДанных1.Таблица1" category="Manager">
6+
<xr:TypeId>f293cd9a-813b-4871-b1e7-5219e98cc704</xr:TypeId>
7+
<xr:ValueId>3b51e46e-d56b-489e-a480-2c6a40e61c7f</xr:ValueId>
8+
</xr:GeneratedType>
9+
<xr:GeneratedType name="ExternalDataSourceTableObject.ВнешнийИсточникДанных1.Таблица1" category="Object">
10+
<xr:TypeId>45681edf-cf03-457a-91ec-900dcaf93300</xr:TypeId>
11+
<xr:ValueId>a1a09e26-2a36-4025-b5cf-4584c6a2cb13</xr:ValueId>
12+
</xr:GeneratedType>
13+
<xr:GeneratedType name="ExternalDataSourceTableRef.ВнешнийИсточникДанных1.Таблица1" category="Ref">
14+
<xr:TypeId>46034421-e7c6-473e-a719-7d83872ca163</xr:TypeId>
15+
<xr:ValueId>6cd2a74a-68a2-4ae0-a868-8f30c483568d</xr:ValueId>
16+
</xr:GeneratedType>
17+
<xr:GeneratedType name="ExternalDataSourceTableList.ВнешнийИсточникДанных1.Таблица1" category="List">
18+
<xr:TypeId>0fa79f74-4bbd-4656-b60c-37f7d59bce79</xr:TypeId>
19+
<xr:ValueId>ba936a9a-d60a-4f7a-8478-e7725727e77d</xr:ValueId>
20+
</xr:GeneratedType>
21+
<xr:GeneratedType name="ExternalDataSourceTableRecord.ВнешнийИсточникДанных1.Таблица1" category="Record">
22+
<xr:TypeId>c947c4fd-75cf-4b61-9202-12e3e22f4c1b</xr:TypeId>
23+
<xr:ValueId>22aab3a5-a132-40a7-aa20-42ecad0184eb</xr:ValueId>
24+
</xr:GeneratedType>
25+
<xr:GeneratedType name="ExternalDataSourceTableRecordSet.ВнешнийИсточникДанных1.Таблица1" category="RecordSet">
26+
<xr:TypeId>c498636f-11f4-40f4-bddf-498f85534a1c</xr:TypeId>
27+
<xr:ValueId>42911c5b-d9a1-4197-9b32-95e57d930c01</xr:ValueId>
28+
</xr:GeneratedType>
29+
<xr:GeneratedType name="ExternalDataSourceTableRecordKey.ВнешнийИсточникДанных1.Таблица1" category="RecordKey">
30+
<xr:TypeId>e6512286-f03c-4e75-86a1-5ab626774f61</xr:TypeId>
31+
<xr:ValueId>c8e6130a-8a0c-4755-9fb1-7a21bb2da092</xr:ValueId>
32+
</xr:GeneratedType>
33+
<xr:GeneratedType name="ExternalDataSourceTableRecordManager.ВнешнийИсточникДанных1.Таблица1" category="RecordManager">
34+
<xr:TypeId>dd315100-5cfd-4a58-9326-11829b89d62e</xr:TypeId>
35+
<xr:ValueId>3296cfea-a9c6-45cf-8b32-8e48e2b1fe4b</xr:ValueId>
36+
</xr:GeneratedType>
37+
</InternalInfo>
38+
<Properties>
39+
<Name>Таблица1</Name>
40+
<Synonym/>
41+
<Comment/>
42+
<TableType>Table</TableType>
43+
<NameInDataSource/>
44+
<ExpressionInDataSource/>
45+
<TableDataType>ObjectData</TableDataType>
46+
<KeyFields>
47+
<xr:Field>ExternalDataSource.ВнешнийИсточникДанных1.Table.Таблица1.Field.Поле1</xr:Field>
48+
</KeyFields>
49+
<PresentationField/>
50+
<ParentField/>
51+
<UnfilledParentValue xsi:nil="true"/>
52+
<Characteristics/>
53+
<UseStandardCommands>true</UseStandardCommands>
54+
<QuickChoice>false</QuickChoice>
55+
<InputByString>
56+
<xr:Field>ExternalDataSource.ВнешнийИсточникДанных1.Table.Таблица1.Field.Поле1</xr:Field>
57+
</InputByString>
58+
<CreateOnInput>Auto</CreateOnInput>
59+
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
60+
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
61+
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
62+
<DefaultObjectForm/>
63+
<DefaultRecordForm/>
64+
<DefaultListForm/>
65+
<DefaultChoiceForm/>
66+
<ObjectPresentation/>
67+
<ExtendedObjectPresentation/>
68+
<RecordPresentation/>
69+
<ExtendedRecordPresentation/>
70+
<ListPresentation/>
71+
<ExtendedListPresentation/>
72+
<Explanation/>
73+
<IncludeHelpInContents>false</IncludeHelpInContents>
74+
<ReadOnly>false</ReadOnly>
75+
<TransactionsIsolationLevel>Auto</TransactionsIsolationLevel>
76+
<DataVersionField/>
77+
<EditType>InDialog</EditType>
78+
<BasedOn/>
79+
<DataLockFields/>
80+
<DataLockControlMode>Automatic</DataLockControlMode>
81+
</Properties>
82+
<ChildObjects>
83+
<Field uuid="464b186e-c14b-4e7e-858b-139594f7e723">
84+
<Properties>
85+
<Name>Поле1</Name>
86+
<Synonym/>
87+
<Comment/>
88+
<Type>
89+
<v8:Type>xs:string</v8:Type>
90+
<v8:StringQualifiers>
91+
<v8:Length>10</v8:Length>
92+
<v8:AllowedLength>Variable</v8:AllowedLength>
93+
</v8:StringQualifiers>
94+
</Type>
95+
<PasswordMode>false</PasswordMode>
96+
<Format/>
97+
<EditFormat/>
98+
<ToolTip/>
99+
<MarkNegatives>false</MarkNegatives>
100+
<Mask/>
101+
<MultiLine>false</MultiLine>
102+
<ExtendedEdit>false</ExtendedEdit>
103+
<MinValue xsi:nil="true"/>
104+
<MaxValue xsi:nil="true"/>
105+
<FillFromFillingValue>false</FillFromFillingValue>
106+
<FillValue xsi:type="xs:string"/>
107+
<FillChecking>DontCheck</FillChecking>
108+
<ChoiceParameterLinks/>
109+
<ChoiceParameters/>
110+
<QuickChoice>Auto</QuickChoice>
111+
<CreateOnInput>Auto</CreateOnInput>
112+
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
113+
<ChoiceForm/>
114+
<NameInDataSource/>
115+
<ReadOnly>false</ReadOnly>
116+
<AllowNull>false</AllowNull>
117+
</Properties>
118+
</Field>
119+
</ChildObjects>
120+
</Table>
121+
</MetaDataObject>

0 commit comments

Comments
 (0)