Разработка и Конфигурация · 10 мин
Как поменять колонки местами в 1С
Как поменять колонки местами в 1С: настройка таблиц в режиме Предприятия, код для табличной части и динамического списка, типичные ошибки и FAQ.
Поменять колонки местами в 1С можно тремя разными способами, и выбор зависит от того, где именно вы работаете: в пользовательском режиме «Предприятие», в конфигураторе или программно через встроенный язык. Под «колонками» обычно понимают реквизиты табличной части документа, колонки таблицы значений, элементы динамического списка или поля отчёта на СКД — и для каждого случая действует свой механизм.
Самый частый сценарий — пользователю неудобен порядок колонок в форме документа или в журнале, и он хочет переставить их без привлечения программиста. Современные конфигурации на управляемых формах позволяют сделать это прямо в интерфейсе через настройку формы. Если же речь идёт о разработке — например, нужно изменить порядок колонок таблицы значений перед выводом в отчёт или макет — придётся использовать методы встроенного языка.
Важно понимать ограничение: порядок колонок в самой базе данных не меняется, меняется только их визуальное представление в форме, списке или результирующей таблице. Поэтому перестановка колонок — безопасная операция, которая не затрагивает данные. Исключение — программная обработка таблиц значений, где ошибка в коде может привести к потере данных в оперативной памяти до сохранения.
Как переставить колонки в режиме Предприятия без программирования
В управляемых формах (1С:Предприятие 8.3, типовые конфигурации вроде «Бухгалтерии», «Управления торговлей», ERP) порядок колонок табличных частей и списков настраивается пользователем. Есть два рабочих приёма: перетаскивание заголовка колонки мышью и настройка формы через меню.
Перетаскивание работает не во всех формах — разработчик может запретить изменение порядка. Поэтому надёжный универсальный путь — кнопка «Ещё» в правом верхнем углу формы, затем пункт «Изменить форму». Откроется окно настройки, где элементы формы представлены деревом. Выделите нужную колонку и перемещайте её кнопками со стрелками «Вверх» и «Вниз» или перетаскиванием. После нажатия «ОК» порядок сохранится.
- 1Откройте форму документа или списка, где нужно переставить колонки
- 2Нажмите «Ещё» в командной панели формы и выберите «Изменить форму»
- 3В дереве элементов найдите нужную колонку внутри таблицы
- 4Переместите её стрелками вверх/вниз или перетаскиванием
- 5Нажмите «ОК» и проверьте новый порядок колонок в форме
Настройка сохраняется индивидуально для каждого пользователя в его профиле. Если нужно, чтобы новый порядок видели все сотрудники, потребуется либо скопировать настройку через механизм обмена настройками (если он есть в конфигурации), либо изменить форму в конфигураторе.
Настройка колонок динамического списка и журнала документов
Журналы документов и списки справочников — это динамические списки. Для них действует тот же механизм «Изменить форму», но есть дополнительная возможность: кнопка «Ещё → Настроить список». Там настраиваются отбор, сортировка, группировка и условное оформление — но не порядок колонок. Порядок меняется только через «Изменить форму».
Учтите особенность: если список построен на произвольном запросе динамического списка, состав колонок определяется полями запроса. Пользователь может менять их порядок и видимость, но добавить поле, которого нет в запросе, через настройку формы нельзя — это задача для разработчика.
Как поменять колонки местами в конфигураторе
Если порядок колонок должен быть единым для всех пользователей, его задают в конфигураторе на уровне формы. Откройте конфигуратор, найдите нужный объект (документ, справочник), перейдите на закладку «Формы» и откройте основную форму.
В редакторе формы слева находится дерево элементов. Колонки табличной части или таблицы списка расположены внутри элемента «Таблица». Порядок элементов в дереве соответствует порядку колонок слева направо на форме. Перемещайте колонки кнопками со стрелками на командной панели окна элементов или перетаскиванием мышью, затем сохраните конфигурацию (Ctrl+S) и обновите конфигурацию базы данных (F7), если изменения затрагивали структуру.
После обновления у пользователей, которые уже настраивали форму под себя, может сохраниться их старый порядок — пользовательские настройки имеют приоритет над настройками по умолчанию. В этом случае пользователю нужно сбросить настройки формы: «Ещё → Изменить форму → Установить стандартные настройки».
Программная перестановка колонок таблицы значений
Таблица значений — объект встроенного языка, и порядок её колонок меняется методом Сдвинуть у коллекции Колонки. Метод принимает колонку (или её индекс) и величину смещения: положительное число сдвигает колонку к концу, отрицательное — к началу.
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Количество");
ТЗ.Колонки.Добавить("Цена");
// Переставим "Цена" на вторую позицию (индекс 1)
ТекущийИндекс = ТЗ.Колонки.Индекс(ТЗ.Колонки.Найти("Цена")); // 2
ТЗ.Колонки.Сдвинуть("Цена", 1 - ТекущийИндекс); // сдвиг на -1Типичный сценарий — подготовка таблицы для выгрузки в Excel или для вывода в макет, где требуется строгий порядок колонок. Удобный приём: заранее объявить нужный порядок массивом имён и в цикле сдвигать каждую колонку на её целевую позицию.
ПорядокКолонок = Новый Массив;
ПорядокКолонок.Добавить("Код");
ПорядокКолонок.Добавить("Номенклатура");
ПорядокКолонок.Добавить("Цена");
Для Индекс = 0 По ПорядокКолонок.ВГраница() Цикл
Колонка = ТЗ.Колонки.Найти(ПорядокКолонок[Индекс]);
Если Колонка <> Неопределено Тогда
ТекущийИндекс = ТЗ.Колонки.Индекс(Колонка);
ТЗ.Колонки.Сдвинуть(Колонка, Индекс - ТекущийИндекс);
КонецЕсли;
КонецЦикла;Обратите внимание: сдвиг выполняется относительно текущей позиции, поэтому при перестановке нескольких колонок индексы пересчитываются после каждого сдвига. В примере выше текущий индекс запрашивается заново на каждой итерации — это защищает от ошибки «значение индекса выходит за границы диапазона».
Перестановка колонок в отчётах на СКД и в табличном документе
В отчётах на системе компоновки данных порядок колонок определяется порядком выбранных полей. Пользователь открывает «Ещё → Изменить вариант отчёта», переходит на закладку «Поля» и перемещает поля стрелками — порядок сверху вниз в настройке соответствует порядку колонок слева направо в отчёте. Если используется группировка, колонки задаются внутри неё.
Разработчик меняет порядок в схеме компоновки: конфигуратор → макет схемы отчёта → закладка «Настройки» → список выбранных полей. Программно порядок меняют через коллекцию Настройки.Выбор.Элементы, перемещая элементы или очищая коллекцию и добавляя поля в нужном порядке заново.
В готовом табличном документе (объект ТабличныйДокумент) поменять заполненные колонки местами напрямую нельзя — областей «колонка» с операцией перемещения нет. Практичный путь: вывести данные заново в правильном порядке, поэтому перестановку лучше делать на уровне источника данных (таблицы значений или настроек СКД), а не готового документа.
Сравнение способов
Подходит для разовой перестановки под себя; действует только на текущего пользователя и может быть запрещена разработчиком
Даёт единый порядок для всех пользователей; требует прав на изменение конфигурации и обновления базы
Нужен при программной подготовке данных для выгрузки или печати; работает только в коде
Применяется для отчётов; порядок полей в настройках равен порядку колонок в результате
Типичные ошибки и как проверить результат
Самая частая ошибка программистов — попытка сдвинуть колонку по имени, которого нет в таблице. Метод Найти вернёт Неопределено, а Сдвинуть выдаст ошибку. Всегда проверяйте результат поиска перед сдвигом, как показано в примере кода выше.
Вторая ошибка — ожидание, что перестановка колонок в таблице значений изменит порядок при выгрузке в Excel через Сохранить или при передаче в СКД как внешний набор данных. Изменит — но только если выгрузка идёт после сдвига и используется та же таблица. Если таблица пересоздаётся дальше по коду, порядок теряется.
Проверка результата проста: в пользовательском режиме достаточно переоткрыть форму и убедиться, что колонки стоят в нужном порядке. Программно порядок проверяют перебором коллекции колонок — имена должны идти в ожидаемой последовательности.
Как проверить результат
Колонки отображаются в заданной последовательности после переоткрытия формы
Порядок сбрасывается — действуют сохранённые пользовательские настройки, нужен сброс к стандартным
Обход коллекции Колонки возвращает имена в нужной последовательности
Ошибка о выходе индекса за границы — неверно рассчитан сдвиг
Порядок полей в настройках совпадает с порядком колонок в результате
Колонки внутри группировки не реагируют — порядок задан на другом уровне настроек
FAQ: частые вопросы о перестановке колонок в 1С
Почему колонки не перетаскиваются мышью в форме?
Разработчик формы запретил изменение порядка колонок в свойствах таблицы. Используйте «Ещё → Изменить форму»; если и там колонки не перемещаются, порядок можно изменить только в конфигураторе.
Как вернуть исходный порядок колонок?
Откройте «Ещё → Изменить форму» и нажмите «Установить стандартные настройки» (или удалите изменённые элементы). Форма вернётся к виду, заданному разработчиком конфигурации.
Можно ли поменять колонки местами в мобильном клиенте 1С?
Возможности настройки форм в мобильном клиенте ограничены и зависят от конфигурации. Как правило, полноценное изменение порядка колонок доступно только в тонком или толстом клиенте на компьютере.
Меняется ли порядок колонок при выгрузке списка в Excel?
Да. При выгрузке списка через «Ещё → Вывести список» колонки попадают в файл в том порядке, в котором они отображаются на экране. Сначала настройте порядок в форме, затем выгружайте.
Как переставить колонки в обычных формах (8.2)?
В обычном приложении порядок колонок табличного поля меняется перетаскиванием заголовка мышью или через настройку списка. Программно порядок задаётся порядком элементов в свойстве «Колонки» табличного поля в конфигураторе либо методом вставки колонок в нужную позицию.
Влияет ли перестановка колонок на данные в базе?
Нет. Меняется только представление — порядок отображения в форме, списке или таблице значений в памяти. Физическая структура таблиц базы данных и сами данные остаются неизменными.
Что важно запомнить
Пользователю достаточно настройки «Ещё → Изменить форму», единый порядок для всех задаётся в конфигураторе, а программно колонки таблицы значений переставляются методом Сдвинуть с проверкой индексов. Данные при перестановке не затрагиваются.