К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как выделить все поля в 1С

Способы выделить все поля в 1С: конструктор запроса, консоль запросов, динамический список, табличный документ. Пошаговые инструкции, ограничения и частые ошибки.

Задача «выделить все поля» в 1С возникает в разных контекстах: при построении запроса в конструкторе, при работе в консоли запросов, при настройке динамического списка или при выделении данных в табличном документе. Универсальной кнопки «выделить всё» нет — действие зависит от того, где именно вы работаете и что понимаете под полями: реквизиты объекта, колонки таблицы или результаты запроса.

Чаще всего вопрос звучит при работе с запросами: нужно быстро перенести все реквизиты справочника или документа в список выбираемых полей, не добавляя каждое вручную. Для этого в конструкторе запроса есть штатные механизмы, а в тексте запроса — символ «звёздочка». У каждого способа есть ограничения, которые важно понимать, чтобы не получить лишние данные или ошибку исполнения.

Ниже разобраны основные сценарии: конструктор запроса, ручное написание текста запроса, консоль запросов, динамические списки, табличные документы и программное получение всех реквизитов объекта. Отдельно описаны типичные ошибки и способы проверить результат.

Что значит «выделить все поля» в разных контекстах 1С

Прежде чем выбирать способ, определите, где именно нужно выделить поля. В конструкторе запроса «поля» — это реквизиты таблиц, которые попадут в результат запроса. В табличном документе — ячейки, которые можно скопировать. В динамическом списке — колонки, отображаемые пользователю. В коде — набор реквизитов объекта, доступных через метаданные.

От контекста зависит и цель. Если нужно получить данные для отчёта — работайте через запрос. Если требуется скопировать содержимое таблицы на экране — достаточно выделения мышью или горячих клавиш. Если нужно программно обойти все реквизиты объекта — используйте метаданные. Смешивание этих сценариев — частая причина путаницы у начинающих.

Как выделить все поля в конструкторе запроса

Конструктор запроса открывается из модуля при написании текста запроса или из консоли запросов. На закладке «Таблицы и поля» в левой части отображается дерево доступных таблиц базы данных. Раскройте нужную таблицу — под ней появится список её реквизитов.

Чтобы перенести все поля сразу, выделите само имя таблицы (не отдельный реквизит) и нажмите кнопку переноса «>» или дважды щёлкните по имени таблицы. Конструктор перенесёт в правый список все доступные поля этой таблицы. Это самый быстрый штатный способ получить полный набор реквизитов без ручного перебора.

Если нужны поля нескольких таблиц, повторите действие для каждой. Учтите: при переносе всей таблицы в запрос попадут и служебные поля (например, «Ссылка», «ПометкаУдаления», «Проведен» у документов), которые не всегда нужны в результате. Лишние поля можно удалить из правого списка выделением и кнопкой удаления.

Порядок действий в конструкторе
  1. 1
    Откройте конструктор запроса и перейдите на закладку «Таблицы и поля»
  2. 2
    В дереве слева найдите нужную таблицу и перенесите её в список таблиц
  3. 3
    Выделите имя таблицы и нажмите кнопку «>» или дважды щёлкните по ней
  4. 4
    Убедитесь, что все поля появились в правом списке «Поля»
  5. 5
    Удалите ненужные служебные поля и нажмите «ОК»

Как выбрать все поля в тексте запроса вручную

В тексте запроса на встроенном языке 1С есть сокращённая форма — символ «» (звёздочка). Конструкция ВЫБРАТЬ ИЗ Справочник.Номенклатура выбирает все поля таблицы. Это удобно для быстрой проверки данных, но в рабочем коде конфигурации такой приём считается нежелательным.

Причина в производительности и сопровождении: запрос со звёздочкой вытягивает все колонки, включая те, что не используются, увеличивая нагрузку на СУБД и объём передаваемых данных. Кроме того, при добавлении новых реквизитов в объект запрос молча начнёт возвращать их, что может нарушить логику обработки результата. Стандарты разработки рекомендуют явно перечислять нужные поля.

Альтернатива — выбрать все поля конкретной таблицы через алиас: ВЫБРАТЬ Товары.* ИЗ Документ.Реализация.Товары КАК Товары. Такая форма выбирает все поля табличной части «Товары», что удобно при соединениях, когда нужны все реквизиты одной из таблиц, но не всех участвующих.

Как выделить все поля в консоли запросов

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

Для быстрого получения всех полей объекта в консоли удобно вызвать конструктор запроса (кнопка на панели или контекстное меню), перенести таблицу целиком и вернуться в текст. Конструктор сам сформирует перечень полей с псевдонимами таблицы — это аккуратнее, чем звёздочка, и быстрее ручного набора.

После выполнения запроса результат выводится в таблицу. Чтобы выделить все строки результата для копирования, кликните в область результата и нажмите Ctrl+A, затем Ctrl+C. Данные вставятся в Excel или текстовый редактор с сохранением колонок.

bsl
ВЫБРАТЬ
	Номенклатура.Ссылка,
	Номенклатура.Код,
	Номенклатура.Наименование,
	Номенклатура.Артикул
ИЗ
	Справочник.Номенклатура КАК Номенклатура

Как выделить все поля динамического списка и на форме

Динамический список (список документов, справочников в управляемых формах) строится на запросе. Чтобы изменить набор его полей, откройте настройки формы: «Ещё» → «Изменить форму» (для разработчика) или «Настроить список» для пользовательских отборов. Полный набор колонок определяется запросом динамического списка в конфигураторе — там действуют те же правила выборки полей.

