Выбор нескольких значений в 1С:Предприятие — типичная задача, с которой сталкиваются и бухгалтеры, и кладовщики, и программисты. В одних случаях нужно отметить несколько строк в справочнике для групповой обработки, в других — передать массив значений в отчет или обработку, а иногда требуется программно сформировать список для дальнейшей работы. Проблема в том, что интерфейс не всегда интуитивно понятен: где-то выбор осуществляется через Ctrl+клик, а где-то требуется писать код на встроенном языке.

В этой статье мы разберем все возможные способы выбора нескольких значений — от базовых (с помощью мыши и клавиатуры) до продвинутых (через запросы и программные конструкции). Особое внимание уделим скрытым функциям платформы 8.3, которые позволяют ускорить работу с большими списками данных. Материал будет полезен как начинающим пользователям, так и опытным разработчикам, которые хотят оптимизировать рутинные операции.

1. Ручной выбор нескольких строк в табличных частях и справочниках

Самый простой способ — использование стандартных сочетаний клавиш. Он работает в большинстве форм , где данные представлены в виде таблицы: справочники, документы, отчеты с детализацией. Алгоритм действий:

  • 🖱️ Зажмите клавишу Ctrl и кликните левой кнопкой мыши по нужным строкам. Каждый клик добавляет/удаляет строку из выбора.
  • 📋 Для выбора диапазона: кликните на первую строку, затем зажмите Shift и кликните на последнюю строку диапазона. Все строки между ними будут выбраны.
  • ⌨️ В некоторых формах (например, в Управлении торговлей 11) работает сочетание Ctrl+A для выбора всех строк на текущей странице.

Важно: в тонком клиенте и веб-клиенте поведение может отличаться. Например, в веб-версии иногда требуется удерживать Ctrl дольше, чтобы система распознала множественный выбор. Также обратите внимание на настройки интерфейса — в некоторых конфигурациях (например, 1С:ERP) множественный выбор по умолчанию отключен для отдельных справочников.

📊 Какой клиент 1С вы используете чаще?
Толстый клиент
Тонкий клиент
Веб-клиент
Мобильное приложение
⚠️ Внимание: В формах с иерархическим списком (например, справочник "Номенклатура" с группами) выбор дочерних элементов может автоматически включать родительские узлы. Чтобы избежать этого, используйте фильтр по уровню иерархии перед выбором.

2. Выбор через контекстное меню и панель инструментов

