Порядок строк в табличной части 1С 8.3: стрелки, Ctrl+Shift и метод Сдвинуть

· 9 мин

Содержание

Чтобы переместить строку в 1С, выделите её в табличной части и нажмите стрелку «Переместить вверх» или «Переместить вниз» на панели над таблицей. С клавиатуры то же самое делают Ctrl+Shift+↑ и Ctrl+Shift+↓. Номер строки (колонка N) программа пересчитает сама, в печатной форме порядок станет новым после записи документа.

Это работает одинаково в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на платформе 8.3: команды перемещения — стандартные команды таблицы формы, а не особенность конкретной программы. Если стрелок не видно, они почти всегда спрятаны в меню Ещё той же панели.

Кнопки «вверх» и «вниз» над табличной частью

В интерфейсе «Такси» у каждой табличной части (Товары, Услуги, Сотрудники, Начисления) есть своя командная панель. На ней обычно стоят кнопки Добавить, Подбор, иногда Изменить, и две стрелки — синяя вверх и синяя вниз.

Порядок действий:

  1. Откройте документ, например Реализация (акт, накладная).
  2. Щёлкните по строке, которую нужно переставить. Достаточно выделить любую ячейку.
  3. Нажмите стрелку вверх или вниз. Каждый щелчок сдвигает строку на одну позицию.
  4. Нажмите Записать или Провести, чтобы новый порядок сохранился.

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

Если стрелок на панели нет

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

Если нет и там, кнопки могли скрыть настройкой формы. Верните их сами:

  1. На панели таблицы откройте Ещё → Изменить форму....
  2. В дереве элементов найдите командную панель нужной табличной части.
  3. Поставьте флажки у команд перемещения и нажмите ОК.

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

Горячие клавиши для работы со строками

Мышь удобна для одной-двух перестановок. Когда нужно переставить десяток строк, быстрее клавиатура: выделили, зажали Ctrl+Shift и стрелкой «довели» строку до места.

ДействиеКлавиши
Переместить строку вверхCtrl+Shift+↑
Переместить строку внизCtrl+Shift+↓
Добавить новую строкуIns
Скопировать текущую строкуF9
Начать редактирование ячейкиF2 или Enter
Удалить строкуDel
Перейти к первой / последней строкеCtrl+Home / Ctrl+End

Удобный приём для вставки строки в середину списка. Встаньте на строку, после которой нужна новая, нажмите F9 — копия появится рядом. Поправьте в ней номенклатуру и количество. Так не придётся добавлять строку в конец и тащить её вверх через полсотни позиций.

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

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

Во многих формах строку можно просто взять мышью и перетащить на новое место. Зажмите левую кнопку на строке, тяните вверх или вниз и отпустите там, где строка должна оказаться.

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

Как понять, что перетаскивание работает:

  • 🖱 при протягивании курсор меняет вид, между строками появляется полоса-указатель места вставки;
  • 🚫 курсор с перечёркнутым кругом — форма запрещает бросить строку сюда;
  • ⏸ ничего не происходит — перетаскивание в этой таблице выключено, пользуйтесь стрелками.

Перетаскивание удобно на коротких списках. На таблице в 200 строк надёжнее клавиши: при прокрутке во время протягивания легко промахнуться и бросить строку не туда.

Как отсортировать строки в табличной части

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

В формах на платформе 8.3 у табличной части обычно есть команды сортировки в меню Ещё:

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

Сортировка в табличной части документа переставляет сами строки и меняет их номера. Это отличается от сортировки в журнале документов или списке справочника: там меняется только отображение, данные остаются прежними.

СпособКогда подходитЧто учесть
Стрелки на панели1–5 перестановокМедленно на длинных списках
Ctrl+Shift+стрелкаМного перестановок подрядФокус должен быть на таблице
ПеретаскиваниеКороткий список, строка далеко уехалаВключено не во всех формах
СортировкаНужно упорядочить всё сразуРучной порядок теряется
Код (Сдвинуть, Сортировать)Обработка, доработка формыНужны права на изменение конфигурации

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

Порядок строк в коде: метод Сдвинуть и сортировка

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

