Перемещение строки вверх в табличной части и списке 1С
Содержание
Чтобы поднять строку в 1С на одну позицию выше, встаньте на неё в табличной части и нажмите кнопку со стрелкой вверх в командной панели таблицы. Если кнопки не видно, откройте меню Еще над таблицей: нужная команда обычно спрятана там. Быстрее работает клавиатура: Ctrl+Shift+↑ сдвигает текущую строку вверх, Ctrl+Shift+↓ вниз.
Это относится к табличным частям документов и справочников в управляемом интерфейсе «Такси». Порядок строк в таких таблицах хранится в самом документе, поэтому после записи он сохраняется. Со списками (справочники, журналы) всё иначе: там строки нельзя поднять руками, порядок задаёт сортировка. Ниже разобраны оба случая, а в конце есть пример кода для тех, кто делает свою кнопку.
Где в 1С можно двигать строки, а где нельзя
Перед тем как искать кнопку, определите, какая таблица перед вами. От этого зависит всё остальное.
| Что перед вами | Можно ли двигать строку | Чем задаётся порядок |
|---|---|---|
| Табличная часть документа или справочника (товары, услуги, оплата) | Да | Порядок строк в самом объекте |
| Табличное поле в обработке, внешней форме | Обычно да | Порядок в таблице значений |
| Список справочника, журнал документов | Нет | Сортировка и настройки списка |
| Отчёт (результат в табличном документе) | Нет | Группировки и сортировка в настройках отчёта |
Простой признак: если у таблицы есть командная панель с кнопками Добавить, Копировать, Изменить, а строки можно редактировать прямо в ячейках, это табличная часть. Двигать её строки можно.
Если вы хотите «поднять» строку в списке справочника или в отчёте, кнопки «Вверх» там не будет. Для этого нужна сортировка, о ней в отдельном разделе ниже.
Кнопки перемещения в командной панели
Стандартный способ, который не требует никаких настроек.
- Откройте документ и перейдите на вкладку с нужной табличной частью, например
Товары. - Щёлкните по любой ячейке строки, которую нужно поднять. Строка станет текущей.
- В командной панели над таблицей нажмите кнопку со стрелкой вверх.
- Строка встанет на одну позицию выше. Чтобы поднять ещё выше, нажимайте кнопку повторно.
Кнопка сдвигает строку на одну позицию за нажатие. Если нужно перенести строку с двадцатого места на первое, это девятнадцать нажатий. Для таких случаев удобнее горячие клавиши или другой приём, описанный ниже.
Если кнопки со стрелками нет на панели, посмотрите в меню Еще. Конфигурации разные, а разработчик формы мог убрать команду из основной панели. Некоторые формы вообще не показывают команды перемещения: тогда их можно вернуть настройкой формы (см. раздел про настройку).
После перемещения номера строк в первой колонке пересчитываются сами: строка, ставшая первой, получит номер 1. Ничего исправлять вручную не нужно.
Горячие клавиши: как поднять строку без мыши
Для частой работы с большими табличными частями клавиатура экономит много кликов. Базовый набор такой:
| Действие | Сочетание |
|---|---|
| Поднять текущую строку на одну позицию выше | Ctrl+Shift+↑ |
| Опустить текущую строку на одну позицию ниже | Ctrl+Shift+↓ |
| Перейти к соседней строке без изменения порядка | ↑ и ↓ |
| Войти в режим редактирования ячейки | F2 или Enter |
| Добавить новую строку | Ins |
Порядок работы: стрелками выберите строку, зажмите Ctrl и Shift и нажимайте ↑. Фокус при этом остаётся на перемещаемой строке, поэтому её можно проводить вверх серией нажатий, не отпуская сочетание.
Если сочетание не срабатывает, проверьте три вещи:
- 🔹 Фокус не в таблице. Он должен стоять на самой табличной части, а не на поле шапки документа.
- 🔹 Ячейка в режиме редактирования. Нажмите
Esc, затем повторите сочетание. - 🔹 Команды нет в форме. Горячая клавиша выполняет команду формы. Если разработчик её убрал, клавиши не сработают, как и кнопка.
Бывает, что Ctrl+Shift перехватывает системная раскладка: в Windows это сочетание может переключать язык ввода. Если вместе со сдвигом строки меняется раскладка, отключите переключение по Ctrl+Shift в языковых параметрах системы либо используйте кнопку.
Как сразу переместить строку в начало или конец
Когда строку нужно перенести далеко, нажимать кнопку много раз неудобно. Есть три приёма.
Перетаскивание мышью
В управляемых формах многие табличные части поддерживают перетаскивание строки: зажмите левую кнопку на номере строки или на её свободной области и тяните выше. Работает не везде, это зависит от настроек таблицы в конкретной форме. Если строка не двигается, перетаскивание отключено.
Копирование и вставка в нужное место
Надёжный способ для любой таблицы:
- Добавьте новую строку в нужное место (в начало или между строками).
- Скопируйте значения из старой строки в новую.
- Удалите старую.
Это дольше, зато не зависит от наличия кнопок. Для документов, где в строках есть сложные поля (серии, характеристики, привязки к заказам), проверьте после переноса, что ничего не потерялось.
Сортировка таблицы целиком
Если нужно привести в порядок всю табличную часть, например расположить товары по наименованию, сдвигать строки по одной бессмысленно. Для этого в меню Еще над таблицей ищите команды сортировки по возрастанию и убыванию по текущей колонке. Выберите колонку, поставьте в неё курсор и примените команду. Порядок строк изменится физически, и после записи документа он сохранится.
Сортировка изменяет порядок всех строк. Если в документе порядок имеет смысл (например, очерёдность списания), сначала запомните его или скопируйте документ как черновик.
Как поднять строку в списке справочника или журнале
В списках всё устроено иначе. Строки там не принадлежат одному объекту, это отдельные записи в базе данных, а порядок показа вычисляется при каждом открытии списка.
Способы повлиять на порядок:
- Щёлкнуть по заголовку колонки. Список сортируется по ней, повторный щелчок меняет направление. Это самый быстрый путь: нужные записи окажутся сверху.
- Настроить список. Откройте меню
Ещенад списком и найдите команды настройки списка и сортировки: можно задать порядок по нескольким полям, например сначала по группе, затем по наименованию. - Отбор и поиск. Если вам нужна одна строка, а не порядок, проще поставить отбор или воспользоваться строкой поиска, чем пытаться её «поднять».
Отдельный случай: иерархические справочники. Там элементы идут внутри групп, и поднять элемент из одной группы в другую нельзя сортировкой. Его нужно перенести: команда перемещения в группу есть в меню Еще списка (она называется «Переместить в группу»). Для порядка внутри группы работает та же сортировка по колонкам.
У некоторых справочников есть реквизит «Порядок» или «Код» с ручной нумерацией. Тогда строку «поднимают», уменьшая число в этом реквизите, а список сортируют по нему. Это уже решение конкретной конфигурации, универсальной кнопки здесь нет.
Вернуть кнопки перемещения через настройку формы
Если в вашей форме командная панель таблицы урезана, пользователь может сам вернуть недостающие команды, не обращаясь к программисту.
- Откройте документ с нужной табличной частью.
- В меню
Ещев верхней части формы найдите команду изменения формы (пункт, где открывается настройка состава панелей и команд). - В открывшемся дереве элементов найдите командную панель вашей таблицы.
- Добавьте в неё команды перемещения вверх и вниз, если они есть в списке доступных команд, и сохраните настройку.
Настройка хранится для вашего пользователя и не меняет форму для остальных. Если в списке доступных команд перемещения нет, значит, разработчик формы их не предусмотрел, и тогда остаются горячие клавиши, перетаскивание или собственная кнопка (раздел ниже).
Если в организации много пользователей и всем нужны кнопки, лучше один раз попросить программиста добавить их в форму, чем настраивать каждое рабочее место.
Практические примеры: когда порядок строк важен
Порядок строк кажется мелочью, пока документ не уходит клиенту или не попадает в учёт. Вот ситуации, где его меняют чаще всего.
- 📄 Счёт или реализация для клиента. Основные позиции хочется показать первыми, а доставку и упаковку оставить в конце. Строки поднимают и опускают вручную, пока документ не принял нужный вид.
- 📦 Подбор товаров через «Подбор». Новые позиции добавляются в конец, а нужно вставить их рядом с похожими. Проще добавить и поднять, чем искать место заранее.
- 🧾 Услуги в акте. Заказчик просит определённую очерёдность работ. Меняйте порядок до печати, после записи документа печатная форма возьмёт новый порядок.
- 🧮 Списание партий и серий. Если способ списания зависит от очерёдности строк, смена порядка меняет результат проведения. Перед перестановкой подумайте, как именно настроен учёт в вашей базе.
Для документов с десятками позиций порядок удобнее наводить в два приёма: сначала сортировка всей таблицы по нужной колонке, потом точечная подвижка отдельных строк кнопками или сочетанием. Так вы тратите меньше нажатий, чем при ручном переносе каждой строки.
Перемещение строк кодом для разработчиков
Если в вашей форме нет кнопок перемещения, их добавляют двумя шагами: создаётся команда формы и процедура-обработчик. Строки таблицы значений и табличной части сдвигает метод Сдвинуть(Строка, Смещение). Первый параметр принимает строку или её индекс, второй задаёт направление: минус один поднимает, плюс один опускает.
Пример обработчика команды «Вверх» для табличной части Товары в управляемой форме:
&НаКлиенте
Процедура ПереместитьСтрокуВверх(Команда)
ИдСтроки = Элементы.Товары.ТекущаяСтрока;
Если ИдСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
Строка = Объект.Товары.НайтиПоИдентификатору(ИдСтроки);
Индекс = Объект.Товары.Индекс(Строка);
Если Индекс > 0 Тогда
Объект.Товары.Сдвинуть(Индекс, -1);
Элементы.Товары.ТекущаяСтрока = ИдСтроки;
КонецЕсли;
КонецПроцедуры
Что здесь важно:
- 🔹 В управляемой форме
ТекущаяСтрокавозвращает идентификатор строки, а не индекс. Поэтому нуженНайтиПоИдентификатору, потомИндекс. - 🔹 Проверка
Индекс > 0не даёт сдвинуть первую строку выше начала таблицы, иначе будет ошибка. - 🔹 Для команды «Вниз» условие другое:
Индекс < Объект.Товары.Количество() - 1, смещение1. - 🔹 Если строка после сдвига теряет выделение, верните его, как в последней строке примера.
Тот же подход работает для реквизита формы типа ТаблицаЗначений: вместо Объект.Товары пишете Товары. Для таблицы, у которой есть дополнительный столбец порядка (например, Приоритет), сдвиг дополняют перенумерацией: после каждого перемещения пройдите по строкам и запишите новые номера.
Если кнопки добавляются в типовую конфигурацию, делайте это через расширение. Прямая правка типового кода усложнит обновление на новые релизы.
Что делать, если строка не поднимается
Разберём типичные причины по симптомам.
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| Нет кнопок со стрелками | Команды убраны из формы или они в меню «Еще» | Откройте меню «Еще», либо воспользуйтесь горячими клавишами |
| Кнопки серые | Документ проведён и закрыт для правки, либо у вас права только на чтение | Проверьте, можно ли редактировать документ; при необходимости отмените проведение |
| Строка поднялась и тут же вернулась | Срабатывает сортировка таблицы или пересчёт при записи | Проверьте, не задана ли автоматическая сортировка; для порядка по правилам используйте сам механизм конфигурации |
| Порядок не сохранился после закрытия | Документ не записан | Нажмите Записать или Провести и закрыть |
| Сочетание клавиш меняет раскладку | Перехват Ctrl+Shift системой | Отключите это сочетание в Windows либо используйте кнопку |
| Строку не передвинуть в списке | Это не табличная часть | Используйте сортировку по колонке |
Отдельно про проведённые документы. Порядок строк обычно влияет на данные, которые попадают в проводки и движения: например, очерёдность списания партий. Если вы поменяли порядок строк в проведённом документе и перепровели его, результат может отличаться. Перед правкой понимайте, зачем меняете порядок.
Частые вопросы
Можно ли поднять сразу несколько строк?
Ctrl или Shift. Сдвинется ли выделенная группа целиком, зависит от формы. Если нет, перемещайте строки по одной.Почему порядок строк меняется после записи документа?
Как поменять местами две соседние строки?
Ctrl+Shift+↑. Верхняя при этом автоматически окажется ниже.Есть ли отмена перемещения?
Ctrl+Shift+↓. Если уже записали документ и порядок важен, откройте предыдущую копию из резервной базы.