Многие пользователи не знают, что в 1С 8.3 есть встроенные инструменты для групповой работы со строками. Рассмотрим их на примере справочника "Контрагенты":

  1. Откройте справочник и выделите нужные строки (например, через Ctrl+клик).
  2. Кликните правой кнопкой мыши на любом выделенном элементе — появится контекстное меню с пунктами:
    • 📄 "Пометить на удаление" — для группового удаления.
    • 📋 "Копировать в буфер" — скопирует выбранные значения в clipboard.
    • 🔄 "Перенести в группу" — переместит отмеченные элементы в другую папку справочника.
  3. На панели инструментов (вверху формы) появится кнопка "Действия" с выпадающим списком дополнительных команд для выбранных строк.
  4. В 1С:Управление торговлей 11.4 и новее в контекстном меню также доступен пункт "Экспорт выбранных", который позволяет сохранить отмеченные строки в Excel или CSV без предварительного формирования отчета.

    💡

    Если контекстное меню не появляется при клике правой кнопкой, проверьте настройки интерфейса в Сервис → Параметры → Защита → Разрешить контекстное меню.

    Действие Сочетание клавиш Работает в
    Выбор всех строк Ctrl+A Толстый клиент, тонкий клиент (не всегда)
    Добавление строки к выбору Ctrl+клик Все клиенты
    Выбор диапазона Shift+клик Все клиенты
    Отмена выбора Esc Толстый клиент

    3. Программный выбор значений через встроенный язык

    Если ручные методы не подходят (например, нужно выбрать значения по сложному условию), придется писать код. Рассмотрим основные конструкции на примере выбора элементов справочника Номенклатура:

    // Выбор всех элементов справочника "Номенклатура" с ценой выше 1000
    

    Выборка = Справочники.Номенклатура.Выбрать();

    Пока Выборка.Следующий() Цикл

    Если Выборка.Цена > 1000 Тогда

    Сообщить(Выборка.Наименование);

    // Здесь можно добавить элемент в массив или выполнить другое действие

    КонецЕсли;

    КонецЦикла;

    Для групповой обработки удобно использовать массивы или структуры:

    // Создаем массив для хранения выбранных ссылок
    

    МассивВыбранных = Новый Массив();

    // Добавляем элементы по условию

    Выборка = Справочники.Контрагенты.Выбрать();

    Пока Выборка.Следующий() Цикл

    Если НачатьСтроку(Выборка.Наименование, "ООО") Тогда

    МассивВыбранных.Добавить(Выборка.Ссылка);

    КонецЕсли;

    КонецЦикла;

    Для работы с табличными частями документов используйте метод ВыбратьСтроки():

    // Выбираем строки документа "Заказ покупателя" с количеством > 10
    

    ВыбранныеСтроки = ДокументОбъект.Товары.ВыбратьСтроки(

    Новый Структура("Количество", Новый УсловиеСравнения(ТипСравнения.Больше, 10))

    );

    ⚠️ Внимание: При работе с большими справочниками (более 10 000 записей) избегайте полного перебора через Выбрать(). Используйте индексы или запросы для ускорения выборки. Например:

    Запрос = Новый Запрос;
    

    Запрос.Текст =

    "ВЫБРАТЬ

    | Номенклатура.Ссылка КАК Ссылка

    |ИЗ

    | Справочник.Номенклатура КАК Номенклатура

    |ГДЕ

    | Номенклатура.Цена > 1000";

    Результат = Запрос.Выполнить();

    4. Использование запросов для сложного выбора

    Язык запросов позволяет гибко отбирать данные по нескольким критериям. Например, выберем контрагентов из Москвы с оборотом более 1 млн рублей за последний год:

    Запрос = Новый Запрос;
    

    Запрос.Текст =

    "ВЫБРАТЬ РАЗЛИЧНЫЕ

    | Контрагенты.Ссылка КАК Контрагент

    |ИЗ

    | Документ.РеализацияТоваровУслуг КАК Реализация

    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

    | ПО Реализация.Контрагент = Контрагенты.Ссылка

    |ГДЕ

    | Контрагенты.Город = &Город

    | И СУММА(Реализация.СуммаДокумента) > &МинимальныйОборот

    |СГРУППИРОВАТЬ ПО

    | Контрагенты.Ссылка

    |ИМЕЮЩИЕ

    | СУММА(Реализация.СуммаДокумента) > &МинимальныйОборот";

    Запрос.УстановитьПараметр("Город", "Москва");

    Запрос.УстановитьПараметр("МинимальныйОборот", 1000000);

    Результат = Запрос.Выполнить();

    ВыборкаРезультата = Результат.Выбрать();

    Результаты запроса можно:

    • 📋 Выгрузить в табличный документ для дальнейшего анализа.
    • 🔄 Передать в обработку как параметр.
    • 📊 Использовать для построения отчетов с детализацией.

    Уточните условия отбора (даты, суммы, статусы)

    Проверьте синтаксис на наличие опечаток

    Используйте параметры вместо жесткого кода значений

    Тестируйте запрос на небольшом объеме данных-->

    Для визуализации результатов запроса удобно использовать системный отчет "Результат запроса", который автоматически формирует таблицу с возможностью экспорта в Excel:

    (Результат.Выполнить()).Выгрузить();

    5. Выбор значений в формах с помощью элементов управления

    В 1С 8.3 есть специализированные элементы интерфейса для множественного выбора:

    • 📋 "Поле списка с множественным выбором" — позволяет отмечать несколько элементов в выпадающем списке. Чтобы его активировать, в свойствах элемента формы установите МножественныйВыбор = Истина.
    • 🔍 "Таблица значений" — универсальный инструмент для работы с наборами данных. Поддерживает сортировку, фильтрацию и группировку.
    • 📊 "Дерево значений" — удобно для иерархических данных (например, выбор групп номенклатуры с подчиненными элементами).

