Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выделить строки формы списка по фильтру (программное выделение строк списка)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Constantus
Приветствую, форумчане!

УТ 10.3.20.1, Моби-С 5.5, "ABBYY Ukraine", обычные

Форма документа "Реализация". На форме можно отфильтровать документы по нужным параметрам.
Как спрашивал ранее про массовую печать (http://pro1c.org.ua/topic/massovaya-pechat-iz-formy-spiska-35459/?st=0&gopid=123325&#entry123325), массовую печать можно сделать, если выделить (множественный выбор) нужные документы в списке.

Можно ли как-нибуть выделить в форме списка все строки сразу после настройки фильтрации или как-нить передать параметры настройки фильтра в некую Процедуру, которая будет выделять строки программно попараметрам фильтра?
Flexy
CTRL+A ?
Constantus
Flexy @ Сегодня, 15:28 необходимо зарегистрироваться для просмотра ссылки ,

Хороший вариант, как его программно прописать?

Ситуация такая. На коде "Масовая печать" нужно перед печатью проверить включен ли фильтр (т.е. есть Отбор или нету). Далее, если включен Отбор (фильтр), то провести выделение всех отобранных строк и пустить печать.

Т.е. обезопасить себя на случай, если пользователь нажмет "Массовую печать" и пойдет печать огромного количества документов
Flexy
Constantus @ Сегодня, 12:47 необходимо зарегистрироваться для просмотра ссылки ,
Зачем так сложно? Не проще что-то типа
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Выделенно больше 1000000 строк!!! Вы уверены, что их все надо печатать??? , Режим, 0);
Если Ответ = КодВозвратаДиалога.Нет Тогда
    Возврат;
КонецЕсли;


Проверка на есть отбор или нет - это имхо вообще ни о чем. Я могу установить отбор в списке где 2000 документов так, что в отборе у меня их будет 1999.
Constantus
Понятно, но как тогда таки выделить отобранные фильтром строки???
Flexy
Построитель = Новый ПостроительЗапроса;
    ЭлементыФормы.Список.ВыделенныеСтроки.Очистить();
        Источник = Новый ОписаниеИсточникаДанных(ДокументСписок);
    Построитель.ИсточникДанных = Источник;
    Построитель.Выполнить();
    Т = Построитель.Результат.Выгрузить();
    Для Каждого Строка Из Т Цикл
        ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка);
    КонецЦикла;
Constantus
Flexy @ Вчера, 16:18 необходимо зарегистрироваться для просмотра ссылки ,


Куда данный код необходимо вставить?
Flexy
Constantus @ Сегодня, 12:32 необходимо зарегистрироваться для просмотра ссылки ,
В Обработчик события формы списка документов "ПриПолученииДанных"
Constantus
Flexy @ Сегодня, 15:36 необходимо зарегистрироваться для просмотра ссылки ,

Благодарю! Разобрался.

Вставил код в кнопку "Массовая печать"
Constantus
Цитата(Flexy @ 23.02.17, 16:18) необходимо зарегистрироваться для просмотра ссылки
Построитель = Новый ПостроительЗапроса;
    ЭлементыФормы.Список.ВыделенныеСтроки.Очистить();
        Источник = Новый ОписаниеИсточникаДанных(ДокументСписок);
    Построитель.ИсточникДанных = Источник;
    Построитель.Выполнить();
    Т = Построитель.Результат.Выгрузить();
    Для Каждого Строка Из Т Цикл
        ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка);
    КонецЦикла;


А как можно проверить, что данные Построителя по фильтру не задействованы? Когда я использую данный код, то в случае отсутствия каких-либо фильтров, печатаются все документы списка...

Т.е. если нет ни одного отбора, который сделал пользователь, то не выполнять никаких действий.

Как проверить: есть отбор или нет?
logist
Цитата(Constantus @ 05.03.17, 12:53) необходимо зарегистрироваться для просмотра ссылки
Как проверить: есть отбор или нет?

Если ЭлементыФормы.Список.ВыделенныеСтроки.Количество() = 0 Тогда // Нет выбранных строк
Constantus
logist @ 05.03.17, 16:03 необходимо зарегистрироваться для просмотра ссылки ,


Построитель = Новый ПостроительЗапроса;
    ЭлементыФормы.Список.ВыделенныеСтроки.Очистить();
        Источник = Новый ОписаниеИсточникаДанных(ДокументСписок);
    Построитель.ИсточникДанных = Источник;
    Построитель.Выполнить();
    Т = Построитель.Результат.Выгрузить();
    Для Каждого Строка Из Т Цикл
        ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка);
    КонецЦикла;


Данный код срабатывает при любом раскладе. Т.е. при неосторожном обращении с огнем он выделяет все записи в форме списка. Как можно проверить, если выделяются все записи в форме списка, и если выделены все записи, то выполнять кокое-то действие. Или иначе, если Отбор пустой, то не проводить в действие исполнение данного кода?

Код
Если ЭлементыФормы.Список.ВыделенныеСтроки.Количество() = 0 Тогда // Нет выбранных строк
не корректен в моем случае...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.