diff --git a/src/OneScript.Core/Contexts/Variable.cs b/src/OneScript.Core/Contexts/Variable.cs index 532fe9241..404a4a7ca 100644 --- a/src/OneScript.Core/Contexts/Variable.cs +++ b/src/OneScript.Core/Contexts/Variable.cs @@ -32,15 +32,11 @@ public static IVariable Create(IValue val, string symbol) public static IVariable CreateReference(IVariable variable, string refName) { - if (variable is VariableReference vref) + if (variable is VariableReference vref && vref._reference is IndexedValueReference iv) { - if (vref._reference is IndexedValueReference iv) - { - _ = iv.Value; - } - - return variable; + _ = iv.Value; // проверить правильность индекса } + return new VariableReference(variable, refName); } diff --git a/tests/eval.os b/tests/eval.os index 014afd3d5..9fc1e87d3 100644 --- a/tests/eval.os +++ b/tests/eval.os @@ -25,6 +25,7 @@ ВсеТесты.Добавить("ТестДолжен_ПроверитьВложенныеВызовыВыполнить"); ВсеТесты.Добавить("ТестДолжен_ПроверитьВызовыВыполнитьСПопытками"); ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботоспособностьВПодключенныхСценариях"); + ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботоспособностьСПараметрамиПроцедуры"); Возврат ВсеТесты; КонецФункции @@ -341,3 +342,16 @@ А.Тест(); КонецПроцедуры + +Процедура РаботаСПараметрамиПроцедуры(Элемент1, Элемент2) + Рез = ""; + Для Сч = 1 По 2 Цикл + Рез = Рез + Вычислить("Элемент" + Сч); + КонецЦикла; + юТест.ПроверитьРавенство("Поле1Поле2", Рез); +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьРаботоспособностьСПараметрамиПроцедуры() Экспорт + Структура=Новый Структура("Поле1,Поле2","Поле1","Поле2"); + РаботаСПараметрамиПроцедуры(Структура.Поле1, Структура.Поле2); +КонецПроцедуры