Имя: Пароль:
1C
1С v8
Динамический список
,
0 DexterMorgan
 
10.02.12
15:34
Есть РС, измерение Номенклатура + куча ресурсов, у него форма, осн. реквизит "Список", пользователь может устанавливать различные отборы, в том числе и по свойствам, категориям вида номенклатуры.
Нужно получить строки, которые в данный момент отобраны на форме. ХЗ в голову приходит только делать еще один запрос и там устанавливать такой же отбор. Может есть еще варианты?
1 Mort
 
10.02.12
15:36
Надо не запрос делать, а СКД и туда копировать отбор. А вообще, всё это от лукавого. Нафиг.
2 vmv
 
10.02.12
15:37
небось итоги по отбору через задницу юзеру показывать
3 vmv
 
10.02.12
15:38
да и запрос в динамическом списке уже есть если СКД не юзать, а вся автосписки заменяю на произвольный запрос и список показывает только что должен в этом месте и в этом час, а не всю байду в себе тягать
4 vmv
 
10.02.12
15:39
и отборы тоже в запрос вставляю - эта проста. Инициализировать параметры запроса еще проще
5 DexterMorgan
 
10.02.12
16:00
(2) Иногда лучше жевать чем говорить.
(4) Приведи пример если тебе не сложно как ОтборКомпоновкиДанных ты вставишь в запрос. Блин, а че от лукавого то? На форме есть неск. строк, выведенных дин. списком, у которого основная таблица РС. Хочу получить ключи этих строк в РС, это МЕГА желание какое? Или для этого нужно еще один раз делать запрос?
6 DexterMorgan
 
10.02.12
16:04
(1) геморр это
7 DexterMorgan
 
10.02.12
16:05
(3) Запроса нет, точнее нет ТекстаЗапроса, потому что ПроизвольныйЗапрос = ЛОЖЬ.
8 vmv
 
10.02.12
16:09
(7) что мешает сделать ИСТИНА, календарь майя?
9 DexterMorgan
 
10.02.12
16:14
(8) Ничего. Мне нужно получить при такой настройке. Книга знаний: v8: Как получить строки, отобранные отбором есть идеи как подобное сделать для ТаблицыФормы?
10 DexterMorgan
 
10.02.12
17:25
ап..
11 vmv
 
10.02.12
17:37
(10) комповощик отбора динамического списка очень гибкая щтука и если пользователь умен и ему позволено вручную ставить отборы, то...

штатных средств получить програамно множество строк динамического списка по пользовательскому отбору вы не найдете, кроме СКД естественно.

Вспомните, что в пользовательском отборе УФ для дин. списка можно делать группы фильтров с самой разнообразной логикой и что тогда?

Вывод способа решения задачи два

1. Использовать СКД для клонирования в ней пользовтельского отбора дин. списка и получения через нее аналогичное множество строк строк

2. Отключение возможности отобра в дин списке и предоставление пользователю полей отбора на форму, которые являються параметрами произвольного запроса дин. списка.

Я в таких случаях выбираю 2-й путь, ибо пользователь не травмирует свою психику слишком умным штатным отбором в УФ, а видит перед глазами что и как отобрано и то что он отобрар попадает мигом в запрос динсписка как параметр. Этот же текст запроса мы можем прочитать и легко определить, что реально "видит" пользователь.

Ета все, чувак
12 DexterMorgan
 
13.02.12
12:06
(11) Наверное придется создавать СКД...
Блин, неужели нельзя как нить программно выполнить CTRL+A при активном элементе, отображающим этот динамический список? Тогда бы все что нужно попало бы в выделенные строки...
13 DexterMorgan
 
13.02.12
12:18
Вухууууууууууууу!!!!!!!!!!!

Wsh = Новый СОМОбъект("Wscript.shell");
   //Wsh - переменная. Можно было дать любое другое имя
   Wsh.SendKeys("^+ф");   //имитируем нажатие ++
   Wsh.SendKeys("^+a");   //для случая, если текущей является русская раскладка клавиатуры
14 DexterMorgan
 
13.02.12
12:22
Итак проблема решена! =))) Без СКД и прочей лабуды xDDDDD


ЭтаФорма.ТекущийЭлемент = Элементы.Товары;    
ВыполнитьCtrlA();
Строки = Элементы.Товары.ВыделенныеСтроки;

&НаСервере
Процедура ВыполнитьCtrlA()
   Wsh = Новый COMОбъект("Wscript.shell");
   //Wsh - переменная. Можно было дать любое другое имя, например Окно
   Wsh.SendKeys("^+ф");   //имитируем нажатие ++
   Wsh.SendKeys("^+a");   //для случая, если текущей является русская раскладка клавиатуры
КонецПроцедуры

После этого получаем в переменной "Строки" все строки которые вывел динамический список! =)))
15 MRAK
 
13.02.12
12:23
(13) ужас нах...
16 Anderson
 
13.02.12
12:28
Вот это креатив.
17 DexterMorgan
 
13.02.12
12:59
В (14) есть ошибки: получать СОМОбъект надо на клиенте + SendKeys("^ф") или SendKeys("^(ф)") - без плюса. Вот конечный код:


       ЭтаФорма.ТекущийЭлемент = Элементы.Товары;
   
   Wsh = Новый COMОбъект("Wscript.shell");
   //Wsh - переменная. Можно было дать любое другое имя
   Wsh.SendKeys("^(ф)");   //имитируем нажатие ++
   Wsh.SendKeys("^(a)");  
   
   Строки = Элементы.Товары.ВыделенныеСтроки;

Не понятно пока вот что без отладки все норм строки выделяются, когда ставлю точку останова выделения строк не происходит..
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.