Форма документа "Реализация". На форме можно отфильтровать документы по нужным параметрам. Как спрашивал ранее про массовую печать (http://pro1c.org.ua/topic/massovaya-pechat-iz-formy-spiska-35459/?st=0&gopid=123325&#entry123325), массовую печать можно сделать, если выделить (множественный выбор) нужные документы в списке.
Можно ли как-нибуть выделить в форме списка все строки сразу после настройки фильтрации или как-нить передать параметры настройки фильтра в некую Процедуру, которая будет выделять строки программно попараметрам фильтра?
Ситуация такая. На коде "Масовая печать" нужно перед печатью проверить включен ли фильтр (т.е. есть Отбор или нету). Далее, если включен Отбор (фильтр), то провести выделение всех отобранных строк и пустить печать.
Т.е. обезопасить себя на случай, если пользователь нажмет "Массовую печать" и пойдет печать огромного количества документов
Танцор с Бубном
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 231 раз
Рейтинг: 0
Constantus @ Сегодня, 12:47
, Зачем так сложно? Не проще что-то типа
Режим = РежимДиалогаВопрос.ДаНет; Ответ = Вопрос("Выделенно больше 1000000 строк!!! Вы уверены, что их все надо печатать??? , Режим, 0); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли;
Проверка на есть отбор или нет - это имхо вообще ни о чем. Я могу установить отбор в списке где 2000 документов так, что в отборе у меня их будет 1999.
Танцор с Бубном
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 231 раз
Рейтинг: 0
Построитель = Новый ПостроительЗапроса; ЭлементыФормы.Список.ВыделенныеСтроки.Очистить(); Источник = Новый ОписаниеИсточникаДанных(ДокументСписок); Построитель.ИсточникДанных = Источник; Построитель.Выполнить(); Т = Построитель.Результат.Выгрузить(); Для Каждого Строка Из Т Цикл ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка); КонецЦикла;
Построитель = Новый ПостроительЗапроса; ЭлементыФормы.Список.ВыделенныеСтроки.Очистить(); Источник = Новый ОписаниеИсточникаДанных(ДокументСписок); Построитель.ИсточникДанных = Источник; Построитель.Выполнить(); Т = Построитель.Результат.Выгрузить(); Для Каждого Строка Из Т Цикл ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка); КонецЦикла;
А как можно проверить, что данные Построителя по фильтру не задействованы? Когда я использую данный код, то в случае отсутствия каких-либо фильтров, печатаются все документы списка...
Т.е. если нет ни одного отбора, который сделал пользователь, то не выполнять никаких действий.
Построитель = Новый ПостроительЗапроса; ЭлементыФормы.Список.ВыделенныеСтроки.Очистить(); Источник = Новый ОписаниеИсточникаДанных(ДокументСписок); Построитель.ИсточникДанных = Источник; Построитель.Выполнить(); Т = Построитель.Результат.Выгрузить(); Для Каждого Строка Из Т Цикл ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка); КонецЦикла;
Данный код срабатывает при любом раскладе. Т.е. при неосторожном обращении с огнем он выделяет все записи в форме списка. Как можно проверить, если выделяются все записи в форме списка, и если выделены все записи, то выполнять кокое-то действие. Или иначе, если Отбор пустой, то не проводить в действие исполнение данного кода?
Код
Если ЭлементыФормы.Список.ВыделенныеСтроки.Количество() = 0 Тогда // Нет выбранных строк
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!