Выделение строк и данных в списках 1С 8.3: от мыши до кода
Содержание
Выделить строки в списке 1С можно мышью: Ctrl + щелчок добавляет строку к выделению, Shift + щелчок захватывает диапазон, Ctrl + A берёт весь список. Но обычно «выделить» значит другое: оставить в списке только нужное, поставить это наверх или подсветить цветом. Для этого в 1С есть отбор, сортировка, группировка и условное оформление.
Ниже все четыре инструмента по порядку, затем настройка в конфигураторе, отчёты на СКД и код для программного управления списком. Пишем про платформу 8.3 с интерфейсом «Такси».
Как выделить несколько строк и что с ними делать
Выделение строк мышью нужно для групповых действий. Выделили несколько документов, и одной командой провели, пометили на удаление или напечатали.
- ✅
Ctrl+ щелчок — добавить или убрать одну строку. - ✅
Shift+ щелчок — выделить всё от текущей строки до нажатой. - ✅
Ctrl+A— выделить все строки, которые сейчас видны в списке с учётом отбора. - ✅ Протяжка мышью по левому краю строк — выделить подряд идущие.
Выделенные строки обрабатывают команды из командной панели списка и меню Ещё. Состав команд зависит от списка: в журнале документов есть проведение и печать, в справочнике — групповое изменение реквизитов, если оно включено в конфигурации.
Группового действия «Провести» или «Пометить на удаление» над выделением не отменить одной кнопкой. Перед массовой операцией сузьте список отбором и пересчитайте строки: то, что вы видите, и будет обработано.
Скопировать выделенное в таблицу можно командой копирования: строки уйдут в буфер, и их вставят в Excel или табличный документ. Копируются те колонки, что видны на экране, поэтому заранее включите нужные в настройке списка.
Быстрый отбор: оставить в списке только нужное
Отбор — самый частый способ «выделить» данные. Из пятисот документов остаются десять, и с ними легко работать.
Отбор по значению в текущей колонке
Встаньте курсором на ячейку с нужным значением, например на организацию или контрагента. Откройте контекстное меню правой кнопкой и выберите команду отбора по значению в текущей колонке. Список сразу сократится до строк с таким же значением. Вверху появится строка с условием; нажав на крестик возле него, вы снимаете отбор.
Поле поиска над списком
Если в форме есть строка поиска, вводите в неё номер документа, фрагмент наименования или контрагента. Поиск работает по видимым колонкам. Чтобы искать по значению определённой колонки, поставьте в неё курсор и вызовите поиск по текущему значению.
Полноценная настройка отбора
Когда нужно несколько условий сразу, откройте Ещё → Настроить список (в части форм эта команда есть прямо в командной панели). В окне настроек выберите вкладку Отбор и добавьте условия:
- Нажмите добавление нового условия и выберите поле, например
ДатаилиСумма документа. - Выберите вид сравнения: «Равно», «Не равно», «В списке», «Больше», «Содержит» и другие.
- Укажите значение и убедитесь, что флажок использования у условия включён.
- Нажмите
Завершить редактирование.
Условия объединяются по «И»: строка попадёт в список, только если подходит под все. Для логики «ИЛИ» создают группу условий и меняют её тип.
| Задача | Поле | Вид сравнения |
|---|---|---|
| Документы за месяц | Дата | Больше или равно + Меньше или равно |
| Только крупные суммы | Сумма документа | Больше, например 100 000 |
| Несколько контрагентов | Контрагент | В списке |
| Наименование по слову | Наименование | Содержит |
💡 Отбор по периоду проще задавать кнопкой выбора периода в шапке журнала, чем условиями по дате.
Отбор по ссылочным полям и датам
Со ссылочными полями (контрагент, организация, номенклатура) работает сравнение «Равно» и «В списке»: значение выбирают из справочника, а не вводят текстом. Если нужны все элементы одной группы справочника, используйте вид сравнения «В группе». Для текстовых полей подходит «Содержит», но оно медленнее, чем точное совпадение, поэтому на больших таблицах сначала сузьте выборку по периоду или организации.
С датами внимательнее: условие «Меньше или равно» с датой без времени отсечёт документы, проведённые в этот день после полуночи. Задавайте конец периода с временем 23:59:59 или используйте кнопку выбора периода, которая делает это сама.
Сортировка и группировка: поставить нужное наверх
Сортировка не скрывает строки, а меняет их порядок. Этого часто хватает: нужные записи оказываются в начале списка.
Самый быстрый способ — щелчок по заголовку колонки. Первый щелчок сортирует по возрастанию, повторный меняет направление, на заголовке появляется стрелка. Сортировка по заголовку действует, пока вы не закроете форму.
Если нужен постоянный порядок или многоуровневый, откройте Ещё → Настроить список и перейдите на вкладку Сортировка. Добавьте поля в нужной последовательности и задайте направление для каждого. Пример: сначала по организации, внутри неё по дате от новых к старым, потом по номеру.
Для документов 1С по умолчанию сортирует по дате и номеру. Если ваш список «сам» меняет порядок, откройте вкладку сортировки и посмотрите, что там задано.
Иерархия и группы
В справочниках с группами есть режим отображения «Иерархический список» и «Дерево». Группы играют роль готовой группировки: свернули ненужное и оставили на виду только нужную ветку. Режим переключают кнопкой вида в командной панели списка, если она там есть.
В обычных динамических списках произвольной группировки по полю обычно нет. Для неё используют отчёты на СКД (см. ниже) или разворачивают данные в обработке.
Условное оформление: выделить цветом
Цвет выделяет строки не меняя состав списка. Просроченные счета красным, оплаченные серым, крупные суммы жирным — всё это условное оформление.
Пользователь может настроить его сам: Ещё → Настроить список, вкладка Условное оформление. Порядок такой:
- Добавьте элемент оформления.
- В условии выберите поле и сравнение. Например,
Сумма документабольше 500 000. - В оформлении задайте цвет текста, цвет фона или шрифт.
- Укажите область применения: все поля строки или только определённые колонки.
- Завершите редактирование и проверьте список.
Если оформлений несколько, они применяются сверху вниз. Когда два правила красят одну ячейку, победит последнее, которое сработало.
Пользовательские настройки списка хранятся у каждого пользователя свои. Коллега у себя ничего не увидит, пока не настроит так же или пока вы не добавите оформление в конфигурацию.
Выделение в конфигураторе и в отчётах на СКД
Динамический список в форме
Разработчик настраивает список в конфигураторе. В редакторе формы выделите реквизит с типом «Динамический список» и откройте его свойства. Здесь задают основную таблицу, поля запроса и настройки: отбор, порядок и условное оформление, которые будут стоять по умолчанию у всех пользователей.
Условное оформление можно задать и на уровне самой формы: в редакторе формы на закладке Условное оформление. Там выбирают элемент формы (таблицу или её колонку), условие и оформление. Это подходит и для обычных, не динамических таблиц.
Если нужно, чтобы пользователь мог менять условия, в свойствах списка разрешают пользовательские настройки. Иначе параметры отбора и порядка остаются только в коде и конфигураторе.
Отчёты на СКД
В отчётах на системе компоновки данных те же четыре инструмента сидят в настройках отчёта:
- 🔹
Отбор— какие записи попадут в отчёт; - 🔹
Группировка— по каким полям строятся уровни итогов; - 🔹
Порядок— сортировка внутри групп; - 🔹
Условное оформление— подсветка строк и ячеек по условию.
В режиме предприятия настройки открывают командой Все действия → Изменить вариант или кнопкой Настройки в форме отчёта; название зависит от конфигурации. В простом виде показаны только основные поля, расширенный режим открывает всё. Если отчёт по группировке выводит лишние уровни, проверьте, какие поля стоят в структуре, и уберите ненужные.
Как сохранить удачную настройку
Настроили отбор, порядок и цвета, и не хотите повторять это завтра? Закройте окно настроек кнопкой завершения: настройки остаются в профиле пользователя и открываются при следующем входе в форму. Если нужны несколько наборов (например, «Просроченные» и «Крупные суммы»), обычно используют быстрые отборы в шапке списка или варианты отчёта. В отчётах на СКД вариант сохраняют отдельно, и его выбирают из списка.
Несколько сценариев на цифрах
Три типовые задачи, которые закрываются без программирования:
- Найти документы с большой суммой. Отбор
Сумма документабольше 100 000, сортировка по сумме по убыванию. В списке из 600 документов останется несколько десятков, самые крупные сверху. - Показать только непроведённые. Отбор по полю проведения «Проведён» равно «Нет». Выделите всё через
Ctrl+Aи проведите группой, предварительно проверив, что в отбор попали именно нужные документы. - Подсветить просрочку. Условное оформление: поле со сроком оплаты меньше текущей даты, цвет текста красный. Отбор при этом не нужен, весь список остаётся на месте, а проблемные строки видны с первого взгляда.
Сочетание отбора и сортировки обычно даёт больше, чем одно из них: сначала сужаете выборку, затем упорядочиваете остаток по смыслу.
Чем отличается отбор от поиска
Поиск перемещает курсор на найденную строку, но остальные остаются в списке. Отбор убирает всё лишнее. Для разовой проверки («есть ли такой контрагент») хватит поиска. Для работы с группой записей берите отбор, иначе придётся каждый раз искать вручную.
Программное выделение: отбор и строки из кода
Всё то, что пользователь делает в окне настроек, доступно и из кода. Для динамического списка Список в форме отбор добавляют так:
&НаСервере
Процедура УстановитьОтборПоОрганизации(Организация)
Список.Отбор.Элементы.Очистить();
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Организация;
ЭлементОтбора.Использование = Истина;
КонецПроцедуры
Процедура заменяет прежние условия отбором по одной организации. Если нужно сохранить условия пользователя, не вызывайте Очистить(), а ищите свой элемент и меняйте его значение.
Порядок задают так же, через Список.Порядок.Элементы, а оформление — через Список.УсловноеОформление.Элементы. Названия свойств совпадают с вкладками окна настроек, поэтому обычно проще один раз настроить нужное руками и повторить в коде.
Какие строки выделил пользователь
Чтобы получить выделенные строки на клиенте, обращаются к таблице формы. У таблицы на форме есть свойство ВыделенныеСтроки: для динамического списка это массив ключей записей, для таблицы значений — массив идентификаторов строк. Текущую строку даёт ТекущиеДанные.
&НаКлиенте
Процедура ОбработатьВыделенные(Команда)
Если Элементы.Список.ВыделенныеСтроки.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Для Каждого Ключ Из Элементы.Список.ВыделенныеСтроки Цикл
// Ключ — ссылка на элемент списка; дальше передайте массив на сервер
КонецЦикла;
КонецПроцедуры
Массив ссылок передавайте на сервер одним вызовом, а не вызывайте сервер для каждой строки. Для сотен документов разница заметна.
💡 Чтобы программно подсветить строку цветом, не меняя настройки пользователя, используют условное оформление формы, а не перекраску в коде: так проще поддерживать.
Типичные ошибки при работе со списками
Если список выглядит не так, как вы ждёте, чаще всего виноват один из пунктов.
- ❗ Список пустой после настройки. Остался включённым отбор от прошлой работы. Проверьте строку условий вверху и вкладку
Отбор. - ❗ Отбор не срабатывает по «В списке». Значение условия задано как одно значение, а не как список. Добавьте несколько значений в нужном виде.
- ❗ Цвет не появляется. Условие записано верно, но область применения выбрана на другую колонку. Либо выше стоит правило, которое перекрывает ваше.
- ❗ Сортировка по колонке не меняется. Колонка содержит вычисляемое поле или ссылку: порядок идёт по внутреннему представлению. Выберите для сортировки поле, которое отображает нужное значение.
- ❗ Настройки «слетели». Пользовательские настройки списка можно сбросить командой восстановления настроек по умолчанию; проверьте, не нажимали ли её.
- ❗ Групповая команда обработала лишнее. Выделение осталось от предыдущего отбора. Перед массовым действием снимите выделение и выберите заново.
Частые вопросы
Как выделить все строки в списке 1С?
Ctrl + A, когда фокус стоит в списке. Выделятся все строки, видимые с учётом текущего отбора.Как выделить строки не подряд?
Ctrl и нажимайте по нужным строкам по очереди. Повторный щелчок по строке снимает выделение.Можно ли выделить часть колонок в списке?
Почему коллега не видит мою подсветку строк?
Как вернуть список к исходному виду?
Настроить список.