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

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

Как поменять колонки местами в 1С

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

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

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

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

Как переставить колонки в режиме Предприятия без программирования

В управляемых формах (1С:Предприятие 8.3, типовые конфигурации вроде «Бухгалтерии», «Управления торговлей», ERP) порядок колонок табличных частей и списков настраивается пользователем. Есть два рабочих приёма: перетаскивание заголовка колонки мышью и настройка формы через меню.

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

Порядок действий в режиме Предприятия
  1. 1
    Откройте форму документа или списка, где нужно переставить колонки
  2. 2
    Нажмите «Ещё» в командной панели формы и выберите «Изменить форму»
  3. 3
    В дереве элементов найдите нужную колонку внутри таблицы
  4. 4
    Переместите её стрелками вверх/вниз или перетаскиванием
  5. 5
    Нажмите «ОК» и проверьте новый порядок колонок в форме

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

Настройка колонок динамического списка и журнала документов

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

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

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

Если порядок колонок должен быть единым для всех пользователей, его задают в конфигураторе на уровне формы. Откройте конфигуратор, найдите нужный объект (документ, справочник), перейдите на закладку «Формы» и откройте основную форму.

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

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

Программная перестановка колонок таблицы значений

Таблица значений — объект встроенного языка, и порядок её колонок меняется методом Сдвинуть у коллекции Колонки. Метод принимает колонку (или её индекс) и величину смещения: положительное число сдвигает колонку к концу, отрицательное — к началу.

bsl
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("Цена");

// Переставим "Цена" на вторую позицию (индекс 1)
ТекущийИндекс = ТЗ.Колонки.Индекс(ТЗ.Колонки.Найти("Цена")); // 2
ТЗ.Колонки.Сдвинуть("Цена", 1 - ТекущийИндекс); // сдвиг на -1

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

bsl
ПорядокКолонок = Новый Массив;
ПорядокКолонок.Добавить("Код");
ПорядокКолонок.Добавить("Номенклатура");
ПорядокКолонок.Добавить("Цена");

Для Индекс = 0 По ПорядокКолонок.ВГраница() Цикл
    Колонка = ТЗ.Колонки.Найти(ПорядокКолонок[Индекс]);
    Если Колонка <> Неопределено Тогда
        ТекущийИндекс = ТЗ.Колонки.Индекс(Колонка);
        ТЗ.Колонки.Сдвинуть(Колонка, Индекс - ТекущийИндекс);
    КонецЕсли;
КонецЦикла;

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

Перестановка колонок в отчётах на СКД и в табличном документе

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

Разработчик меняет порядок в схеме компоновки: конфигуратор → макет схемы отчёта → закладка «Настройки» → список выбранных полей. Программно порядок меняют через коллекцию Настройки.Выбор.Элементы, перемещая элементы или очищая коллекцию и добавляя поля в нужном порядке заново.

В готовом табличном документе (объект ТабличныйДокумент) поменять заполненные колонки местами напрямую нельзя — областей «колонка» с операцией перемещения нет. Практичный путь: вывести данные заново в правильном порядке, поэтому перестановку лучше делать на уровне источника данных (таблицы значений или настроек СКД), а не готового документа.

Сравнение способов

Настройка формы в режиме Предприятия

Подходит для разовой перестановки под себя; действует только на текущего пользователя и может быть запрещена разработчиком

Изменение формы в конфигураторе

Даёт единый порядок для всех пользователей; требует прав на изменение конфигурации и обновления базы

Метод Сдвинуть у таблицы значений

Нужен при программной подготовке данных для выгрузки или печати; работает только в коде

Настройка полей в СКД

Применяется для отчётов; порядок полей в настройках равен порядку колонок в результате

Типичные ошибки и как проверить результат

Самая частая ошибка программистов — попытка сдвинуть колонку по имени, которого нет в таблице. Метод Найти вернёт Неопределено, а Сдвинуть выдаст ошибку. Всегда проверяйте результат поиска перед сдвигом, как показано в примере кода выше.

Вторая ошибка — ожидание, что перестановка колонок в таблице значений изменит порядок при выгрузке в Excel через Сохранить или при передаче в СКД как внешний набор данных. Изменит — но только если выгрузка идёт после сдвига и используется та же таблица. Если таблица пересоздаётся дальше по коду, порядок теряется.

Типичные ошибки
01
Сдвиг колонки без проверки, что она найдена — приводит к ошибке выполнения
02
Использование устаревшего индекса после предыдущего сдвига — колонка встаёт не на ту позицию
03
Ожидание, что настройка формы одного пользователя применится ко всем — настройки хранятся индивидуально
04
Попытка переставить колонки в готовом табличном документе вместо перестановки на уровне данных

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

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

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

Порядок колонок в форме
Норма

Колонки отображаются в заданной последовательности после переоткрытия формы

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

Порядок сбрасывается — действуют сохранённые пользовательские настройки, нужен сброс к стандартным

Порядок колонок таблицы значений
Норма

Обход коллекции Колонки возвращает имена в нужной последовательности

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

Ошибка о выходе индекса за границы — неверно рассчитан сдвиг

Колонки отчёта на СКД
Норма

Порядок полей в настройках совпадает с порядком колонок в результате

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

Колонки внутри группировки не реагируют — порядок задан на другом уровне настроек

FAQ: частые вопросы о перестановке колонок в 1С

Почему колонки не перетаскиваются мышью в форме?

Разработчик формы запретил изменение порядка колонок в свойствах таблицы. Используйте «Ещё → Изменить форму»; если и там колонки не перемещаются, порядок можно изменить только в конфигураторе.

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

Откройте «Ещё → Изменить форму» и нажмите «Установить стандартные настройки» (или удалите изменённые элементы). Форма вернётся к виду, заданному разработчиком конфигурации.

Можно ли поменять колонки местами в мобильном клиенте 1С?

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

Меняется ли порядок колонок при выгрузке списка в Excel?

Да. При выгрузке списка через «Ещё → Вывести список» колонки попадают в файл в том порядке, в котором они отображаются на экране. Сначала настройте порядок в форме, затем выгружайте.

Как переставить колонки в обычных формах (8.2)?

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

Влияет ли перестановка колонок на данные в базе?

Нет. Меняется только представление — порядок отображения в форме, списке или таблице значений в памяти. Физическая структура таблиц базы данных и сами данные остаются неизменными.

Итог

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

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