Сдвиг одной строки

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

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

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

	Индекс = Объект.Товары.Индекс(ТекущиеДанные);
	Если Индекс > 0 Тогда
		// Смещение -Индекс поднимает строку на позицию 0
		Объект.Товары.Сдвинуть(Индекс, -Индекс);
		Модифицированность = Истина;
	КонецЕсли;

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

Для строки с индексом 7 смещение будет -7, и она станет первой (индекс 0, номер строки 1). Флаг Модифицированность нужен, чтобы форма предложила записать документ при закрытии.

Сортировка всей табличной части на сервере

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

&НаСервере
Процедура УпорядочитьТоварыНаСервере()

	ДокументОбъект = РеквизитФормыВЗначение("Объект");
	Таблица = ДокументОбъект.Товары.Выгрузить();
	Таблица.Сортировать("Номенклатура Возр, Количество Убыв");
	ДокументОбъект.Товары.Загрузить(Таблица);
	ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
	Модифицированность = Истина;

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

После Загрузить() строки получат номера 1, 2, 3… уже в новом порядке. Структура таблицы значений совпадает с табличной частью, поэтому все колонки, включая суммы и ставки НДС, переносятся без потерь.

Свой порядок для справочников

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

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

Перенос строк между документами

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

Варианты:

  • 📋 в ряде типовых конфигураций в меню Ещё табличной части есть команды копирования и вставки строк: выделяете строки в одном документе, копируете, во втором вставляете;
  • 📑 создать второй документ копированием первого (F9 в журнале) и удалить лишние строки в обоих;
  • 🔁 для повторяющихся случаев — внешняя обработка, которая выгружает выбранные строки и добавляет их в другой документ.

Если первый документ проведён, после удаления из него строк перепроведите его. Иначе движения по регистрам останутся по старому составу и товар окажется учтён дважды.

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

На учёт номер строки не влияет, но есть ситуации, где перестановка строк — не косметика.

  • 🧾 Сверка с документом поставщика. При вводе поступления по бумажной накладной удобно держать позиции в том же порядке, что у продавца. Тогда проверка «строка в строку» занимает минуты, а расхождение по одной позиции видно сразу.
  • 📄 Печатные формы для покупателя. Накладная, счёт, акт и УПД печатаются в порядке строк табличной части. Если клиент просит сгруппировать позиции по разделам сметы или по этапам работ, переставьте строки до печати.
  • 🔩 Комплектация и спецификации. В документах сборки и в спецификациях порядок часто повторяет технологию: сначала основные материалы, потом крепёж, потом упаковка. Монтажнику так проще читать распечатку.
  • 👥 Списки сотрудников. В кадровых и зарплатных документах на много человек удобно держать сотрудников по подразделениям или по алфавиту — так легче найти нужного и сверить итоги с ведомостью.
  • 🔢 Ссылки на номер строки. Если в письме или претензии вы пишете «позиция 12 накладной», номер должен совпадать с печатной формой. Переставили строки после отправки документа — номера у вас и у контрагента разойдутся.

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

Почему строка не перемещается

Диагностика: выберите симптом

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

Можно ли переместить несколько строк сразу?
Надёжнее двигать по одной. Если нужно переставить большой блок, удобнее отсортировать табличную часть по подходящей колонке или переставить строки кодом.
Влияет ли порядок строк на проводки и остатки?
Нет. Движения по регистрам и проводки зависят от состава строк, а не от их номеров. Порядок важен для печатных форм, счетов-фактур и сверки с бумажным документом поставщика.
Можно ли поменять номер строки вручную, вписав другое число в колонку N?
Нет. Колонка N — служебный номер, платформа пересчитывает его сама. Порядок меняется только перестановкой строк.
Сохраняется ли порядок при загрузке документа из Excel или через ЭДО?
Строки встают в том порядке, в каком идут в файле. Если поставщик прислал позиции вразнобой, отсортируйте табличную часть после загрузки.
Нужно ли перепроводить документ после перестановки строк?
Достаточно записать. Перепроведение нужно, только если менялся состав строк, количество или суммы.