Пользователю, которому нужно видеть больше колонок, обычно достаточно настройки «Изменить форму»: в дереве элементов формы найдите таблицу списка и включите видимость нужных полей. Если поля нет в списке доступных — значит, его нет в запросе динамического списка, и добавить его сможет только разработчик через конфигуратор.

Для выделения всех строк видимого списка (например, чтобы скопировать или обработать) используйте Ctrl+A в таблице формы. В табличном документе (печатная форма, отчёт) выделить всё можно кликом по левому верхнему углу области заголовков строк и колонок либо тем же Ctrl+A.

Способы получить все поля

Перенос таблицы в конструкторе

Быстро и безопасно; подходит для чернового построения запроса, но тянет служебные поля

ВЫБРАТЬ <em> в тексте

Минимум действий; годится для консоли и диагностики, не рекомендуется в рабочем коде

Таблица.</em> с алиасом

Выбирает все поля одной таблицы в соединении; компромисс между скоростью и контролем

Явный перечень полей

Стандарт для прикладного кода: предсказуемый результат и лучшая производительность, но дольше писать

Программное получение всех реквизитов объекта

Иногда «выделить все поля» означает получить в коде перечень реквизитов объекта — например, для универсальной выгрузки или сравнения. Для этого используется объект метаданных: Метаданные.Справочники.Номенклатура.Реквизиты возвращает коллекцию реквизитов, которую можно обойти в цикле и сформировать список полей запроса динамически.

Такой подход применяют в универсальных отчётах и обменах, где структура объекта заранее неизвестна. Учтите, что стандартные реквизиты (Код, Наименование, Ссылка) хранятся отдельно — в свойстве СтандартныеРеквизиты, а табличные части — в ТабличныеЧасти. Полный перечень полей объекта собирается из всех трёх коллекций.

Сформированный список полей подставляется в текст запроса строкой через запятую. Это корректный способ «выбрать всё» программно, но он требует аккуратности: в запрос нельзя подставлять поля, типы которых не поддерживаются в запросах (например, хранилище значений в некоторых сценариях сравнения).

Типичные ошибки
01
Использование ВЫБРАТЬ * в рабочем коде — рост нагрузки и непредсказуемый состав результата при изменении конфигурации
02
Перенос всей таблицы в конструкторе без чистки — в отчёт попадают служебные поля вроде ПометкаУдаления и Предопределенный
03
Попытка добавить колонку в динамический список через настройку формы, хотя поля нет в запросе списка — поле просто не появляется
04
Копирование результата запроса без выделения (без Ctrl+A) — в буфер попадает только одна строка или ячейка

Как проверить, что выделены именно все поля

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

В консоли запросов проверка проще: выполните запрос и посмотрите заголовки колонок результата. Отсутствие нужной колонки означает, что поле не включено в выборку. Для запроса со звёздочкой состав колонок всегда соответствует текущей структуре таблицы — это удобный способ быстро увидеть полный набор полей объекта.

Контрольные точки

Как проверить результат

Состав колонок результата запроса
Норма

Все нужные реквизиты присутствуют, лишних служебных нет

Тревожный признак

Не хватает полей или выведены ПометкаУдаления, Предопределенный без необходимости

Текст запроса после конструктора
Норма

Поля перечислены явно с псевдонимом таблицы

Тревожный признак

Осталась звёздочка в коде, который уйдёт в рабочую базу

Колонки динамического списка на форме
Норма

Все нужные поля видны и доступны в настройке формы

Тревожный признак

Поле отсутствует в настройке — его нет в запросе списка

Частые вопросы

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

Да. Перенесите каждую таблицу в список таблиц, затем по очереди выделяйте имя каждой таблицы и нажимайте кнопку переноса. Поля добавятся в общий список. После этого настройте связи между таблицами на соответствующей закладке, иначе получите декартово произведение.

Почему запрос со звёздочкой иногда выдаёт ошибку?

Чаще всего причина в полях составного типа или в попытке сгруппировать/упорядочить результат со звёздочкой. Также ошибка возникает, если в соединении нескольких таблиц звёздочка применена без алиаса и имена полей конфликтуют. Замените звёздочку явным списком полей.

Как скопировать все строки результата запроса в Excel?

Кликните в таблицу результата, нажмите Ctrl+A для выделения всех строк, затем Ctrl+C. Вставьте в Excel через Ctrl+V. В некоторых консолях есть отдельная команда «Вывести список» с возможностью выбора колонок перед выгрузкой.

Как в динамическом списке показать поле, которого нет в настройках формы?

Поле нужно добавить в запрос динамического списка. Это делается в конфигураторе: свойства списка, настройка запроса. Пользовательскими средствами добавить колонку, не включённую в запрос, нельзя.

Есть ли способ выбрать все поля, кроме одного-двух?

Штатной конструкции «все, кроме» в языке запросов 1С нет. Практический приём: перенесите всю таблицу в конструкторе, затем удалите ненужные поля из списка вручную — конструктор сформирует явный перечень без исключённых полей.

Работает ли Ctrl+A в поле ввода и в табличной части документа?

В поле ввода Ctrl+A выделяет весь текст внутри поля. В табличной части документа это сочетание выделяет все строки таблицы, что удобно перед копированием или групповой обработкой строк.

Итог

Что важно запомнить

В конструкторе запроса все поля переносятся двойным щелчком по имени таблицы, в тексте запроса — через ВЫБРАТЬ <em> или Таблица.</em>, но для рабочего кода правильнее явный перечень полей. На формах и в табличных документах работает Ctrl+A, а состав колонок динамического списка определяется его запросом в конфигураторе.