Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 сен 2021, 19:02

Эмуляция "выделить все" в динамическом списке

Автор ef0din, 25 ноя 2019, 17:22

0 Пользователей и 1 гость просматривают эту тему.

ef0din

Добрый день, господа и дамы!
Есть задача по изменению формы списка. Задачу сделал, но возникла такая проблема: среди прочего необходима кнопка "выделить все". Список динамический.
Нашел такой способ на просторах гугла:
wsh = Новый COMОбъект("WSCript.Shell");
ЭтаФорма.ТекущийЭлемент = Элементы.Список;
wsh.sendkeys("^{A}");


У себя на компе в файловой базе проверял изначально - норм отрабатывает, а на сервере - нет. Нашел такую информацию, что начиная с некоторых версий Windows проблема эта возникает. Я так понял, что дела в правах. Права, естественно ,никто пользакам не даст нужные. Вообщем, я так понимаю, что данный способ не актуален оказался на текущий момент.
Возможно, кто уже сталкивался с подобной задачей: подскажите пож. способы реализации.

MuI_I_Ika

Вариант 1: Научить пользователей пользоваться клавиатурой: CTRL+A
Вариант 2: не придумал.

Вообще не понятно причем тут сервер. Все манипуляции с элементами формы должны происходить на клиенте.

LexaK

в корне не правильный подход что-то читать с экрана!!! :befhbt:
читайте ИТС, вот одна статья
Цитировать
21.04.2014 Получение данных динамического списка

Реализовано в версии 8.3.6.1977.

Мы реализовали возможность простого и удобного получения данных, отображаемых с помощью динамического списка.

Данные динамического списка могут понадобиться вам для того, чтобы распечатать их в нестандартном, «специфическом» виде. Или для того, чтобы выполнить с ними те или иные действия. Например, послать письмо всем контрагентам, которых вы отобрали в списке по некоторым признакам.

Кроме этого существует целый ряд задач, в которых пользователь, помимо списка элементов, хочет видеть ещё и итоговые данные, связанные с этим списком. Например, отобрав товары некоторой товарной группы и некоторого поставщика, он тут же хочет увидеть общее количество таких товаров в базе.

Динамический список сам по себе не может предоставить вам такую информацию. Задача динамического списка - обеспечить быстрый просмотр больших объёмов данных. Поэтому он считывает данные порциями, требуемыми для отображения на одном-двух экранах. И «ничего не знает», например, об общем количестве данных, которые ему предстоит считать.

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

Раньше вы могли это сделать. Но далеко не всегда это было просто. Ведь кроме текста исходного запроса, по которому работает динамический список, вам нужно было знать все отборы, сортировки и др. параметры, которые пользователь интерактивно установил в таблице, отображающей данные.

Теперь эта задача решается просто. У таблицы динамического списка появились два новых метода:

    ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    ПолучитьИсполняемыеНастройкиКомпоновкиДанных().

Таким образом, вы получаете и саму схему компоновки данных, и, главное, все её настройки, благодаря которым пользователь видит список именно таким. Вам остаётся только лишь программно скомпоновать макет и вывести его в коллекцию значений (для программной обработки) или в табличный документ (для отображения):

В результате вы получите структуру (или отчет), содержащую колонки и строки, выводимые в таблицу динамического списка.

Важным моментом является то, что схема и настройки, которые вы получаете от таблицы динамического списка, учитывают, в том числе, видимость колонок и применённый поиск. Так как настройки получаются отдельно, вы можете для своих целей изменить состав полей и получить, например, все колонки списка, а не только те, которые видны пользователю.

При выводе в табличный документ есть ещё один приятный момент. В общем, внешний вид отчета будет соответствовать внешнему виду таблицы динамического списка в момент получения схемы и настроек. В том числе и условному оформлению таблицы. Какие-то дополнительные действия понадобятся вам только в том случае, если вы захотите перенести в отчёт ещё и условное оформление формы.
ответ Понравился? (в смысле пригодился?)

ef0din

Да то понятно, что научить. Но офисы по всей стране, всех, кто не в курсе - не научишь. Да и ради спортивного интереса, в том числе, любопытно уже: вообще как-то решается это или нет.
Но, все равно, спасибо!
Добавлено: 26 ноя 2019, 12:15


Цитата: LexaK от 26 ноя 2019, 09:08
в корне не правильный подход что-то читать с экрана!!! :befhbt:
читайте ИТС, вот одна статья
Цитировать
21.04.2014 Получение данных динамического списка

Реализовано в версии 8.3.6.1977.

Мы реализовали возможность простого и удобного получения данных, отображаемых с помощью динамического списка.

Данные динамического списка могут понадобиться вам для того, чтобы распечатать их в нестандартном, «специфическом» виде. Или для того, чтобы выполнить с ними те или иные действия. Например, послать письмо всем контрагентам, которых вы отобрали в списке по некоторым признакам.

Кроме этого существует целый ряд задач, в которых пользователь, помимо списка элементов, хочет видеть ещё и итоговые данные, связанные с этим списком. Например, отобрав товары некоторой товарной группы и некоторого поставщика, он тут же хочет увидеть общее количество таких товаров в базе.

Динамический список сам по себе не может предоставить вам такую информацию. Задача динамического списка - обеспечить быстрый просмотр больших объёмов данных. Поэтому он считывает данные порциями, требуемыми для отображения на одном-двух экранах. И «ничего не знает», например, об общем количестве данных, которые ему предстоит считать.

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

Раньше вы могли это сделать. Но далеко не всегда это было просто. Ведь кроме текста исходного запроса, по которому работает динамический список, вам нужно было знать все отборы, сортировки и др. параметры, которые пользователь интерактивно установил в таблице, отображающей данные.

Теперь эта задача решается просто. У таблицы динамического списка появились два новых метода:

    ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    ПолучитьИсполняемыеНастройкиКомпоновкиДанных().

Таким образом, вы получаете и саму схему компоновки данных, и, главное, все её настройки, благодаря которым пользователь видит список именно таким. Вам остаётся только лишь программно скомпоновать макет и вывести его в коллекцию значений (для программной обработки) или в табличный документ (для отображения):

В результате вы получите структуру (или отчет), содержащую колонки и строки, выводимые в таблицу динамического списка.

Важным моментом является то, что схема и настройки, которые вы получаете от таблицы динамического списка, учитывают, в том числе, видимость колонок и применённый поиск. Так как настройки получаются отдельно, вы можете для своих целей изменить состав полей и получить, например, все колонки списка, а не только те, которые видны пользователю.

При выводе в табличный документ есть ещё один приятный момент. В общем, внешний вид отчета будет соответствовать внешнему виду таблицы динамического списка в момент получения схемы и настроек. В том числе и условному оформлению таблицы. Какие-то дополнительные действия понадобятся вам только в том случае, если вы захотите перенести в отчёт ещё и условное оформление формы.


Да, спасибо. Но это я видел. И таким образом итоги получаю. Но, помимо этого, хотелось таки добиться выделения всех строк по кнопке.
Добавлено: 26 ноя 2019, 14:22


Вообщем, если интересно кому, в итоге решилось через:

wsh = Новый COMОбъект("WSCript.Shell");
ЭтаФорма.ТекущийЭлемент = Элементы.Список;
wsh.sendkeys("{END}+{HOME}");


Видимо, дело все-таки в раскладке.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск