Имя: Пароль:
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)");  
   
   Строки = Элементы.Товары.ВыделенныеСтроки;

Не понятно пока вот что без отладки все норм строки выделяются, когда ставлю точку останова выделения строк не происходит..
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший