Оптимально удалить строки с отбором из ТаблицыЗначений #728667


#0 by Aradel3d
Добрый день! Подскажите как оптимально удалить строки с отбором из ТаблицыЗначений, таким образом чтоб в случае множественных значений отбора по одной колонке не запускать N отборов и N циклов удаления строк из ТЗ? Для НайтиСтроки Отбор ведь структура, а там только одно значение на один ключ... в итоге получается не рационально. По идее мне нужен массив, строки которого пойдут как индекс для Удалить, с типом значения и типом "Строка таблицы значений", полученный из ТЗ не методом НайтиСтроки, а как? Запрос просто данные выдает.
#1 by DCKiller
Выбери из таблицы запросом только те строки,которые нужно оставить, и выгрузи результат в ТЗ.
#2 by Ник второй
+ Но оптимальнее именно N отборов.
#3 by Aradel3d
Я пробовал запросом: Недопустимое значение параметра (параметр номер '1') (Строка не принадлежит коллекции)
#4 by Zerg80
Сделай удаление а-ля 7.7, то есть обратным обходом ТЗ. А внутри цикла сравнивай значения по Если..Тогда.
#5 by DCKiller
щито?
#6 by Aradel3d
Пишет, что строку которую я в данный момент подставил как индекс 1с не считает принадлежащей коллекции и выдает ошибку.
#7 by Ник второй
Значит ты написал бредовый код.
#8 by Aradel3d
там 3 строки, цикл и внутри удалить. А до этого два запроса выгруженных в ТЗ, при этом второй с условием сотрудник = &сотрудник. Не знаю где там можно написать бредовый код:)
#9 by Ник второй
Если не работает, значит бредовый, так как 1С прекрасно работает с ТЗ в запросе.
#10 by DCKiller
Ну покажи хоть, чего ты там понаписал, что ли...
#11 by iamnub
1C не работает нормально с коллекциями, да ей это и не нужно, так как этот язык заточен под другое, вот например план закупок под производство, тогда да, а отбор из коллекции, это ты что-то не то придумал, паря.
#12 by Aradel3d
Ну не знаю...     Сотр[1] = Справочники.СотрудникиОрганизаций.НайтиПоНаименованию("Галиулина Ксения Сергеевна");
#13 by Aradel3d
Документ тут не важен, хочется разобраться в удалении строк из ТЗ, оба запроса дают результат, массив заполняется.
#14 by DCKiller
Даааааа...
#15 by iamnub
Жестишь.
#16 by Diman000
У тебя ТЗ разные, и ссылки на их строки к ссылкам на строки ТЧ док-та вообще никакого отношения не имеют.
#17 by iamnub
Для каждого стр из РезультатЗапроса2 Цикл Это ересь, так как строка ТЗ принадлежит СВОЕЙ ТЗ, и соотвественно - в другой ТЗ её просто нет.
#18 by Diman000
Чтобы удалять строки из ТЗ должен быть массив ссылок на строки именно этой ТЗ, а не какой-то там другой и не важно что они из одной ТЧ вытащены запросом. Если у тебя сложные условия с коллекциями, то хороший вариант в . Если он по каким-то причинам не годится, то другой вариант это создать индекс в ТЗ. Тогда N отборов в цикле будут быстро пролетать.
#19 by 13_Mult
твоё решение в
#20 by Aradel3d
Ребята, вообще-то я в курсе, что строки из разных ТЗ, это просто ответ . Задачка не на результат, а на разобраться с удалением строк из ТЗ.
#21 by Diman000
В совсем другое написано. Прочитай еще раз внимательнее. Там вообще не надо ничего удалять.
#22 by Aradel3d
В общем решение такое: пишется функция, в которую передается исходная таблица, массив значений к отбору и название колонки отбора. В ней циклом подставляются отборы и полученное добавляется в массив. После получения таблички, удаление. Таким образом не надо 100500 раз отбирать и удалять. Спасибо доброму дяде:)
#23 by piter3
и чем отличается от
#24 by Aradel3d
Тем что меньше текста.
#25 by DCKiller
Был бы в курсе, такое бы не написал:
#26 by Aradel3d
Удаляю строки я сейчас таким же способом, только вместо РезультатЗапроса2 у меня массив найденных строк.
#27 by Diman000
Ясно дело, других способов и нет. Только я не понял почему у тебя нет 100500 отборов, по-моему они остаются - "циклом подставляются отборы ". В предложено решение вообще без удаления строк.
#28 by Aradel3d
До этого я в ручную был вынужден их прописывать, было громоздко.
#29 by Крошка Ру
Честно говоря не пнял, чем обратный цикл не подошел...
#30 by МихаилМ
вот тема на 500 постов тз.удалитьстроку очень медленный метод.
#31 by su_mai
А как такую же операцию выполняет SQL Server? Там многое зависит от количества строк в выборке, наличия индекса и т.п. Кроме того не ясно условие задается только на одну колонку или может задаваться на несколько, причем множественные?
#32 by Aradel3d
По поводу SQL Server ничего не скажу. В моей задачке условие только по одной колонке. Одна колонка, много вариантов отбора. Чтоб не было нагромождений кода "Отбор N, Найти отбор N, удалить отбор N" я искал решение. Может запросом к ТЗ по валидным параметрам и правильнее будет, с точки зрения сервера. Но это уже другой вопрос.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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