Пример настройки поля с множественным выбором в конфигураторе:

  1. Откройте форму в режиме редактирования.
  2. Добавьте элемент ПолеСписка.
  3. В свойствах установите:
    МножественныйВыбор = Истина
    

    ИсточникДанных = Справочники.Контрагенты

  4. В модуле формы обработайте событие ПриИзменении для реакции на выбор пользователя.

Для динамического заполнения таблицы значений на основе выбора пользователя используйте следующий код:

Процедура КонтрагентыПриИзменении(Элемент)

ТаблицаЗначений.Очистить();

Для Каждого ВыбранныйЭлемент Из Элемент.ВыбранныеЗначения Цикл

НоваяСтрока = ТаблицаЗначений.Добавить();

НоваяСтрока.Контрагент = ВыбранныйЭлемент.Ссылка;

НоваяСтрока.Наименование = ВыбранныйЭлемент.Наименование;

КонецЦикла;

КонецПроцедуры

6. Особенности выбора в мобильном и веб-клиенте

В мобильном приложении 1С и веб-клиенте интерфейс упрощен, поэтому некоторые привычные способы выбора могут не работать. Вот ключевые отличия:

  • 📱 В мобильном клиенте для выбора нескольких строк используйте долгое нажатие на элементе (появится галочка). Затем отмечайте остальные строки простым тапом.
  • 🌐 В веб-клиенте сочетания клавиш (Ctrl+A, Shift+клик) работают нестабильно. Рекомендуется использовать фильтры для сокращения списка перед выбором.
  • 🔄 В обоих клиентах отсутствует контекстное меню для выбранных строк. Вместо этого действия дублируются на панели инструментов.

Для веб-клиента актуальна следующая проблема: при большом количестве данных (более 1000 строк) выбор может тормозить. Решение:

  1. Используйте постраничный вывод (настройте размер страницы в параметрах формы).
  2. Применяйте предварительную фильтрацию по ключевым полям (например, по первой букве наименования).
  3. Для критичных операций (например, массовое изменение цен) разбейте задачу на части по 200–300 строк.
⚠️ Внимание: В мобильном клиенте 1С:ERP версии ниже 2.5.10 выбор более 50 строк одновременно может привести к ошибке "Превышен лимит памяти". Обновите приложение или используйте серверные обработки.
Как ускорить выбор в веб-клиенте?

