Копирование нескольких строк табличной части в 1С: клавиши, Excel, код

· 9 мин

Содержание

Чтобы скопировать несколько строк в 1С и вставить их в другой документ, выделите строки табличной части мышью с зажатым Shift (или Ctrl для строк вразброс), нажмите Ctrl+C, откройте второй документ, встаньте в его табличную часть и нажмите Ctrl+V. Если вставка не прошла, остаётся обходной путь через Excel или перенос кодом. Ниже все три способа и разбор причин, почему строки не вставляются.

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

Как выделить несколько строк

От выделения зависит всё остальное. Строки в табличной части выделяются так же, как в проводнике Windows:

  • 🖱 Диапазон. Щёлкните первую строку, зажмите Shift и щёлкните последнюю. Выделятся все строки между ними. То же даёт Shift со стрелками вниз и вверх.
  • 🖱 Строки вразброс. Зажмите Ctrl и щёлкайте нужные строки по одной.
  • ⌨ Все строки сразу. Ctrl+A в табличной части выделяет всё содержимое.

Клик по самой ячейке начинает редактирование значения, а не выделение строки. Если вместо подсветки строки открылось поле ввода, нажмите Esc и кликните по номеру строки в крайней левой колонке. Выделение за номер строки надёжнее: оно захватывает строку целиком.

Выделяйте мышью, а не клавишей Insert и не двойным кликом: двойной клик по ячейке открывает её на редактирование, а в некоторых колонках, например в номенклатуре, ещё и форму выбора.

Сочетания клавиш и команды меню

Для копирования внутри одной табличной части и между документами в 1С работают привычные комбинации Windows.

ДействиеКлавишиКоманда меню
Копировать выделенноеCtrl+C или Ctrl+Insert«Копировать» в контекстном меню
Вставить из буфераCtrl+V или Shift+Insert«Вставить» в контекстном меню
ВырезатьCtrl+X«Вырезать»
Продублировать строкуF9кнопка «Скопировать» над таблицей

Различайте две вещи. Ctrl+C помещает выделенное в буфер обмена, откуда его можно вставить в другое место, в том числе в Excel или Word. Клавиша F9 и кнопка «Скопировать» на панели табличной части работают иначе: они создают рядом дубликат выбранной строки в этом же документе. Это самый быстрый способ размножить типовую строку и поменять в ней один реквизит.

Контекстное меню вызывается правой кнопкой мыши по выделению. Набор команд зависит от формы и версии платформы, но «Копировать» и «Вставить» присутствуют в табличных частях практически всегда.

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

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

Скопированное через Ctrl+C лежит в буфере обмена Windows, поэтому его можно вставлять куда угодно: в другой документ той же базы, в другую базу 1С, в Excel. Порядок действий для двух документов:

  1. Откройте оба документа. Каждый открывается в своём окне или на своей вкладке.
  2. В первом документе выделите нужные строки и нажмите Ctrl+C.
  3. Перейдите во второй документ, откройте нужную вкладку (например, «Товары») и нажмите Ctrl+V.
  4. Проверьте результат: количество строк, номенклатуру, цены, единицы измерения.

Важный нюанс: в буфер попадают значения выделенных ячеек, а не «живые» объекты. Поэтому вставка срабатывает лучше всего, когда у документов совпадает состав и порядок колонок. Если табличные части разные (в одном есть колонка «Скидка», в другом нет), 1С сопоставит данные по тому, что сможет распознать, и часть значений может потеряться или съехать.

Если нужен точный перенос всего документа целиком, проще не копировать строки, а создать копию самого документа. В списке документов выделите его и нажмите F9 (кнопка «Скопировать»): откроется новый документ с теми же реквизитами и табличными частями. Затем поменяйте контрагента, дату и номер.

Копия документа в рабочей базе — это новый документ. Не проводите его, пока не убедились, что он вам нужен, иначе задвоятся движения по регистрам. Лишнюю копию пометьте на удаление.

Обмен через Excel: когда строк много

Для массивов в сотни строк буфер 1С может оказаться неудобным, а проверять данные глазами хочется в таблице. Промежуточная остановка в Excel решает обе задачи.

Из 1С в Excel. Выделите строки табличной части, нажмите Ctrl+C, откройте пустой лист Excel и нажмите Ctrl+V. Колонки лягут в ячейки, значения будут текстовыми. Если нужны все строки со всеми колонками, воспользуйтесь командой вывода списка в меню «Ещё» над таблицей, она выгружает табличную часть в табличный документ, который можно сохранить как файл .xlsx.

Из Excel в 1С. Подготовьте в Excel данные в том же порядке колонок, что и в табличной части, выделите нужный блок, Ctrl+C, затем в 1С встаньте в табличную часть и Ctrl+V. В актуальных релизах платформы вставка нескольких строк из внешнего источника в табличную часть поддерживается. Если в вашей версии вставка не срабатывает, загрузите данные штатным механизмом: во многих конфигурациях есть обработка «Загрузка данных из табличного документа» или похожая команда в документе.

