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