1. Отключите в настройках браузера аппаратное ускорение (в Chrome: chrome://settings/system).

2. Используйте режим "Экономия трафика" в браузере.

3. Очистите кэш 1С через Администрирование → Очистка кэша.

4. Попробуйте другой браузер (например, Firefox вместо Chrome для больших списков).

7. Автоматизация выбора через внешние обработки

Если в типовой конфигурации нет удобного инструмента для группового выбора, можно создать внешнюю обработку. Например, обработка для массового переноса номенклатуры между складами:

  • 📄 Создайте новую обработку в конфигураторе.
  • 🔧 Добавьте табличное поле с возможностью множественного выбора.
  • 📊 Настройте кнопку "Выполнить", которая будет обрабатывать выбранные строки.
  • 💾 Сохраните обработку как внешний файл (.epf) и подключите ее в пользовательском режиме через Файл → Открыть.

Пример кода для обработки массового изменения реквизита:

Процедура Выполнить(Команда)

Для Каждого ВыбраннаяСтрока Из ТаблицаЗначений Цикл

Объект = ВыбраннаяСтрока.Ссылка.ПолучитьОбъект();

Объект.Реквизит = НовоеЗначение; // Например, изменим ответственного менеджера

Объект.Записать();

КонецЦикла;

Сообщить("Обработано " + ТаблицаЗначений.Количество() + " записей");

КонецПроцедуры

Готовые обработки для типовых задач можно найти:

  • 📂 На сайте Инфостарт (раздел "Обработки для 1С").
  • 📂 В каталоге 1С:ИТС (требуется подписка).
  • 📂 На форумах (например, forum.1c.ru).
💡

Внешние обработки позволяют обойти ограничения типовой конфигурации, но требуют прав на изменение данных. Всегда тестируйте их на копии базы перед использованием в рабочей системе.

8. Ошибки при выборе нескольких значений и их решения

Даже опытные пользователи сталкиваются с проблемами при групповой работе с данными. Рассмотрим типичные ошибки и способы их устранения:

Ошибка Причина Решение
Не работает Ctrl+клик Отключен множественный выбор в настройках формы Проверьте свойство МножественныйВыбор в конфигураторе
Выбор сбрасывается при прокрутке Ограничение веб-клиента или мобильного приложения Используйте фильтры для сокращения списка
Ошибка "Объект не найден" при программном выборе Неверная ссылка на объект или права доступа Проверьте существование объекта через Справочники.Имя.НайтиПоНаименованию()
Зависание при выборе >1000 строк Недостаточно памяти клиента Разбейте задачу на части или используйте серверные процедуры

Если при программном выборе возникает ошибка "Поле объекта не найдено", убедитесь, что:

  1. Вы используете актуальную версию конфигурации (в некоторых обновлениях меняется структура метаданных).
  2. Правильно указано имя реквизита (с учетом регистра в 1С 8.3).
  3. У пользователя достаточно прав на чтение/изменение данных.
⚠️ Внимание: При работе с распределенными информационными базами (РИБ) выбор данных через запросы может возвращать неактуальные записи из других узлов. Всегда проверяйте свойство ПометкаУдаления и используйте фильтр по текущему узлу РИБ.

FAQ: Частые вопросы по выбору значений в 1С

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

В большинстве форм работает сочетание Ctrl+A. Если не срабатывает:

  1. Кликните на первую строку.
  2. Прокрутите вниз до последней строки.
  3. Зажмите Shift и кликните на последнюю строку.

В веб-клиенте может потребоваться использовать кнопку "Выбрать все" на панели инструментов.

Можно ли выбрать значения из разных справочников одновременно?

Прямого механизма нет, но есть обходные пути:

  • Создайте общий реквизит (например, "ПризнакВыбора") во всех справочниках и отбирайте по нему.
  • Используйте запрос с объединением (ОБЪЕДИНИТЬ) для выборки из нескольких справочников.
  • Напишите обработку, которая последовательно обходит нужные справочники.
Почему при экспорте выбранных строк в Excel экспортируются не все данные?

Вероятные причины:

  • В настройках экспорта установлен лимит на количество строк (проверьте параметр МаксимальноеКоличествоСтрок).
  • Не все колонки таблицы включены в экспорт (настройте видимость столбцов перед экспортом).
  • В веб-клиенте экспорт работает через буфер обмена, который может обрезать данные. Используйте серверный экспорт через ЗаписьXML.
Как сохранить выбранные значения для повторного использования?

Способы сохранения:

  1. В временное хранилище:
    Хранилище = Новый ХранилищеЗначения();
    

    Хранилище.Установить("ВыбранныеКонтрагенты", МассивВыбранных);

  2. В реквизит формы (если выбор делается в обработке).
  3. В регистр сведений (для долговременного хранения между сеансами).

Для восстановления выбора используйте:

МассивВыбранных = Хранилище.Получить("ВыбранныеКонтрагенты");
Можно ли выбрать строки по цвету в таблице?

Прямой выбор по цвету невозможен, но можно:

  • Использовать условное оформление для подсветки строк по критерию, а затем выбрать их вручную.
  • Написать обработку, которая анализирует цвет ячейки через свойство ЦветТекста и добавляет строки в массив.
  • В отчетах с детализацией применить фильтр по тому же условию, что и используется для окраски.