v8: Как очистить ТЗ от строк с нулевым значением колонки без перебора? #524807


#0 by DSatan
Есть какой-то способ реализации сабжа без перебора ТЗ? попробовал использовать НайтиСтроки и Скопировать, но так получил только массив строк с нулевым значением, а мне нужно оставить ненулевые
#1 by 73
>>но так получил только массив строк с нулевым значением Пройтись циклом по массиву и поудалять эти строки.
#2 by Stim
Запросом к временной таблице :)
#3 by DSatan
а вариант с запросом через  ВТ по получившей ТЗ лучше?
#4 by Злобный Йожег
Для Каждого СтрокаКУдалению Из МассивСтрок Цикл
#5 by DSatan
шустрый :) наверно так и сделаю
#6 by IKSparrow
Так найди строки через НайтиСтроки и удали их - вот тебе ТЗ без нулевых значений.
#7 by Stim
какие еще варианты.. сортировать по значению в колонке, потом найти первый 0 через ТЗ.Найти, ..
#8 by Злобный Йожег
Ветка, я так понял, уже скатилась в срач? Можно закрывать?
#9 by DSatan
можно еще вопросик, сорри, за ламерство а нужно использовать Запрос.МенеджерВременныхТаблиц если мне не нужно помещать в ВТ , а только прочитать из ТЗ?
#10 by Stim
можно. Уважаемый, где вы срач увидели? Пока вы не пришли, его не было
#11 by DSatan
можно или нужно? ну не сталкивался я еще ВТ :) делаю вот так - первая строка необходима? Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст =
#12 by Злобный Йожег
Уважаемый, ответ был дан несколько постов назад. А вот вы начали тут разводить флуд.
#13 by DSatan
сорри, ессно условие <> :)
#14 by DSatan
Ёжик, ну чего вы? Я спросил про варианты решения проблемы и люди помогают.
#15 by Злобный Йожег
Да ладно, расслабься ты... стебусь я, разве неясно
#16 by Злобный Йожег
Еще мона руками удалить из ТЗ строчечки
#17 by 73
Ещё есть вариант Построителем запроса. ЗЫ. Выбор лучшего зависит от количества строк ТЗ. Запросом не всегда быстрее будет...
#18 by DSatan
Кстати, если вы узнаете - зачем мне это ваще нужно - задумаетесь. По хорошему надо ветку создать про это дело... проверял алгоритм расчета вычета НДС в Формирование записей  книги покупок с учетом заблокированного вычета НДС по ОС, не принятым к учету. если платили за поставку ОС несколькими частями, то вычет НДС рассчитывается неправильно вот кусок запроса в левой таблице на одно поступление две или более строки по доументам оплаты получается и соответственно к каждой из этих строк лепится сумма заблокированного по ОС НДС, которая вычитается из каждой части предъявленного НДС.
#19 by DSatan
строк примерно 5 тысяч
#20 by Stim
придумал! МОжно сортировать ТЗ по этому значению и удалять строки в цикле до тех пор, пока не попадется ненулевая. Если строк очень много, а нулевых очень мало, то и такой вариант  сойдет :)
#21 by DSatan
про менеджер Вт никто так и не ответил - он нужон или нет?
#22 by Stim
я делал так: ИЗ ВремТабл КАК ВремТабл
#23 by DSatan
мне не нужно помещать в ВТ, на выходе просто ТЗ
#24 by a_alenkin
Синтаксис: НайтиСтроки(<ПараметрыОтбора>) Параметры: Тип: Структура. Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение. Возвращаемое значение: Тип: Массив. Массив строк таблицы значений, соответствующих условиям поиска. Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным. Описание: Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Метод эффективно использовать для выборки неуникальных значений. Пример: И потом циклом по массиву удаляешь
#25 by a_alenkin
во блин - невнимательно прочитал
#26 by a_alenkin
МассивУдаляемых = ТвояТЗ.НайтиСтроки(Новый Структура(тут отбор описываешь)); Для Каждого УдаляемаяСтрока из МассивУдаляемых Цикл ТвояТЗ.Удалить(УдаляемаяСтрока);
#27 by Stim
а если строк 5тыс, а ненулевых всего 10? Нужен оптимальный универсальный алгоритм..
#28 by a_alenkin
я тута пишу - а ответ то уже дан!!!!
#29 by DSatan
ну так и массив нулевых маленький получается, при удалении обходим же массив, а не всю ТЗ
#30 by a_alenkin
мляяя так сделай поиск по ненулевым!!!!!!!!!! Копируешь ТЗ, очищаешь чтоб структуру создать потом МассивНенулевых = ТвояТЗ.НайтиСтроки(Новый Структура(тут отбор описываешь свои ненулевые)); Для Каждого Строка из МассивНенулевых Цикл
#31 by a_alenkin
как я понял тебе надо из 5000 оставить 10 так? - тогда смотри
#32 by DSatan
в данном случае мне повезло - у меня нулевых очень мало использовал вариант
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям