Проблема с повторным запросом на выборку данных, сервиса Select Query

Есть следующая функция в которой создается SQL QUERY сервис, при повторном вызове данной функции не происходит обнуление сервиса и в результате в нем содержатся данные предыдущего запроса. Как обнулить сервис или сделать новую выборку?

function SelfOnDatasetDataChange(DataField) {
   if (FieldName == 'CountryID') {     
        // Получить CountryTelAreaCode по CountryID  
        if (!Assigned(SelectQuery)) {
             SelectQuery = Services.GetSingleItemByUSI('sq_Country');
                }      
               
        SetParameterValue(SelectQuery.Parameters, 'Name', Self.DataFields.ItemsByName('CountryID').DisplayValue);
        var TotalsDataset = SelectQuery.Open();
        try {
            var CountryTelAreaCode = TotalsDataset.ValAsStr('CountryTelAreaCode');             
            var TelAreaCodeDataField = Self.DataFields.ItemsByName('TelAreaCode');
            if (Self.DataFields.ItemsByName('CityTelAreaCode').Value==null)
                TelAreaCodeDataField.Value=CountryTelAreaCode+'()';                            
        else
                TelAreaCodeDataField.Value=CountryTelAreaCode+'('+ Self.DataFields.ItemsByName('CityTelAreaCode').Value+')';          
        }
        finally {
          TotalsDataset.Close();
        }
                }  
}

Нравится

4 комментария

Здравствуйте!
В SelectQuery данные не содержатся. В нем хранятся только значения параметров. Я предполагаю что у Вас не изменяется значение параметра. Более точно об этом Вы сможете узнать посмотрев SQL profiler.

Проверял отладчиком MSVS параметр Self.DataFields.ItemsByName('CountryID').DisplayValue изменяется, а вот результат выборки нет. Версия TS CRM 3.2.1.11.

Значит фильтр по Name не включается. Вместо SetParameterValue используйте - ApplySelectQueryFilter. А в "работает" - это совпадение, так как Вы видете первую запись из набора данных...

Спасибо помогло.

Показать все комментарии