Копирование строк табличной части в 1С 8.3: от клавиши F9 до обработки на встроенном языке

· 9 мин

Содержание

Скопировать строку в табличной части 1С проще всего клавишей F9: встаньте на нужную строку и нажмите её — ниже появится копия со всеми заполненными колонками. Та же команда есть в меню Ещё → Скопировать над таблицей и в контекстном меню по правой кнопке мыши.

Типичная ситуация: в счёте 40 позиций, а покупатель просит выставить ещё один на ту же номенклатуру, но с другим количеством. Перебивать строки вручную долго, а скопировать строчки в 1С можно на любом уровне: одну строку в документе, десяток строк в другой документ, строки макета в Конфигураторе и сотни строк кодом. Всё описано для платформы 8.3 с интерфейсом «Такси», команды платформенные и работают в любой конфигурации — БП 3.0, УТ 11, ЗУП 3.1, УНФ.

Быстрое копирование строк в документе: клавиши и команды

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

ДействиеКлавишиГде найти мышью
Скопировать текущую строкуF9Ещё → Скопировать, правая кнопка мыши
Добавить пустую строкуInsкнопка Добавить
Удалить строкуDelЕщё → Удалить
Переместить строку вверх / внизCtrl+Shift+↑ / Ctrl+Shift+↓стрелки на командной панели таблицы
Начать редактирование ячейкиF2 или Enterдвойной щелчок
Закончить редактирование строкиEnter, Tab до конца строкищелчок по другой строке

Как работает F9 по шагам:

  1. Щёлкните по строке, которую хотите повторить. Достаточно выделить любую ячейку.
  2. Нажмите F9. Копия встанет в конец таблицы или сразу под текущей — зависит от настроек формы.
  3. Копия откроется в режиме редактирования. Поправьте количество, цену или склад.
  4. Нажмите Enter — сработают обработчики формы, и сумма с НДС пересчитается.

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

Копия строки получает новый номер строки. Остальные значения переносятся как есть: номенклатура, количество, цена, ставка НДС, счета учёта. Если цена в исходной строке была введена вручную, она «переедет» в копию — проверьте её, если документ на другую дату.

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

F9 копирует одну, текущую строку. Чтобы работать с группой строк, их сначала выделяют.

Способы выделения в таблице 1С:

  • 🖱️ Ctrl + щелчок — добавить строку к выделению или убрать её;
  • ⬇️ Shift + щелчок или Shift+↓ — выделить диапазон подряд;
  • 📋 Ctrl+A — выделить все строки таблицы.

Выделенные строки можно разом удалить клавишей Del. А вот размножить их одной командой платформа не даёт: стандартная команда «Скопировать» делает копию только текущей строки. Для группы строк есть три выхода:

  1. Нажать F9 по очереди на каждой строке — терпимо, если строк пять-шесть.
  2. Скопировать документ целиком через F9 в журнале и удалить лишнее в копии — быстрее, если нужно больше половины строк.
  3. Использовать команды копирования и вставки строк самой конфигурации (следующий раздел) или обработку на встроенном языке.

Если в документе F9 и кнопка Добавить неактивны, документ открыт только для просмотра. Обычно причина одна из двух: у пользователя нет прав на изменение или дата документа попадает под дату запрета изменения данных.

Перенос строк между документами через буфер обмена

Это самый частый запрос: строки из одного документа нужны в другом. Например, товары из заказа поставщику — в поступление, или список сотрудников из одной ведомости — в другую.

Команды «Скопировать строки» и «Вставить строки»

В современных релизах типовых конфигураций (БП 3.0, УТ 11, КА 2, ERP) у основных табличных частей документов — товары, услуги — есть пара команд для копирования строк между документами. Ищите их в меню Ещё над табличной частью или на её командной панели.

Порядок такой:

  1. Откройте документ-источник, выделите нужные строки (Ctrl или Shift + щелчок).
  2. Выполните команду копирования строк. Строки запоминаются программой.
  3. Откройте документ-приёмник и встаньте в ту же табличную часть.
  4. Выполните команду вставки строк. Программа добавит строки в конец таблицы.
  5. Проверьте цены и суммы: если в документе-приёмнике другой тип цен или ставка НДС, конфигурация может пересчитать значения.

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

Через Excel или табличный документ

Выделенные строки любой таблицы 1С копируются в буфер обмена клавишами Ctrl+C. При вставке в Excel или Google Таблицы колонки разложатся по ячейкам — разделитель табуляции платформа ставит сама.

