Вопрос

Прочитать данные из таблицы для использования в фильтре

Мучаюсь с фильтром.

Пытаюсь объединить два условия.

Первое условие замечательно срабатывает т.е. получаю данные из поля Name таблицы MyClient. Таблица MyClient пользовательская.

Но вот данные из таблицы Account прочитать не могу

Получаю ошибку в консоли броузера 

Элемент коллекции с именем Account не найден

 

filterGroup.add("FilterStatus", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "MyClient.Name", categoryLawyers));
 
filterGroup.add("FilterCategory", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "Account.rate", rate));
                        return filterGroup;

 

Как прочитать данные из таблицы Account?

Нравится

15 комментариев

Проверьте имя поля в вашем объекте к которому применяется фильтр может у вас поле называется MyAccount?

Григорий Чех,

Нет, это стандартная таблица Account и в неё добавлена колонка rate

Речь не о таблице, а о названии поля, которое на неё ссылается.

Зверев Александр пишет:

Речь не о таблице, а о названии поля, которое на неё ссылается.

Как узнать название этого поля не подскажете?

 

Поля в той таблице, на которую Вы скриптом накладываете фильтры. Откройте её схему объекта и посмотрите, как называется справочное поле, ссылающееся на таблицу контрагентов.

Зверев Александр пишет:

Поля в той таблице, на которую Вы скриптом накладываете фильтры. Откройте её схему объекта и посмотрите, как называется справочное поле, ссылающееся на таблицу контрагентов.

Похоже дошло...

Но,  filterGroup работает исключительно для справочных полей?

В моём случае поле rate не является справочным.

 

Но до него добираются по связям через справочное поле, ссылающееся на таблицу контрагентов. Нужно посмотреть, как называется это поле и написать правильное название.

Поле называется rate, колонка тоже rate.

Фильтр делаю такой.

(Значение rate расчитывается процедурой)

filterGroup.add("FilterCategory", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "rate.rate", rate));
                        return filterGroup;

Я имею в виду справочное поле в Вашей таблице, которое ссылается на таблицу контрагентов. Видимо, оно называется не Account, а как-то иначе.

Зверев Александр,

это поле rate, ноходится уже в таблице Account (таблица контрагентов)

 

Я имею в виду справочное поле в Вашей таблице, которую Вы пытаетесь отфильтровать, которое ссылается на таблицу контрагентов.

OLeg1020,

Вам нужно указывать не название объекта а название поля которое ссылается на объект.

 

Григорий Чех,

Речь идет об этом?

 

Зверев Александр,

Я пытаюсь сделать фильтр по таблице контрагентов.

Александр, Григорий, sorry что так тяжело со мной, но хотелось бы разобраться :) 

 

В результате использую 

filterGroup.add("FilterCategory", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "rate", rate)); return filterGroup;

 

И "О, чудо!", оно заработало

Так вы фильтруете по полю в этой же таблице, а по вопросу подразумевалось, что не можете вычитать по связям с другой.

Аналогично, если Вы будете накладывать фильтр на таблицу MyClient, то нужно будет писать просто Name, а если из другой, то по связи с точкой в качестве разделителя.

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