v7: Фильтр в индексированной таблице "Итерирование после изменения индекса невозмож" #630943


#0 by Zhuravlik
Добрый день. Есть таблица значений с колонкой типа "СписокЗначений", Хочу на ее основе сделать другую ТЗ, отфильтрованную по спискам в строках. Для этого использую ИндексированнуюТаблицу, но видимо что-то делаю не так, может недопонимаю, в общем вот код: (тзХарактеристик - ТаблицаЗначений, тз_ХР_ост - ИТЗ)
#1 by Zhuravlik
+ кроме того "тз_ХР_ост.УстановитьФильтр" - делаю в цикле, это я так понимаю неправильно, а можно в виде значений фильтра сам список значений указать?
#2 by Zhuravlik
+ Дико извиняюсь, переделал, но ошибка осталась:
#3 by Zhuravlik
#4 by Zhuravlik
Извините, снова подниму вопрос. Как оказалось, при способе в удаляет строки, фильтруя только по первому значению списка. А как сделать так, чтобы удалял, фильтруя по всему списку? Зачитался уже литературой, подумал может есть какой прием, до которого я все не допру никак? Вот конечный код:
#5 by Mikeware
выводи табличку перед удалением, да смотри, что у тебя попадает под фильтр
#6 by Mikeware
а вообще, чушь какая-то...
#7 by Zhuravlik
Ды уже час вывожу, не вкурю никак... тзХарактеристик.спОтбора - список значений    тз_ХР_ост - таблица с остатками, с колонками характеристик авто.    Необходимо исключить из таблицы с остатками значения по списку спОтбора, с  проверкой условия "ВсеКроме". Т.е. если ВсеКроме - 1 - удалить все значения из тз_ХР_ост, кроме тех, что есть в списке спОтбора. Иначе - просто удалить значения.
#8 by Mikeware
если индекс у тебя по одной колонке - коего хера ты ему в фильтр список подсовываешь?
#9 by Zhuravlik
+ т.е. не значения, а строки таблицу тз_ХР_ост
#10 by Zhuravlik
Сначала невнимательно прочитал доку, так заработало, и не стал вникать глубже. Потом глюкануло, стал разбираться, оказалось работает - но только по первому значению в списке. Теперь вот думаю как обойтись.
#11 by ADirks
А ты их откуда берёшь то, остатки эти? Зачем ты их с сервера на клиент тащил, чтоб удалять потом? Массовое удаление строк в ИТ - плохая идея, ибо индексы каждый раз пересчитываются.
#12 by Zhuravlik
Беру прямым запросом 1Sqlite, получаю мгновенно.
#13 by ADirks
Вот, замечательно. Просто запрос перепиши так, чтобы этих лишних строк там не было. Это и проще и правильней.
#14 by Zhuravlik
Вы не поняли, я пишу обработку для универсального подбора по регистру. При открытии я получаю остатки, потом фильтрую их из пользовательского диалога на форме, и передаю в контекст при закрытии то,что осталось. Сделать как вы говорите - это на каждый фильтр делать новый запрос? Нет, не пойдет))) Я уже решил, использовал методы индексированной таблицы Разность и Пересечение. Спасибо всем за советы.
#15 by Mikeware
не проще формировать запрос динамически?
#16 by Zhuravlik
Я так и хотел сначала, потом понял, что опыта маловато, могу в срок не попасть. Сделал так, все равно все эти остатки получаю меньше чем за секунду.
#17 by Zhuravlik
+ И так даже лучше, потому что пользователь видит в диалоге остаток ресурса по измерениям.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С