Выбор нескольких значений в 1С:Предприятие — типичная задача, с которой сталкиваются и бухгалтеры, и кладовщики, и программисты. В одних случаях нужно отметить несколько строк в справочнике для групповой обработки, в других — передать массив значений в отчет или обработку, а иногда требуется программно сформировать список для дальнейшей работы. Проблема в том, что интерфейс 1С не всегда интуитивно понятен: где-то выбор осуществляется через Ctrl+клик, а где-то требуется писать код на встроенном языке.
В этой статье мы разберем все возможные способы выбора нескольких значений — от базовых (с помощью мыши и клавиатуры) до продвинутых (через запросы и программные конструкции). Особое внимание уделим скрытым функциям платформы 8.3, которые позволяют ускорить работу с большими списками данных. Материал будет полезен как начинающим пользователям, так и опытным разработчикам, которые хотят оптимизировать рутинные операции.
1. Ручной выбор нескольких строк в табличных частях и справочниках
Самый простой способ — использование стандартных сочетаний клавиш. Он работает в большинстве форм 1С, где данные представлены в виде таблицы: справочники, документы, отчеты с детализацией. Алгоритм действий:
- 🖱️ Зажмите клавишу
Ctrlи кликните левой кнопкой мыши по нужным строкам. Каждый клик добавляет/удаляет строку из выбора. - 📋 Для выбора диапазона: кликните на первую строку, затем зажмите
Shiftи кликните на последнюю строку диапазона. Все строки между ними будут выбраны. - ⌨️ В некоторых формах (например, в Управлении торговлей 11) работает сочетание
Ctrl+Aдля выбора всех строк на текущей странице.
Важно: в тонком клиенте и веб-клиенте поведение может отличаться. Например, в веб-версии иногда требуется удерживать Ctrl дольше, чтобы система распознала множественный выбор. Также обратите внимание на настройки интерфейса — в некоторых конфигурациях (например, 1С:ERP) множественный выбор по умолчанию отключен для отдельных справочников.
⚠️ Внимание: В формах с иерархическим списком (например, справочник "Номенклатура" с группами) выбор дочерних элементов может автоматически включать родительские узлы. Чтобы избежать этого, используйте фильтр по уровню иерархии перед выбором.
2. Выбор через контекстное меню и панель инструментов
Многие пользователи не знают, что в 1С 8.3 есть встроенные инструменты для групповой работы со строками. Рассмотрим их на примере справочника "Контрагенты":
- Откройте справочник и выделите нужные строки (например, через
Ctrl+клик). - Кликните правой кнопкой мыши на любом выделенном элементе — появится контекстное меню с пунктами:
- 📄 "Пометить на удаление" — для группового удаления.
- 📋 "Копировать в буфер" — скопирует выбранные значения в clipboard.
- 🔄 "Перенести в группу" — переместит отмеченные элементы в другую папку справочника.
- На панели инструментов (вверху формы) появится кнопка "Действия" с выпадающим списком дополнительных команд для выбранных строк.
- 📋 Выгрузить в табличный документ для дальнейшего анализа.
- 🔄 Передать в обработку как параметр.
- 📊 Использовать для построения отчетов с детализацией.
- 📋 "Поле списка с множественным выбором" — позволяет отмечать несколько элементов в выпадающем списке. Чтобы его активировать, в свойствах элемента формы установите
МножественныйВыбор = Истина. - 🔍 "Таблица значений" — универсальный инструмент для работы с наборами данных. Поддерживает сортировку, фильтрацию и группировку.
- 📊 "Дерево значений" — удобно для иерархических данных (например, выбор групп номенклатуры с подчиненными элементами).
В 1С:Управление торговлей 11.4 и новее в контекстном меню также доступен пункт "Экспорт выбранных", который позволяет сохранить отмеченные строки в Excel или CSV без предварительного формирования отчета.
Если контекстное меню не появляется при клике правой кнопкой, проверьте настройки интерфейса в Сервис → Параметры → Защита → Разрешить контекстное меню.
| Действие | Сочетание клавиш | Работает в |
|---|---|---|
| Выбор всех строк | Ctrl+A |
Толстый клиент, тонкий клиент (не всегда) |
| Добавление строки к выбору | Ctrl+клик |
Все клиенты |
| Выбор диапазона | Shift+клик |
Все клиенты |
| Отмена выбора | Esc |
Толстый клиент |
3. Программный выбор значений через встроенный язык
Если ручные методы не подходят (например, нужно выбрать значения по сложному условию), придется писать код. Рассмотрим основные конструкции на примере выбора элементов справочника Номенклатура:
// Выбор всех элементов справочника "Номенклатура" с ценой выше 1000
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Цена > 1000 Тогда
Сообщить(Выборка.Наименование);
// Здесь можно добавить элемент в массив или выполнить другое действие
КонецЕсли;
КонецЦикла;
Для групповой обработки удобно использовать массивы или структуры:
// Создаем массив для хранения выбранных ссылок
МассивВыбранных = Новый Массив();
// Добавляем элементы по условию
Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
Если НачатьСтроку(Выборка.Наименование, "ООО") Тогда
МассивВыбранных.Добавить(Выборка.Ссылка);
КонецЕсли;
КонецЦикла;
Для работы с табличными частями документов используйте метод ВыбратьСтроки():
// Выбираем строки документа "Заказ покупателя" с количеством > 10
ВыбранныеСтроки = ДокументОбъект.Товары.ВыбратьСтроки(
Новый Структура("Количество", Новый УсловиеСравнения(ТипСравнения.Больше, 10))
);
⚠️ Внимание: При работе с большими справочниками (более 10 000 записей) избегайте полного перебора черезВыбрать(). Используйте индексы или запросы для ускорения выборки. Например:Запрос = Новый Запрос;Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Цена > 1000";
Результат = Запрос.Выполнить();
4. Использование запросов для сложного выбора
Язык запросов 1С позволяет гибко отбирать данные по нескольким критериям. Например, выберем контрагентов из Москвы с оборотом более 1 млн рублей за последний год:
Запрос = Новый Запрос;Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Контрагенты.Ссылка КАК Контрагент
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО Реализация.Контрагент = Контрагенты.Ссылка
|ГДЕ
| Контрагенты.Город = &Город
| И СУММА(Реализация.СуммаДокумента) > &МинимальныйОборот
|СГРУППИРОВАТЬ ПО
| Контрагенты.Ссылка
|ИМЕЮЩИЕ
| СУММА(Реализация.СуммаДокумента) > &МинимальныйОборот";
Запрос.УстановитьПараметр("Город", "Москва");
Запрос.УстановитьПараметр("МинимальныйОборот", 1000000);
Результат = Запрос.Выполнить();
ВыборкаРезультата = Результат.Выбрать();
Результаты запроса можно:
Уточните условия отбора (даты, суммы, статусы)
Проверьте синтаксис на наличие опечаток
Используйте параметры вместо жесткого кода значений
Тестируйте запрос на небольшом объеме данных-->
Для визуализации результатов запроса удобно использовать системный отчет "Результат запроса", который автоматически формирует таблицу с возможностью экспорта в
Excel:(Результат.Выполнить()).Выгрузить();5. Выбор значений в формах с помощью элементов управления
В 1С 8.3 есть специализированные элементы интерфейса для множественного выбора:
Пример настройки поля с множественным выбором в конфигураторе:
- Откройте форму в режиме редактирования.
- Добавьте элемент
ПолеСписка. - В свойствах установите:
МножественныйВыбор = ИстинаИсточникДанных = Справочники.Контрагенты
- В модуле формы обработайте событие
ПриИзменениидля реакции на выбор пользователя.
Для динамического заполнения таблицы значений на основе выбора пользователя используйте следующий код:
Процедура КонтрагентыПриИзменении(Элемент)
ТаблицаЗначений.Очистить();
Для Каждого ВыбранныйЭлемент Из Элемент.ВыбранныеЗначения Цикл
НоваяСтрока = ТаблицаЗначений.Добавить();
НоваяСтрока.Контрагент = ВыбранныйЭлемент.Ссылка;
НоваяСтрока.Наименование = ВыбранныйЭлемент.Наименование;
КонецЦикла;
КонецПроцедуры
6. Особенности выбора в мобильном и веб-клиенте
В мобильном приложении 1С и веб-клиенте интерфейс упрощен, поэтому некоторые привычные способы выбора могут не работать. Вот ключевые отличия:
- 📱 В мобильном клиенте для выбора нескольких строк используйте долгое нажатие на элементе (появится галочка). Затем отмечайте остальные строки простым тапом.
- 🌐 В веб-клиенте сочетания клавиш (
Ctrl+A,Shift+клик) работают нестабильно. Рекомендуется использовать фильтры для сокращения списка перед выбором. - 🔄 В обоих клиентах отсутствует контекстное меню для выбранных строк. Вместо этого действия дублируются на панели инструментов.
Для веб-клиента актуальна следующая проблема: при большом количестве данных (более 1000 строк) выбор может тормозить. Решение:
- Используйте постраничный вывод (настройте размер страницы в параметрах формы).
- Применяйте предварительную фильтрацию по ключевым полям (например, по первой букве наименования).
- Для критичных операций (например, массовое изменение цен) разбейте задачу на части по 200–300 строк.
⚠️ Внимание: В мобильном клиенте 1С:ERP версии ниже 2.5.10 выбор более 50 строк одновременно может привести к ошибке "Превышен лимит памяти". Обновите приложение или используйте серверные обработки.
Как ускорить выбор в веб-клиенте?
1. Отключите в настройках браузера аппаратное ускорение (в Chrome: chrome://settings/system).
2. Используйте режим "Экономия трафика" в браузере.
3. Очистите кэш 1С через Администрирование → Очистка кэша.
4. Попробуйте другой браузер (например, Firefox вместо Chrome для больших списков).
7. Автоматизация выбора через внешние обработки
Если в типовой конфигурации нет удобного инструмента для группового выбора, можно создать внешнюю обработку. Например, обработка для массового переноса номенклатуры между складами:
- 📄 Создайте новую обработку в конфигураторе.
- 🔧 Добавьте табличное поле с возможностью множественного выбора.
- 📊 Настройте кнопку "Выполнить", которая будет обрабатывать выбранные строки.
- 💾 Сохраните обработку как внешний файл (
.epf) и подключите ее в пользовательском режиме черезФайл → Открыть.
Пример кода для обработки массового изменения реквизита:
Процедура Выполнить(Команда)
Для Каждого ВыбраннаяСтрока Из ТаблицаЗначений Цикл
Объект = ВыбраннаяСтрока.Ссылка.ПолучитьОбъект();
Объект.Реквизит = НовоеЗначение; // Например, изменим ответственного менеджера
Объект.Записать();
КонецЦикла;
Сообщить("Обработано " + ТаблицаЗначений.Количество() + " записей");
КонецПроцедуры
Готовые обработки для типовых задач можно найти:
- 📂 На сайте Инфостарт (раздел "Обработки для 1С").
- 📂 В каталоге 1С:ИТС (требуется подписка).
- 📂 На форумах 1С (например,
forum.1c.ru).
Внешние обработки позволяют обойти ограничения типовой конфигурации, но требуют прав на изменение данных. Всегда тестируйте их на копии базы перед использованием в рабочей системе.
8. Ошибки при выборе нескольких значений и их решения
Даже опытные пользователи сталкиваются с проблемами при групповой работе с данными. Рассмотрим типичные ошибки и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
Не работает Ctrl+клик |
Отключен множественный выбор в настройках формы | Проверьте свойство МножественныйВыбор в конфигураторе |
| Выбор сбрасывается при прокрутке | Ограничение веб-клиента или мобильного приложения | Используйте фильтры для сокращения списка |
| Ошибка "Объект не найден" при программном выборе | Неверная ссылка на объект или права доступа | Проверьте существование объекта через Справочники.Имя.НайтиПоНаименованию() |
| Зависание при выборе >1000 строк | Недостаточно памяти клиента | Разбейте задачу на части или используйте серверные процедуры |
Если при программном выборе возникает ошибка "Поле объекта не найдено", убедитесь, что:
- Вы используете актуальную версию конфигурации (в некоторых обновлениях меняется структура метаданных).
- Правильно указано имя реквизита (с учетом регистра в 1С 8.3).
- У пользователя достаточно прав на чтение/изменение данных.
⚠️ Внимание: При работе с распределенными информационными базами (РИБ) выбор данных через запросы может возвращать неактуальные записи из других узлов. Всегда проверяйте свойство ПометкаУдаления и используйте фильтр по текущему узлу РИБ.
FAQ: Частые вопросы по выбору значений в 1С
Как выбрать все строки в табличной части документа?
В большинстве форм работает сочетание Ctrl+A. Если не срабатывает:
- Кликните на первую строку.
- Прокрутите вниз до последней строки.
- Зажмите
Shiftи кликните на последнюю строку.
В веб-клиенте может потребоваться использовать кнопку "Выбрать все" на панели инструментов.
Можно ли выбрать значения из разных справочников одновременно?
Прямого механизма нет, но есть обходные пути:
- Создайте общий реквизит (например, "ПризнакВыбора") во всех справочниках и отбирайте по нему.
- Используйте запрос с объединением (
ОБЪЕДИНИТЬ) для выборки из нескольких справочников. - Напишите обработку, которая последовательно обходит нужные справочники.
Почему при экспорте выбранных строк в Excel экспортируются не все данные?
Вероятные причины:
- В настройках экспорта установлен лимит на количество строк (проверьте параметр
МаксимальноеКоличествоСтрок). - Не все колонки таблицы включены в экспорт (настройте видимость столбцов перед экспортом).
- В веб-клиенте экспорт работает через буфер обмена, который может обрезать данные. Используйте серверный экспорт через
ЗаписьXML.
Как сохранить выбранные значения для повторного использования?
Способы сохранения:
- В временное хранилище:
Хранилище = Новый ХранилищеЗначения();Хранилище.Установить("ВыбранныеКонтрагенты", МассивВыбранных);
- В реквизит формы (если выбор делается в обработке).
- В регистр сведений (для долговременного хранения между сеансами).
Для восстановления выбора используйте:
МассивВыбранных = Хранилище.Получить("ВыбранныеКонтрагенты");
Можно ли выбрать строки по цвету в таблице?
Прямой выбор по цвету невозможен, но можно:
- Использовать условное оформление для подсветки строк по критерию, а затем выбрать их вручную.
- Написать обработку, которая анализирует цвет ячейки через свойство
ЦветТекстаи добавляет строки в массив. - В отчетах с детализацией применить фильтр по тому же условию, что и используется для окраски.