diff --git a/.gitignore b/.gitignore
index 00c7488..ba8bf32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
*.log
+*.ConfigDumpInfo.xml
# compiled output
dist
diff --git a/src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl b/src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl
index db27604..fce7fd1 100644
--- a/src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl
+++ b/src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl
@@ -98,6 +98,10 @@
.ДобавитьТестовыйНабор("СЗ: Реальные запросы")
.ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
.Перед("Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
+ .ДобавитьТестовыйНабор("СЗ: Тест с гитхаб")
+ .ДобавитьТест("ТестСГитхаб_Проблема1_Вариант1")
+ .ДобавитьТест("ТестСГитхаб_Проблема1_Вариант2")
+ .ДобавитьТест("ТестСГитхаб_Проблема1_Вариант3")
;
КонецПроцедуры
@@ -1708,6 +1712,55 @@
#КонецОбласти
+Процедура ТестСГитхаб_Проблема1_Вариант1() Экспорт
+
+ МаксимальноеКоличествоЭлементов = 10000;
+
+ // Выполнение
+ Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.ИерархияПартнеров")
+ .Псевдоним("ИерархПарт")
+ .Первые(МаксимальноеКоличествоЭлементов)
+ .Выбрать("СправочникПартнеры.Ссылка КАК Ссылка")
+ .ЛевоеСоединение("Справочник.Партнеры КАК СправочникПартнеры", СхЗапрос.Предикат()
+ .Реквизит("ИерархПарт.Родитель")
+ .Равно("СправочникПартнеры.Ссылка"));
+
+ Результат = Запрос.ВТаблицуЗначений();
+
+КонецПроцедуры
+
+Процедура ТестСГитхаб_Проблема1_Вариант2() Экспорт
+
+ МаксимальноеКоличествоЭлементов = 10000;
+
+ // Выполнение
+ Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.ИерархияПартнеров")
+ .Первые(МаксимальноеКоличествоЭлементов)
+ .Выбрать("СправочникПартнеры.Ссылка КАК Ссылка")
+ .ЛевоеСоединение("Справочник.Партнеры КАК СправочникПартнеры", СхЗапрос.Предикат()
+ .Реквизит("Родитель")
+ .Равно("СправочникПартнеры.Ссылка"));
+
+ Результат = Запрос.ВТаблицуЗначений();
+
+КонецПроцедуры
+
+Процедура ТестСГитхаб_Проблема1_Вариант3() Экспорт
+
+ МаксимальноеКоличествоЭлементов = 10000;
+
+ // Выполнение
+ Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.ИерархияПартнеров КАК ИерархПарт")
+ .Первые(МаксимальноеКоличествоЭлементов)
+ .Выбрать("СправочникПартнеры.Ссылка КАК Ссылка")
+ .ЛевоеСоединение("Справочник.Партнеры КАК СправочникПартнеры", СхЗапрос.Предикат()
+ .Реквизит("ИерархПарт.Родитель")
+ .Равно("СправочникПартнеры.Ссылка"));
+
+ Результат = Запрос.ВТаблицуЗначений();
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl
index 9a27949..7687dbf 100644
--- a/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl
+++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl
@@ -104,7 +104,14 @@
КонецЕсли;
Если ТипЗнч(СтруктураСхемыЗапроса.ИсточникДанных) = Тип("Строка") Тогда
- ИсточникСхемыЗапроса = Оператор.Источники.Добавить(СтруктураСхемыЗапроса.ИсточникДанных);
+ Если Не СтруктураСхемыЗапроса.Свойство("ПсевдонимИсточника") Или
+ ПустаяСтрока(СтруктураСхемыЗапроса.ПсевдонимИсточника) Тогда
+
+ ИсточникСхемыЗапроса = Оператор.Источники.Добавить(СтруктураСхемыЗапроса.ИсточникДанных);
+ Иначе
+ ИсточникСхемыЗапроса = Оператор.Источники.Добавить(СтруктураСхемыЗапроса.ИсточникДанных,
+ СтруктураСхемыЗапроса.ПсевдонимИсточника);
+ КонецЕсли;
Иначе
СтруктураСхемыВложенногоЗапроса = СтруктураСхемыЗапроса.ИсточникДанных;
Если Не СтруктураСхемыВложенногоЗапроса.Свойство("ПсевдонимИсточника") Или
@@ -222,15 +229,24 @@
СтруктураСоединения.Псевдоним);
ИсточникСоединения.Источник.Запрос.УстановитьТекстЗапроса(ВложенныйЗапрос);
КонецЕсли;
- Если Оператор.Источники[0].Соединения.Количество() = 0 Тогда
- Оператор.Источники[0].Соединения.Добавить(ИсточникСоединения);
- КонецЕсли;
-
+
Условия = ПроверитьНаНеоднозначностьПолей(СтруктураСоединения.Условие,
Оператор.Источники[0].Источник, ИсточникСоединения.Источник);
-
+
+ Оператор.Источники[0].Соединения.Очистить();
+ Оператор.Источники[0].Соединения.Добавить(ИсточникСоединения, СтрСоединить(Условия, " И "));
+
Соединение = Оператор.Источники[0].Соединения[Оператор.Источники[0].Соединения.Количество() - 1];
- Соединение.Условие = Новый ВыражениеСхемыЗапроса(СтрСоединить(Условия, " И "));
+
+ //Если Оператор.Источники[0].Соединения.Количество() = 0 Тогда
+ // Оператор.Источники[0].Соединения.Добавить(ИсточникСоединения);
+ //КонецЕсли;
+
+ //Условия = ПроверитьНаНеоднозначностьПолей(СтруктураСоединения.Условие,
+ // Оператор.Источники[0].Источник, ИсточникСоединения.Источник);
+ //
+ //Соединение = Оператор.Источники[0].Соединения[Оператор.Источники[0].Соединения.Количество() - 1];
+ //Соединение.Условие = Новый ВыражениеСхемыЗапроса(СтрСоединить(Условия, " И "));
// TODO: Строки заменить на функцию?
Если СтруктураСоединения.ТипСоединения = "Левое" Тогда
Соединение.ТипСоединения = ТипСоединенияСхемыЗапроса.ЛевоеВнешнее;
diff --git a/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl
index 2bd7f63..1a5a06e 100644
--- a/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl
+++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl
@@ -6,7 +6,16 @@
СхемаЗапроса = Новый Структура;
КонецЕсли;
+ Если СтрНайти(ИсточникДанных, " КАК ") > 0 Тогда
+ ИнформацияОбИсточникеДанных = СтрЗаменить(ИсточникДанных, " КАК ", Символы.ПС);
+ ИсточникДанных = СтрПолучитьСтроку(ИнформацияОбИсточникеДанных, 1);
+ Псевдоним = СтрПолучитьСтроку(ИнформацияОбИсточникеДанных, 2);
+ КонецЕсли;
+
СхемаЗапроса.Вставить("ИсточникДанных", ИсточникДанных);
+ Если ЗначениеЗаполнено(Псевдоним) Тогда
+ СхемаЗапроса.Вставить("ПсевдонимИсточника", Псевдоним);
+ КонецЕсли;
Если Первые >= 0 Тогда
СхемаЗапроса.Вставить("Первые", Первые);
КонецЕсли;
diff --git a/src/cfe/ConfigDumpInfo.xml b/src/cfe/ConfigDumpInfo.xml
deleted file mode 100644
index cc729e1..0000000
--- a/src/cfe/ConfigDumpInfo.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/cfe/Configuration.xml b/src/cfe/Configuration.xml
index 39cfb0d..a48bbdf 100644
--- a/src/cfe/Configuration.xml
+++ b/src/cfe/Configuration.xml
@@ -47,7 +47,7 @@
Version8_3_9
Russian
- 0.0.4
+ 0.0.5