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

Выделение заданного количества строк в списке.

Автор redoks, 13 апр 2016, 09:17

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

redoks

    День добрый!
Сформировал журнал документов, на форум повесил поле для ввода числа - N и кнопку "выделить".
Нужно при нажатии на кнопку, выделить в списке документов N записей, начиная с той, на которой стоит курсор в текущий момент.

Как человек имеющий опыт в программировании понимаю что это легко делается.
Как человек не имеющий опыт работы с 1С, не представляю как это сделать.

Процедура ВыделитьПак(Команда)
НомерТекущейСтроки = Элементы.Список.ТекущаяСтрока
        ...?
КонецПроцедуры

:dfbsdfbsdf:


З.Ы.: так же можно посоветовать хороший ресурс со справочником функций и по работе с элементами, буду признателен.

vitasw

никак. Динамический список не индексируется. что находится в следующей строке узнать невозможно.

redoks

НомерТекущейСтроки = Элементы.Список.ТекущаяСтрока;
КоличествоСтрок = Элементы.КоличествоСтрокВыбора;


Для каждого стр из  Элементы.Список.ТекущиеДанные Цикл

Если стр.ПометкаУдаления = ложь
Тогда
        Элементы.Список.ВыделенныеСтроки.Добавить(стр.НомерСтроки);
КонецЕсли;

Если Элементы.Список.ВыделенныеСтроки.Количество() = КоличествоСтрок
Тогда
Прервать;
КонецЕсли;

КонецЦикла;


А как прописать что с текущей позиции?

vitasw

Цитата: redoks от 13 апр 2016, 09:38Для каждого стр из  Элементы.Список.ТекущиеДанные Цикл
Это бессмыслица. Текущие данные - это данные строки, перебором не выполняется.

redoks

Цитата: vitasw от 13 апр 2016, 09:46
Цитата: redoks от 13 апр 2016, 09:38Для каждого стр из  Элементы.Список.ТекущиеДанные Цикл
Это бессмыслица. Текущие данные - это данные строки, перебором не выполняется.
тогда что вот это: Элементы.Список.ТекущаяСтрока?
Добавлено: 13 апр 2016, 11:36


Ну и как тогда сделать?
Есть динамический список, нужно просто выделять по 100 записей, так же как бы я это делал бы мышкой с зажатой клавишей ctrl

vitasw

Цитата: redoks от 13 апр 2016, 10:09тогда что вот это: Элементы.Список.ТекущаяСтрока?

Для вашего уровня знаний текущая строка и текущие данные - это одно и тоже
Цитата: redoks от 13 апр 2016, 10:09Ну и как тогда сделать?

что в моем ответе
Цитата: vitasw от 13 апр 2016, 09:28никак.
вам непонятно?

LexaK

"ширее" надо думать товариши ! :befhbt:
задачка показалась интересной, решил попробовать решить.
Конечно практического смысла особо не видно, так как все данные, в 1С принято получать запросами и др.механизмами 1С.
тем более что динамические списки и элементы формы связанные с ними не дают обычного доступа к данным.
можно конечно придумать практическое применение такой задачки
например: Есть журнал документов, пользователю необходимо из журнала, порциями (по 100 документов) выполнять с ними какие-то действия, например пакетная печать, и т.д.

ЕСТЬ РЕШЕНИЕ!!!

1С (под Виндами) отлично понимает посылку кнопок (SendKeys)

вот рабочий пример, отметки строк в журнале документов.


&НаКлиенте
Процедура КомандаВыделить(Команда)

Ws = Новый COMОбъект("Wscript.shell");
ЭтаФорма.ТекущийЭлемент = Элементы.Список;
Для лкИндекс=0 По КолОтм Цикл
Ws.SendKeys("+{DOWN}");
КонецЦикла;

КонецПроцедуры






если помогло нажмите: Спасибо!

cska-fanat-kz

LexaK, а по времени сколько выполняется посылка ста нажатий?
не успеют в другое окно переключиться? )
"+"-это CTRL?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

LexaK

cska-fanat-kz, "+" - это шифт
у меня в тестовой базе 100 строчек отмечается около секунды
1000 - примерно 6 секунд,
да наверно большие объемы данных не оптимально так обрабатывать,
лучше использовать отборы в списке и кнопками - Стрл/А (выделить все)
если помогло нажмите: Спасибо!

redoks

лкИндекс - индекс текущей строки?

И где бы добротный справочник по методам и функциям для 1С найти.
Мне гугл ничего толкового не дал.

Теги:

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

Рейтинг@Mail.ru

Поиск