![]() |
|
Индексированная таблица, отобрать непустые строки, как ? | ☑ | ||
---|---|---|---|---|
0
Холст
16.03.12
✎
00:08
|
есть таблица,
колонки СпрСерий,Ячейка,КоличествоФакт надо отобрать строки с непустым полем Ячейка код: ПустойСпр = ПолучитьПустоеЗначение("Справочник.ЯчейкиСклада"); ТЗнепустыеЯч = СоздатьОбъект("ИндексированнаяТаблица"); лТЗтч.Выгрузить(ТЗнепустыеЯч); ТЗнепустыеЯч.ДобавитьИндекс("и1","*Ячейка"); ТЗнепустыеЯч.УстановитьФильтр(ПустойСпр,ПустойСпр ,"и1" ,0,1); ТЗнепустыеЯч.Показать(); почему-то показывает ВСЮ таблицу, хотя там есть и с пустыми и не пустыми ячейками, а нужно только с непустыми что не так ? |
|||
1
Попытка1С
16.03.12
✎
00:15
|
Чем условие на поле не устраивает?
|
|||
2
Попытка1С
16.03.12
✎
00:16
|
И почему ты пустое значение типизируешь как справочник.
|
|||
3
Холст
16.03.12
✎
00:16
|
(1) как ?
... ищу метод "условие" или около того в описании |
|||
4
Попытка1С
16.03.12
✎
00:18
|
(3) Я про условие на поле при переборе, или тебе зачем это все?
|
|||
5
Холст
16.03.12
✎
00:18
|
неужели ПолучитьПустоеЗначение("Справочник.ЯчейкиСклада") не возвращает пустой объект Справочник.ЯчейкиСклада ?
задача же говорю - отобрать непустые |
|||
6
Холст
16.03.12
✎
00:19
|
лТЗтч получена выгрузкой из табличной части документа, где в ТЧ документа есть незаполненное поле Ячейка
|
|||
7
Попытка1С
16.03.12
✎
00:20
|
(5) Тебе нужна именно таблица полностью заполеная непустыми значениями? И что ты с ней будешь делать? Почему при переборе не вставить условие?
|
|||
8
Холст
16.03.12
✎
00:21
|
пустой справочник подставляю в фильтр и задаю в конце флаг инверсии, как еще то объяснить ?
|
|||
9
Холст
16.03.12
✎
00:22
|
(7) хочу получить быстрее, чем перебором
|
|||
10
Холст
16.03.12
✎
00:24
|
потом сверну по СпрСерий и получу таблицу с остатками по сериям с заполненными ячейками
зачем эти уточняющие вопросы, ответа на первоначальный вопрос нет ? |
|||
11
Попытка1С
16.03.12
✎
00:35
|
Я бы запросом просто ТЧ выгрузил с условием на непустую ячейку.
|
|||
12
Холст
16.03.12
✎
00:37
|
(11) ты с 8.2 не путаешь ? какой запрос к ТЧ ?
|
|||
13
Попытка1С
16.03.12
✎
00:39
|
(12) О батенька... Раз уж индексированную таблицу юзаешь, должен и запрос к ТЧ сделать.
Можешь на голом 1с++ можешь на классе ПрямойЗапрос, будет быстрее чем ты тут будешь фильтры устанавливать. |
|||
14
Попытка1С
16.03.12
✎
00:46
|
ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
ТекстЗапроса = " |ВЫБРАТЬ | ДокСтроки.МестоХранения [СкладДокумент $Справочник.МестаХранения], | СУММА(ДокСтроки.Сумма) КАК Себестоимость, | СУММА(ДокСтроки.СуммаПродажи) КАК Продажа |ИЗ | ДокументСтроки.РасходнаяНакладная КАК ДокСтроки | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЖурналДокументов КАК Журнал | ПО ($Журнал.ТекущийДокумент = $ДокСтроки.ТекущийДокумент | И $Журнал.ВидДокумента = :ВидДокумента.РасходнаяНакладная) | И $Журнал.ПозицияДокумента МЕЖДУ :НачДата И :КонДата~ | И $Журнал.Проведен = 1 |ГДЕ | | тут твое условие на непустой реквизит | |СГРУППИРОВАТЬ | Док.МестоХранения |"; ПрямойЗапрос.УстановитьТекстовыйПараметр("НачДата",ДатаНачала); ПрямойЗапрос.УстановитьТекстовыйПараметр("КонДата",ДатаКонца); индТз = ПрямойЗапрос.Выполнить("ИндексированнаяТаблица",ТекстЗапроса); примерчик небольшой |
|||
15
Холст
16.03.12
✎
00:46
|
(13)
понял, предлагаешь взять по iddoc таблицу табличных частей этого вида дока и найти ТЧ моего дока и отфильтровать... документ, ТЧ которого анализируем, еще не сохранен в базе |
|||
16
Холст
16.03.12
✎
00:47
|
спасибо за примерчик, пригодится для другого, но тут еще не сохранен док
|
|||
17
Холст
16.03.12
✎
00:48
|
мне бы именно индексированной таблицей получить и выходит ни фильтр, ни "антифильтр" по пустому значению не работает
|
|||
18
Попытка1С
16.03.12
✎
00:50
|
(17) Честно говоря установитьфильтр почти не юзал, всегда хватало обхода по созданным индексам. Попробуй на 1cpp спросить.
|
|||
19
Холст
16.03.12
✎
00:50
|
сейчас пробую .Подмножество, а потом сделать разность таблиц
|
|||
20
Попытка1С
16.03.12
✎
00:51
|
(15) Да именно так, просто фильтр по твоему iddoc, но раз записи нет тоды ой.
|
|||
21
Попытка1С
16.03.12
✎
00:52
|
(19) Ты потом замерь мне кажется быстрее перебрать, причем можешь тупо отсортировать, и как первое пустое значение появится прервать цикл.
|
|||
22
Попытка1С
16.03.12
✎
00:52
|
На создание индекса кстати тоже время тратится..
|
|||
23
Холст
16.03.12
✎
02:50
|
так и знал, что решение простое -
в коде надо было поставить индекс ТЗнепустыеЯч.Показать("и1"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |