Перемещение строки вверх в табличной части и списке 1С

· 9 мин

Содержание

Чтобы поднять строку в 1С на одну позицию выше, встаньте на неё в табличной части и нажмите кнопку со стрелкой вверх в командной панели таблицы. Если кнопки не видно, откройте меню Еще над таблицей: нужная команда обычно спрятана там. Быстрее работает клавиатура: Ctrl+Shift+↑ сдвигает текущую строку вверх, Ctrl+Shift+↓ вниз.

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

Где в 1С можно двигать строки, а где нельзя

Перед тем как искать кнопку, определите, какая таблица перед вами. От этого зависит всё остальное.

Что перед вамиМожно ли двигать строкуЧем задаётся порядок
Табличная часть документа или справочника (товары, услуги, оплата)ДаПорядок строк в самом объекте
Табличное поле в обработке, внешней формеОбычно даПорядок в таблице значений
Список справочника, журнал документовНетСортировка и настройки списка
Отчёт (результат в табличном документе)НетГруппировки и сортировка в настройках отчёта

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

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

Кнопки перемещения в командной панели

Стандартный способ, который не требует никаких настроек.

  1. Откройте документ и перейдите на вкладку с нужной табличной частью, например Товары.
  2. Щёлкните по любой ячейке строки, которую нужно поднять. Строка станет текущей.
  3. В командной панели над таблицей нажмите кнопку со стрелкой вверх.
  4. Строка встанет на одну позицию выше. Чтобы поднять ещё выше, нажимайте кнопку повторно.

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

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

После перемещения номера строк в первой колонке пересчитываются сами: строка, ставшая первой, получит номер 1. Ничего исправлять вручную не нужно.

Горячие клавиши: как поднять строку без мыши

Для частой работы с большими табличными частями клавиатура экономит много кликов. Базовый набор такой:

ДействиеСочетание
Поднять текущую строку на одну позицию вышеCtrl+Shift+↑
Опустить текущую строку на одну позицию нижеCtrl+Shift+↓
Перейти к соседней строке без изменения порядка↑ и ↓
Войти в режим редактирования ячейкиF2 или Enter
Добавить новую строкуIns

Порядок работы: стрелками выберите строку, зажмите Ctrl и Shift и нажимайте ↑. Фокус при этом остаётся на перемещаемой строке, поэтому её можно проводить вверх серией нажатий, не отпуская сочетание.

Если сочетание не срабатывает, проверьте три вещи:

  • 🔹 Фокус не в таблице. Он должен стоять на самой табличной части, а не на поле шапки документа.
  • 🔹 Ячейка в режиме редактирования. Нажмите Esc, затем повторите сочетание.
  • 🔹 Команды нет в форме. Горячая клавиша выполняет команду формы. Если разработчик её убрал, клавиши не сработают, как и кнопка.

Бывает, что Ctrl+Shift перехватывает системная раскладка: в Windows это сочетание может переключать язык ввода. Если вместе со сдвигом строки меняется раскладка, отключите переключение по Ctrl+Shift в языковых параметрах системы либо используйте кнопку.

Как сразу переместить строку в начало или конец

Когда строку нужно перенести далеко, нажимать кнопку много раз неудобно. Есть три приёма.

Перетаскивание мышью

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

Копирование и вставка в нужное место

Надёжный способ для любой таблицы:

  1. Добавьте новую строку в нужное место (в начало или между строками).
  2. Скопируйте значения из старой строки в новую.
  3. Удалите старую.

Это дольше, зато не зависит от наличия кнопок. Для документов, где в строках есть сложные поля (серии, характеристики, привязки к заказам), проверьте после переноса, что ничего не потерялось.

Сортировка таблицы целиком

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

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

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

В списках всё устроено иначе. Строки там не принадлежат одному объекту, это отдельные записи в базе данных, а порядок показа вычисляется при каждом открытии списка.

Способы повлиять на порядок:

  1. Щёлкнуть по заголовку колонки. Список сортируется по ней, повторный щелчок меняет направление. Это самый быстрый путь: нужные записи окажутся сверху.
  2. Настроить список. Откройте меню Еще над списком и найдите команды настройки списка и сортировки: можно задать порядок по нескольким полям, например сначала по группе, затем по наименованию.
  3. Отбор и поиск. Если вам нужна одна строка, а не порядок, проще поставить отбор или воспользоваться строкой поиска, чем пытаться её «поднять».

Отдельный случай: иерархические справочники. Там элементы идут внутри групп, и поднять элемент из одной группы в другую нельзя сортировкой. Его нужно перенести: команда перемещения в группу есть в меню Еще списка (она называется «Переместить в группу»). Для порядка внутри группы работает та же сортировка по колонкам.

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

Вернуть кнопки перемещения через настройку формы

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

  1. Откройте документ с нужной табличной частью.
  2. В меню Еще в верхней части формы найдите команду изменения формы (пункт, где открывается настройка состава панелей и команд).
  3. В открывшемся дереве элементов найдите командную панель вашей таблицы.
  4. Добавьте в неё команды перемещения вверх и вниз, если они есть в списке доступных команд, и сохраните настройку.

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

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

Практические примеры: когда порядок строк важен

Порядок строк кажется мелочью, пока документ не уходит клиенту или не попадает в учёт. Вот ситуации, где его меняют чаще всего.

  • 📄 Счёт или реализация для клиента. Основные позиции хочется показать первыми, а доставку и упаковку оставить в конце. Строки поднимают и опускают вручную, пока документ не принял нужный вид.
  • 📦 Подбор товаров через «Подбор». Новые позиции добавляются в конец, а нужно вставить их рядом с похожими. Проще добавить и поднять, чем искать место заранее.
  • 🧾 Услуги в акте. Заказчик просит определённую очерёдность работ. Меняйте порядок до печати, после записи документа печатная форма возьмёт новый порядок.
  • 🧮 Списание партий и серий. Если способ списания зависит от очерёдности строк, смена порядка меняет результат проведения. Перед перестановкой подумайте, как именно настроен учёт в вашей базе.

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

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

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

Пример обработчика команды «Вверх» для табличной части Товары в управляемой форме:

&НаКлиенте
Процедура ПереместитьСтрокуВверх(Команда)

	ИдСтроки = Элементы.Товары.ТекущаяСтрока;
	Если ИдСтроки = Неопределено Тогда
		Возврат;
	КонецЕсли;

	Строка = Объект.Товары.НайтиПоИдентификатору(ИдСтроки);
	Индекс = Объект.Товары.Индекс(Строка);

	Если Индекс > 0 Тогда
		Объект.Товары.Сдвинуть(Индекс, -1);
		Элементы.Товары.ТекущаяСтрока = ИдСтроки;
	КонецЕсли;

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

Что здесь важно:

  • 🔹 В управляемой форме ТекущаяСтрока возвращает идентификатор строки, а не индекс. Поэтому нужен НайтиПоИдентификатору, потом Индекс.
  • 🔹 Проверка Индекс > 0 не даёт сдвинуть первую строку выше начала таблицы, иначе будет ошибка.
  • 🔹 Для команды «Вниз» условие другое: Индекс < Объект.Товары.Количество() - 1, смещение 1.
  • 🔹 Если строка после сдвига теряет выделение, верните его, как в последней строке примера.

Тот же подход работает для реквизита формы типа ТаблицаЗначений: вместо Объект.Товары пишете Товары. Для таблицы, у которой есть дополнительный столбец порядка (например, Приоритет), сдвиг дополняют перенумерацией: после каждого перемещения пройдите по строкам и запишите новые номера.

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

Что делать, если строка не поднимается

Разберём типичные причины по симптомам.

СимптомВероятная причинаЧто сделать
Нет кнопок со стрелкамиКоманды убраны из формы или они в меню «Еще»Откройте меню «Еще», либо воспользуйтесь горячими клавишами
Кнопки серыеДокумент проведён и закрыт для правки, либо у вас права только на чтениеПроверьте, можно ли редактировать документ; при необходимости отмените проведение
Строка поднялась и тут же вернуласьСрабатывает сортировка таблицы или пересчёт при записиПроверьте, не задана ли автоматическая сортировка; для порядка по правилам используйте сам механизм конфигурации
Порядок не сохранился после закрытияДокумент не записанНажмите Записать или Провести и закрыть
Сочетание клавиш меняет раскладкуПерехват Ctrl+Shift системойОтключите это сочетание в Windows либо используйте кнопку
Строку не передвинуть в спискеЭто не табличная частьИспользуйте сортировку по колонке

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

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

Можно ли поднять сразу несколько строк?
Выделите несколько строк с зажатым Ctrl или Shift. Сдвинется ли выделенная группа целиком, зависит от формы. Если нет, перемещайте строки по одной.
Почему порядок строк меняется после записи документа?
В форме или в модуле объекта может быть заложена сортировка при записи. Это решение разработчика, без правки кода его не отключить.
Как поменять местами две соседние строки?
Поднимите нижнюю на одну позицию кнопкой или сочетанием Ctrl+Shift+↑. Верхняя при этом автоматически окажется ниже.
Есть ли отмена перемещения?
Отдельной кнопки отмены нет. Верните строку обратно сочетанием Ctrl+Shift+↓. Если уже записали документ и порядок важен, откройте предыдущую копию из резервной базы.
Меняется ли порядок строк в печатной форме?
Да, печатная форма выводит строки в порядке табличной части. Если нужен другой порядок в печати, переставьте строки в документе до печати.