Порядок строк в табличной части 1С 8.3: стрелки, Ctrl+Shift и метод Сдвинуть
Содержание
Чтобы переместить строку в 1С, выделите её в табличной части и нажмите стрелку «Переместить вверх» или «Переместить вниз» на панели над таблицей. С клавиатуры то же самое делают Ctrl+Shift+↑ и Ctrl+Shift+↓. Номер строки (колонка N) программа пересчитает сама, в печатной форме порядок станет новым после записи документа.
Это работает одинаково в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на платформе 8.3: команды перемещения — стандартные команды таблицы формы, а не особенность конкретной программы. Если стрелок не видно, они почти всегда спрятаны в меню Ещё той же панели.
Кнопки «вверх» и «вниз» над табличной частью
В интерфейсе «Такси» у каждой табличной части (Товары, Услуги, Сотрудники, Начисления) есть своя командная панель. На ней обычно стоят кнопки Добавить, Подбор, иногда Изменить, и две стрелки — синяя вверх и синяя вниз.
Порядок действий:
- Откройте документ, например
Реализация (акт, накладная). - Щёлкните по строке, которую нужно переставить. Достаточно выделить любую ячейку.
- Нажмите стрелку вверх или вниз. Каждый щелчок сдвигает строку на одну позицию.
- Нажмите
ЗаписатьилиПровести, чтобы новый порядок сохранился.
Если документ закрыть без записи, порядок вернётся к прежнему: перемещение меняет только данные в открытой форме.
Если стрелок на панели нет
Узкое окно прячет часть кнопок. Тогда они уходят в меню Ещё справа на панели таблицы. Откройте его — команды Переместить вверх и Переместить вниз будут в списке.
Если нет и там, кнопки могли скрыть настройкой формы. Верните их сами:
- На панели таблицы откройте
Ещё → Изменить форму.... - В дереве элементов найдите командную панель нужной табличной части.
- Поставьте флажки у команд перемещения и нажмите
ОК.
Если настройку формы испортили так, что проще начать заново, в том же окне Изменить форму есть команда возврата к стандартным настройкам. Она сбрасывает только внешний вид формы, данные документа не затрагивает.
Горячие клавиши для работы со строками
Мышь удобна для одной-двух перестановок. Когда нужно переставить десяток строк, быстрее клавиатура: выделили, зажали Ctrl+Shift и стрелкой «довели» строку до места.
| Действие | Клавиши |
|---|---|
| Переместить строку вверх | Ctrl+Shift+↑ |
| Переместить строку вниз | Ctrl+Shift+↓ |
| Добавить новую строку | Ins |
| Скопировать текущую строку | F9 |
| Начать редактирование ячейки | F2 или Enter |
| Удалить строку | Del |
| Перейти к первой / последней строке | Ctrl+Home / Ctrl+End |
Удобный приём для вставки строки в середину списка. Встаньте на строку, после которой нужна новая, нажмите F9 — копия появится рядом. Поправьте в ней номенклатуру и количество. Так не придётся добавлять строку в конец и тащить её вверх через полсотни позиций.
Если клавиши не срабатывают, проверьте, что фокус стоит на самой таблице, а не в поле шапки. Ещё одна частая причина — ячейка в режиме редактирования (мигает курсор). Нажмите Esc, чтобы выйти из ячейки, и повторите.
Перетаскивание строк мышью
Во многих формах строку можно просто взять мышью и перетащить на новое место. Зажмите левую кнопку на строке, тяните вверх или вниз и отпустите там, где строка должна оказаться.
Работает это не везде. Разрешено ли перетаскивание, решает разработчик формы: у элемента таблицы есть свойства, которые включают начало перетаскивания и приём перетаскиваемых данных. В типовых документах поведение может различаться даже внутри одной конфигурации — в одной табличной части тянется, в соседней нет.
Как понять, что перетаскивание работает:
- 🖱 при протягивании курсор меняет вид, между строками появляется полоса-указатель места вставки;
- 🚫 курсор с перечёркнутым кругом — форма запрещает бросить строку сюда;
- ⏸ ничего не происходит — перетаскивание в этой таблице выключено, пользуйтесь стрелками.
Перетаскивание удобно на коротких списках. На таблице в 200 строк надёжнее клавиши: при прокрутке во время протягивания легко промахнуться и бросить строку не туда.
Как отсортировать строки в табличной части
Иногда нужно не переставить одну строку, а упорядочить все: по алфавиту номенклатуры, по сумме, по табельному номеру. Перемещать по одной в этом случае долго.
В формах на платформе 8.3 у табличной части обычно есть команды сортировки в меню Ещё:
- Щёлкните по ячейке в колонке, по которой хотите упорядочить строки, например «Номенклатура».
- Откройте
Ещёна панели табличной части. - Выберите
Сортировать по возрастаниюилиСортировать по убыванию. - Запишите документ.
Сортировка в табличной части документа переставляет сами строки и меняет их номера. Это отличается от сортировки в журнале документов или списке справочника: там меняется только отображение, данные остаются прежними.
| Способ | Когда подходит | Что учесть |
|---|---|---|
| Стрелки на панели | 1–5 перестановок | Медленно на длинных списках |
Ctrl+Shift+стрелка | Много перестановок подряд | Фокус должен быть на таблице |
| Перетаскивание | Короткий список, строка далеко уехала | Включено не во всех формах |
| Сортировка | Нужно упорядочить всё сразу | Ручной порядок теряется |
Код (Сдвинуть, Сортировать) | Обработка, доработка формы | Нужны права на изменение конфигурации |
Сортировка необратима одной кнопкой. Отмены в табличной части нет. Если ручной порядок важен (комплектация, порядок позиций в договоре), закройте документ без записи — данные вернутся к последнему сохранённому состоянию.
Порядок строк в коде: метод Сдвинуть и сортировка
Для программиста 1С важно одно правило: номер строки — служебный реквизит НомерСтроки. Записать в него своё значение нельзя, платформа нумерует строки сама по их положению в коллекции. Поэтому порядок меняют не номером, а перестановкой строк.
Сдвиг одной строки
У табличной части объекта и у коллекции данных формы есть метод Сдвинуть(). Первый параметр — строка (или её индекс), второй — смещение: отрицательное двигает вверх, положительное вниз.
&НаКлиенте
Процедура ПереместитьВНачало(Команда)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Индекс = Объект.Товары.Индекс(ТекущиеДанные);
Если Индекс > 0 Тогда
// Смещение -Индекс поднимает строку на позицию 0
Объект.Товары.Сдвинуть(Индекс, -Индекс);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
Для строки с индексом 7 смещение будет -7, и она станет первой (индекс 0, номер строки 1). Флаг Модифицированность нужен, чтобы форма предложила записать документ при закрытии.
Сортировка всей табличной части на сервере
Надёжный способ, который работает с табличной частью объекта: выгрузить её в таблицу значений, отсортировать и загрузить обратно.
&НаСервере
Процедура УпорядочитьТоварыНаСервере()
ДокументОбъект = РеквизитФормыВЗначение("Объект");
Таблица = ДокументОбъект.Товары.Выгрузить();
Таблица.Сортировать("Номенклатура Возр, Количество Убыв");
ДокументОбъект.Товары.Загрузить(Таблица);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
Модифицированность = Истина;
КонецПроцедуры
После Загрузить() строки получат номера 1, 2, 3… уже в новом порядке. Структура таблицы значений совпадает с табличной частью, поэтому все колонки, включая суммы и ставки НДС, переносятся без потерь.
Свой порядок для справочников
В списке справочника строки не «стоят» на месте — их порядок задаёт сортировка. Если пользователям нужен ручной порядок (например, статьи затрат в нужной последовательности), в конфигурациях на БСП для этого есть подсистема настройки порядка элементов: справочнику добавляют реквизит РеквизитДопУпорядочивания, и в списке появляются те же стрелки «вверх» и «вниз». Делается это доработкой конфигурации или расширением, а не настройкой пользователя.
Типовой документ лучше дорабатывать расширением конфигурации, а не снятием с поддержки. Команда «Упорядочить по номенклатуре» в расширении переживёт обновление релиза без ручного переноса.
Перенос строк между документами
Частая задача, которую тоже называют «переместить строку»: часть позиций из одного документа нужно перенести в другой. Стрелками это не решается — они двигают строку только внутри своей таблицы.
Варианты:
- 📋 в ряде типовых конфигураций в меню
Ещётабличной части есть команды копирования и вставки строк: выделяете строки в одном документе, копируете, во втором вставляете; - 📑 создать второй документ копированием первого (
F9в журнале) и удалить лишние строки в обоих; - 🔁 для повторяющихся случаев — внешняя обработка, которая выгружает выбранные строки и добавляет их в другой документ.
Если первый документ проведён, после удаления из него строк перепроведите его. Иначе движения по регистрам останутся по старому составу и товар окажется учтён дважды.
Когда порядок строк действительно важен
На учёт номер строки не влияет, но есть ситуации, где перестановка строк — не косметика.
- 🧾 Сверка с документом поставщика. При вводе поступления по бумажной накладной удобно держать позиции в том же порядке, что у продавца. Тогда проверка «строка в строку» занимает минуты, а расхождение по одной позиции видно сразу.
- 📄 Печатные формы для покупателя. Накладная, счёт, акт и УПД печатаются в порядке строк табличной части. Если клиент просит сгруппировать позиции по разделам сметы или по этапам работ, переставьте строки до печати.
- 🔩 Комплектация и спецификации. В документах сборки и в спецификациях порядок часто повторяет технологию: сначала основные материалы, потом крепёж, потом упаковка. Монтажнику так проще читать распечатку.
- 👥 Списки сотрудников. В кадровых и зарплатных документах на много человек удобно держать сотрудников по подразделениям или по алфавиту — так легче найти нужного и сверить итоги с ведомостью.
- 🔢 Ссылки на номер строки. Если в письме или претензии вы пишете «позиция 12 накладной», номер должен совпадать с печатной формой. Переставили строки после отправки документа — номера у вас и у контрагента разойдутся.
Если документ уже отправлен контрагенту через ЭДО или подписан, порядок в нём лучше не трогать. Любое изменение после подписания ведёт к расхождению с экземпляром контрагента, и тогда нужен исправительный документ, а не перестановка строк.
Почему строка не перемещается
Частые вопросы
Можно ли переместить несколько строк сразу?
Влияет ли порядок строк на проводки и остатки?
Можно ли поменять номер строки вручную, вписав другое число в колонку N?
N — служебный номер, платформа пересчитывает его сама. Порядок меняется только перестановкой строк.