Имя: Пароль:
1C
1С v8
Динамический список
0 Nikky412
 
01.10.12
15:19
Подскажите пожалуйста, как узнать попали ли какие либо данные в ДС? УТ 10.3, тонкий клиент, управляемое приложение.

Есть ДС на форме, произвольным запросом вывожу туда данные. Данные попадают как надо, но хочу убрать видимость ДС если он пустой, не могу найти как это проверить.
1 MSII
 
01.10.12
15:20
Проверяй Элементы.ИмяТвоегоСписка.ТекущаяСтрока
2 Nikky412
 
01.10.12
15:22
всегда неопределенно
3 Rounder
 
01.10.12
15:22
Элементы.ИмяТвоегоСписка.ТекущиеДанные проверяй
4 Rounder
 
01.10.12
15:23
Хотя нет - вру - тот же результат будет.
5 Nikky412
 
01.10.12
15:23
Ага(
6 Rounder
 
01.10.12
15:23
У тебя не активирована ни одна строка твоего списка.
7 vicof
 
01.10.12
15:24
на Количество() > 0, не?
8 MSII
 
01.10.12
15:24
Значит, активизировать ДС а потом 1
(7) Нет у ДС такого метода
9 Nikky412
 
01.10.12
15:26
Метод объекта не обноружен
10 Rounder
 
01.10.12
15:27
А запрос программно формируешь и выполняешь?
11 MSII
 
01.10.12
15:29
(10) - непринципиально, там еще помимо запроса 100500 отборов может быть наложено
12 Nikky412
 
01.10.12
15:29
В свойствах ДС указываю произвольный запрос и передаю туда параметры
13 Rounder
 
01.10.12
15:32
(11)Тогда выгрузи результат запроса и посчитай количество в выборке.
14 Rounder
 
01.10.12
15:33
(12) Так ты не отловишь измененение ДС после наложения отбора. Поэтому там ты не посчитаешь.
15 Nikky412
 
01.10.12
15:35
т.е. и активация строки не поможет?
16 Rounder
 
01.10.12
15:36
А ты ее сможешь программно активировать? Не зная какие там данные? Т.е. просто по индексу?
17 Rounder
 
01.10.12
15:41
Более того - я так понимаю перед (0) стоит изначально не отображать ДС если выборка пустая. А если уж отобразил, но юзер наложил отбор, очистивший ДС, то его скрывать уже не нужно.
Если не так, то пусть (0) поправит меня.
18 Nikky412
 
01.10.12
15:43
ох) короче, при открытии документа, если есть остаток по некому регистру в дс он отображается) отборы после запроса не накладываю, все в запросе, есть остаток - показываю, нет - не показываю. Про активацию строки если хочу через тек строку попробовать
19 Rounder
 
01.10.12
15:46
(18) Ну так если у тебя все есть в запросе и ничего не изменяется - проанализируй выборку из запроса и если она пустая - скрывай ДС.
20 Nikky412
 
01.10.12
15:48
не знаю как выборку из ДС выдрать((
21 Nikky412
 
01.10.12
15:48
через тек строку вышло)
22 Rounder
 
01.10.12
15:49
(20) Запости процедуру как формируешь источник для ДС (ну запрос в смысле как программно формируешь)
(21) Пока не радуйся - и попробуй сымитировать пустую выборку - что там тебе скажет на тек.строку.
23 Nikky412
 
01.10.12
15:52
там не процедурой, просто в свойствах ДС в настройке списка, пишу запрос... и уже не радуюсь)))
24 MSII
 
01.10.12
15:54
(23) А что не радует?
25 Nikky412
 
01.10.12
15:55
не обновляет динамический список( Через Тек строку и с пустой выборкой прокатыват, нет остатков нет списка, есть - есть) но вот список не обновляет...
26 MSII
 
01.10.12
15:55
Я точно помню - проверял наличие строк в ДС, анализируя свойство ТекущаяСТрока. Можно еще Попытку-Исключение задействовать.
27 MSII
 
01.10.12
15:58
Попытка
ТД = МойСписок[0].ТекущиеДанные;
Исключение
   // список пустой
КонецПопытки
28 Nikky412
 
01.10.12
16:03
это срабатывает, спасибо) но почему то в отладке, к примеру, в толстом клиенте убирают все остатки, все эти изменения я тут же вижу на ДС в тонком клиенте. как только ушла последняя строка ДС.видимость = ложь. Но как только добавляю остатки проверка на Тек данные в первой строке выдает непопределено
29 Nikky412
 
01.10.12
16:03
коряво как то написал)
30 Rounder
 
01.10.12
16:03
Так обнови ДС принудительно
31 Rounder
 
01.10.12
16:05
Элементы.НазваниеДС.Обновить()
32 Nikky412
 
01.10.12
16:07
не прокатило, так же неопределенно
33 Nikky412
 
01.10.12
16:09
странно... переоткрываю, док, все работает
34 Nikky412
 
01.10.12
16:11
и если убрать все что связано с видимостью, список обновляется все как надо...
35 Rounder
 
01.10.12
16:13
При переоткрытии дока перечитываются данные с сервера - поэтому работает.
36 Nikky412
 
01.10.12
16:20
он во время считывает тоже, ДС меняется в зависимости от изменения остатков
37 Nikky412
 
01.10.12
16:30
При повторной проверке если ДО регистр был пуст и появились какие то значения, тек данные в певой строке всегда Неопределено. Однако если ситуацию прокрутить в обратном порядке то все срабатывает. сначала полный - потом пустой.
38 Rounder
 
01.10.12
16:34
Как ты определяешь что остатки появились?
Как ты обновляешь список если он у тебя скрыт?
Опиши всю последовательность действий
39 Nikky412
 
01.10.12
16:34
опять же, заремарил всю видимость, все работает как часы
40 Nikky412
 
01.10.12
16:36
вот как раз подумал об этом, что если не видим, то и не обновишь, пробую. Остатки проверяю, если в первой строке есть данные то видимым делаю, если нет то видимость в ложь.
41 Rounder
 
01.10.12
16:41
В общем видится один выход. Это формировать твой произвольный запрос не в настройках ДС, а программно - и работать с его результатом.
Или на крайняк - оставлять запрос в настройках - но повторять его же и программно и уже там анализировать его результат и в зависимости от оного или показывать ДС или скрывать - но это не есть красиво.
И эту проверку вешать на какое-нибудь событие.
42 Nikky412
 
01.10.12
16:44
а может быть это из за того что в ДС данные попадают с задержкой, он не успел получить данные поэтому там неопределено и держит невидимой????
43 Nikky412
 
01.10.12
16:45
ведь, как уже говорил, если отключить все что связано с видимостью, данные и определяются верно и выводятся тоже, как не крути
44 Rounder
 
01.10.12
16:51
А на каком событии ты проверяешь есть данные или нет?
45 Nikky412
 
01.10.12
16:53
там есть ТЧ, при добавлении туда строки, включаю процедуру обновления отображения, в ней как раз проверка на остатки