Обратный путь сложнее. Вставка Ctrl+V в табличную часть 1С не создаёт новые строки: текст попадёт в одну текущую ячейку. Чтобы загрузить строки из Excel в документ, нужна команда загрузки самой конфигурации. В БП 3.0 и УТ 11 она есть у табличных частей товаров и услуг (команда Загрузить или Загрузить из файла). Форма загрузки позволяет вставить таблицу прямо из буфера обмена и сопоставить колонки с реквизитами.

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

Откуда и куда вам нужно скопировать строки?

Групповое заполнение скопированных строк

Скопировали 20 строк — и теперь во всех надо сменить склад, счёт учёта или ставку НДС. Править каждую строку не обязательно.

Что даёт платформа и типовые конфигурации:

  • 📌 Значение в шапке документа. Во многих документах склад, тип цен, ставка НДС задаются в шапке или в форме «Цены и валюта». Меняете там — программа предлагает перезаполнить строки табличной части.
  • 📌 Команды заполнения табличной части. У части документов есть кнопка Заполнить с вариантами: по остаткам, по основанию, по заказу. Это часто быстрее любого копирования.
  • 📌 Групповое изменение реквизитов. В БП 3.0 обработка находится в разделе Администрирование → Обслуживание. Она меняет реквизиты сразу у многих элементов справочников и документов, в том числе значения в табличных частях.
  • 📌 Копирование значения ячейки. Выделите ячейку, Ctrl+C, перейдите на ту же колонку другой строки, войдите в редактирование (F2) и вставьте Ctrl+V. Для ссылочных полей — номенклатуры, склада — вставка текста сработает, если по нему однозначно находится элемент справочника.

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

Копирование строк в Конфигураторе

В режиме Конфигуратор «строки» бывают трёх видов, и копируются они по-разному.

Строки кода в модуле

Работают стандартные клавиши текстового редактора: Ctrl+C, Ctrl+X, Ctrl+V. Удалить текущую строку целиком — Ctrl+L. Закомментировать выделенные строки — Ctrl+/, снять комментарий — Ctrl+Shift+/.

Строки и области макета

В редакторе табличного документа (макеты печатных форм) выделите строки по их номерам слева и скопируйте Ctrl+C. Чтобы вставить скопированные строки, выделите номер строки, перед которой нужна вставка, и выполните вставку. После вставки проверьте именованные области в палитре свойств: на них ссылается код формирования печатной формы.

Объекты и реквизиты метаданных

В дереве конфигурации F9 создаёт копию выделенного объекта: справочника, документа, реквизита табличной части. Копия получает имя с цифрой на конце — переименуйте её сразу.

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

Сами данные — строки документов — в Конфигураторе не копируются. Конфигуратор работает со структурой базы. Для данных нужен режим 1С:Предприятие.

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

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

Копирование выделенных строк в форме документа

Команда формы, которая размножает выделенные пользователем строки табличной части «Товары»:

&НаКлиенте
Процедура СкопироватьВыделенныеСтроки(Команда)
	
	Выделенные = Элементы.Товары.ВыделенныеСтроки;
	Если Выделенные.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Для Каждого Идентификатор Из Выделенные Цикл
		Исходная = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
		Если Исходная = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		НоваяСтрока = Объект.Товары.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Исходная, , "НомерСтроки");
	КонецЦикла;
	
	Модифицированность = Истина;
	
КонецПроцедуры

ВыделенныеСтроки возвращает массив идентификаторов, а не сами строки. Массив фиксируется до начала цикла, поэтому добавление новых строк не сбивает перебор.

Перенос строк из одного документа в другой

Серверная процедура для внешней обработки: берёт все товары документа-источника и дописывает их в документ-приёмник.

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

Документ записывается без проведения. Проведите его вручную после проверки.

Что учесть в коде

  • 🔑 Служебные колонки. Если в табличной части есть ключ связи с другими таблицами (серии, коды маркировки), исключайте его четвёртым параметром. Иначе копия «привяжется» к чужим подчинённым строкам.
  • 🔄 Пересчёт. Программное добавление строк не вызывает обработчики ПриИзменении в форме. Суммы, НДС и скидки переносятся как есть. Если цены в приёмнике другие — пересчитайте их явно.
  • 📦 Таблица целиком. Для полной замены строк удобны Выгрузить() и Загрузить(): Приемник.Товары.Загрузить(СсылкаИсточник.Товары.Выгрузить()). Колонки совпадут, если табличные части одинаковы по составу.
  • 🧪 Проверка. Запускайте обработку сначала на копии базы.

Почему строки копируются не так, как ожидалось

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

Ещё одна ловушка — скопированный документ в журнале. Копия по F9 получает текущую дату, а не дату оригинала. Если вы копируете прошлый документ для другого периода, сразу смените дату, иначе цены и курсы подставятся на сегодня.

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

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