Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DRAFT Разбор запросов к внешним источникам данных (bsl-parser), новые тесты в bsl-language-server #2959

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.Выполнить();
1 change: 1 addition & 0 deletions src/test/resources/metadata/designer/Configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@
<ScheduledJob>РегламентноеЗаданиеНесуществующийМетод</ScheduledJob>
<ScheduledJob>РегламентноеЗаданиеПриватныйМетод</ScheduledJob>
<ScheduledJob>РегламентноеЗаданиеПредопределенноеНесколькоПараметров</ScheduledJob>
<ExternalDataSource>ВнешнийИсточникДанных1</ExternalDataSource>
</ChildObjects>
</Configuration>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<ExternalDataSource uuid="5f88206e-509f-481e-8e0c-840afa34498f">
<InternalInfo>
<xr:GeneratedType name="ExternalDataSourceManager.ВнешнийИсточникДанных1" category="Manager">
<xr:TypeId>1af090bf-8bc3-43d6-abf7-0f7185073f81</xr:TypeId>
<xr:ValueId>3c3a22d1-7a71-4fab-93d5-373d807ce245</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTablesManager.ВнешнийИсточникДанных1" category="TablesManager">
<xr:TypeId>4184dd6b-60b5-4353-afe9-476050c8207a</xr:TypeId>
<xr:ValueId>aa4ec83e-cecb-4abe-b314-8a279f3b8730</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceCubesManager.ВнешнийИсточникДанных1" category="CubesManager">
<xr:TypeId>f1a6fe6f-90ac-4e17-86d0-9a700091d95a</xr:TypeId>
<xr:ValueId>16a8e401-e884-41d8-857a-7fa4456315f7</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ВнешнийИсточникДанных1</Name>
<Synonym/>
<Comment/>
<DataLockControlMode>Automatic</DataLockControlMode>
</Properties>
<ChildObjects>
<Table>Таблица1</Table>
</ChildObjects>
</ExternalDataSource>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<Table uuid="ed664505-7033-43c4-a844-242010a82c23">
<InternalInfo>
<xr:GeneratedType name="ExternalDataSourceTableManager.ВнешнийИсточникДанных1.Таблица1" category="Manager">
<xr:TypeId>f293cd9a-813b-4871-b1e7-5219e98cc704</xr:TypeId>
<xr:ValueId>3b51e46e-d56b-489e-a480-2c6a40e61c7f</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableObject.ВнешнийИсточникДанных1.Таблица1" category="Object">
<xr:TypeId>45681edf-cf03-457a-91ec-900dcaf93300</xr:TypeId>
<xr:ValueId>a1a09e26-2a36-4025-b5cf-4584c6a2cb13</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableRef.ВнешнийИсточникДанных1.Таблица1" category="Ref">
<xr:TypeId>46034421-e7c6-473e-a719-7d83872ca163</xr:TypeId>
<xr:ValueId>6cd2a74a-68a2-4ae0-a868-8f30c483568d</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableList.ВнешнийИсточникДанных1.Таблица1" category="List">
<xr:TypeId>0fa79f74-4bbd-4656-b60c-37f7d59bce79</xr:TypeId>
<xr:ValueId>ba936a9a-d60a-4f7a-8478-e7725727e77d</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableRecord.ВнешнийИсточникДанных1.Таблица1" category="Record">
<xr:TypeId>c947c4fd-75cf-4b61-9202-12e3e22f4c1b</xr:TypeId>
<xr:ValueId>22aab3a5-a132-40a7-aa20-42ecad0184eb</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableRecordSet.ВнешнийИсточникДанных1.Таблица1" category="RecordSet">
<xr:TypeId>c498636f-11f4-40f4-bddf-498f85534a1c</xr:TypeId>
<xr:ValueId>42911c5b-d9a1-4197-9b32-95e57d930c01</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableRecordKey.ВнешнийИсточникДанных1.Таблица1" category="RecordKey">
<xr:TypeId>e6512286-f03c-4e75-86a1-5ab626774f61</xr:TypeId>
<xr:ValueId>c8e6130a-8a0c-4755-9fb1-7a21bb2da092</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="ExternalDataSourceTableRecordManager.ВнешнийИсточникДанных1.Таблица1" category="RecordManager">
<xr:TypeId>dd315100-5cfd-4a58-9326-11829b89d62e</xr:TypeId>
<xr:ValueId>3296cfea-a9c6-45cf-8b32-8e48e2b1fe4b</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>Таблица1</Name>
<Synonym/>
<Comment/>
<TableType>Table</TableType>
<NameInDataSource/>
<ExpressionInDataSource/>
<TableDataType>ObjectData</TableDataType>
<KeyFields>
<xr:Field>ExternalDataSource.ВнешнийИсточникДанных1.Table.Таблица1.Field.Поле1</xr:Field>
</KeyFields>
<PresentationField/>
<ParentField/>
<UnfilledParentValue xsi:nil="true"/>
<Characteristics/>
<UseStandardCommands>true</UseStandardCommands>
<QuickChoice>false</QuickChoice>
<InputByString>
<xr:Field>ExternalDataSource.ВнешнийИсточникДанных1.Table.Таблица1.Field.Поле1</xr:Field>
</InputByString>
<CreateOnInput>Auto</CreateOnInput>
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DefaultObjectForm/>
<DefaultRecordForm/>
<DefaultListForm/>
<DefaultChoiceForm/>
<ObjectPresentation/>
<ExtendedObjectPresentation/>
<RecordPresentation/>
<ExtendedRecordPresentation/>
<ListPresentation/>
<ExtendedListPresentation/>
<Explanation/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<ReadOnly>false</ReadOnly>
<TransactionsIsolationLevel>Auto</TransactionsIsolationLevel>
<DataVersionField/>
<EditType>InDialog</EditType>
<BasedOn/>
<DataLockFields/>
<DataLockControlMode>Automatic</DataLockControlMode>
</Properties>
<ChildObjects>
<Field uuid="464b186e-c14b-4e7e-858b-139594f7e723">
<Properties>
<Name>Поле1</Name>
<Synonym/>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>10</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<ChoiceForm/>
<NameInDataSource/>
<ReadOnly>false</ReadOnly>
<AllowNull>false</AllowNull>
</Properties>
</Field>
</ChildObjects>
</Table>
</MetaDataObject>