Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выделить строки формы списка по фильтру (программное выделение строк списка)          
Constantus Подменю пользователя
сообщение 23.02.17, 11:22
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!

УТ 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 Подменю пользователя
сообщение 23.02.17, 12:28
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

CTRL+A ?

Constantus Подменю пользователя
сообщение 23.02.17, 12:47
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 15:28 * ,

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

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

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

Flexy Подменю пользователя
сообщение 23.02.17, 12:55
Сообщение #4

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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


Проверка на есть отбор или нет - это имхо вообще ни о чем. Я могу установить отбор в списке где 2000 документов так, что в отборе у меня их будет 1999.

Сообщение отредактировал Flexy - 23.02.17, 12:58

Constantus Подменю пользователя
сообщение 23.02.17, 13:13
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Понятно, но как тогда таки выделить отобранные фильтром строки???

Flexy Подменю пользователя
сообщение 23.02.17, 13:18
Сообщение #6

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

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


Сообщение отредактировал Flexy - 23.02.17, 13:19

Спасибо сказали: andreykyiv@bigmir.net, Constantus,

Constantus Подменю пользователя
сообщение 24.02.17, 12:32
Сообщение #7

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Вчера, 16:18 * ,


Куда данный код необходимо вставить?

Flexy Подменю пользователя
сообщение 24.02.17, 12:36
Сообщение #8

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Constantus @ Сегодня, 12:32 * ,
В Обработчик события формы списка документов "ПриПолученииДанных"

Constantus Подменю пользователя
сообщение 24.02.17, 12:42
Сообщение #9

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 15:36 * ,

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

Вставил код в кнопку "Массовая печать"

Constantus Подменю пользователя
сообщение 05.03.17, 11:53
Сообщение #10

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

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


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

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

Как проверить: есть отбор или нет?

logist Подменю пользователя
сообщение 05.03.17, 13:03
Сообщение #11

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Constantus @ 05.03.17, 12:53) *
Как проверить: есть отбор или нет?

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Constantus Подменю пользователя
сообщение 09.03.17, 11:06
Сообщение #12

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

logist @ 05.03.17, 16:03 * ,


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


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

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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.04.24, 6:01
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!