Перед загрузкой проверьте в Excel три вещи:

  • 📌 Числа записаны числами, а не текстом с пробелами внутри (1 250,50 с неразрывным пробелом 1С может не понять).
  • 📌 Названия номенклатуры совпадают со справочником буква в букву. Иначе 1С не найдёт элемент и оставит ячейку пустой.
  • 📌 Лишние пробелы в начале и конце названий удалены.

Групповая обработка: изменить сразу много строк

Часто копируют строки лишь затем, чтобы поправить в них один реквизит, например склад или ставку НДС. Это можно сделать без копирования вообще, если обработать выделенное группой.

  1. Выделите нужные строки (Shift или Ctrl + клик).
  2. Откройте меню «Ещё» над табличной частью и поищите команду изменения выделенных строк. Состав команд зависит от конфигурации: в одних есть групповое изменение реквизитов, в других только заполнение.
  3. Укажите реквизит и новое значение.

Если команды группового изменения в вашей форме нет, остаётся старый приём: заполнить значение в первой строке, скопировать ячейку через Ctrl+C и вставить в выделенный диапазон ячеек этой колонки через Ctrl+V. Во многих списках 1С значение из одной ячейки размножается на все выделенные ячейки колонки.

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

Программный перенос: код и внешние обработки

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

Базовый сценарий: взять строки из одного документа и добавить в другой.

Для Каждого Строка Из Источник.Товары Цикл
    НоваяСтрока = Приемник.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
КонецЦикла;

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

Для Каждого Строка Из Источник.Товары Цикл
    Если Строка.Количество > 10 Тогда
        НоваяСтрока = Приемник.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
    КонецЕсли;
КонецЦикла;

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

ТЗ = Источник.Товары.Выгрузить();
Приемник.Товары.Загрузить(ТЗ);

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

Прежде чем запускать обработку на рабочей базе, проверьте её на копии. Запись в документ без проверки способна затереть то, что пользователь уже ввёл руками.

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

Какой способ выбрать

СпособКогда подходитРиски
Ctrl+C / Ctrl+Vдо нескольких десятков строк, похожие документыколонки могут не совпасть, часть данных теряется
F9 на строкеразмножить типовую строку в том же документекопируются и ошибочные значения
Копия документа (F9 в списке)нужен документ почти такой жезадвоение движений, если провести без проверки
Через Excelсотни строк, нужна проверка или правкаформаты чисел и названия номенклатуры
Кодрегулярный перенос или перенос по условиюнужна проверка на копии базы

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

Что делать, если вставка не работает

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

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

Вставилась только одна строка или пустая строка. В буфере оказалась одна ячейка, а не выделенные строки: вы выделили ячейку, а не строку. Повторите выделение через номер строки.

Вставились строки, но номенклатура пустая. Это знакомое поведение при несовпадении названий: 1С не нашла элемент справочника по тексту из буфера. Сверьте названия в источнике и в справочнике и поправьте различающиеся символы, чаще всего лишние пробелы, латинские буквы вместо кириллических, разный регистр или неразрывные пробелы.

Числа превратились в нули. Источник выдал числа с разделителем тысяч или с точкой вместо запятой. Приведите формат в Excel (ячейки → числовой формат без разделителей) и вставьте повторно.

Вставка работает в одном документе и не работает в другом. Табличные части различаются колонками. Сначала откройте оба документа и посмотрите на состав колонок. Если нужная колонка в целевом документе скрыта, включите её через настройку формы («Ещё» → «Изменить форму») и повторите.

Вставилось в середину, а нужно в конец (или наоборот). Вставка добавляет строки по положению курсора. Встаньте на последнюю строку или добавьте пустую строку перед вставкой, затем нажмите Ctrl+V.

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

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

Можно ли скопировать строки из одной базы 1С в другую?
Да, если базы запущены на одном компьютере. Буфер обмена Windows общий для всех программ, поэтому Ctrl+C в одной базе и Ctrl+V в другой работает так же, как между документами одной базы. Состав колонок должен совпадать.
Как скопировать строки в 1С, не копируя весь документ?
Выделите их через номера строк, нажмите Ctrl+C и вставьте в нужный документ. Копия документа через F9 в списке тут не нужна, она создаёт целиком новый документ.
Почему при вставке из Excel лишние пустые строки?
В буфер попали пустые строки с форматированием, которые Excel считает частью диапазона. Выделите только заполненные ячейки или удалите пустые строки на листе перед копированием.
Можно ли отменить вставку?
В табличной части отдельной кнопки «Отменить» обычно нет. Удалите добавленные строки вручную: выделите их через Shift и нажмите Delete. Если документ ещё не записан, закройте его без сохранения.
Копируется ли строка вместе со ссылкой на серию, характеристику или проект?
Если эти колонки есть в обеих табличных частях и значения распознаются, они копируются. Если в целевом документе нет колонки с серией, значение потеряется.