Копирование строк табличной части в 1С 8.3: от клавиши F9 до обработки на встроенном языке
Содержание
Скопировать строку в табличной части 1С проще всего клавишей F9: встаньте на нужную строку и нажмите её — ниже появится копия со всеми заполненными колонками. Та же команда есть в меню Ещё → Скопировать над таблицей и в контекстном меню по правой кнопке мыши.
Типичная ситуация: в счёте 40 позиций, а покупатель просит выставить ещё один на ту же номенклатуру, но с другим количеством. Перебивать строки вручную долго, а скопировать строчки в 1С можно на любом уровне: одну строку в документе, десяток строк в другой документ, строки макета в Конфигураторе и сотни строк кодом. Всё описано для платформы 8.3 с интерфейсом «Такси», команды платформенные и работают в любой конфигурации — БП 3.0, УТ 11, ЗУП 3.1, УНФ.
Быстрое копирование строк в документе: клавиши и команды
Платформа даёт одинаковый набор действий для любой табличной части управляемой формы — товары в реализации, сотрудники в начислении зарплаты, услуги в акте.
| Действие | Клавиши | Где найти мышью |
|---|---|---|
| Скопировать текущую строку | F9 | Ещё → Скопировать, правая кнопка мыши |
| Добавить пустую строку | Ins | кнопка Добавить |
| Удалить строку | Del | Ещё → Удалить |
| Переместить строку вверх / вниз | Ctrl+Shift+↑ / Ctrl+Shift+↓ | стрелки на командной панели таблицы |
| Начать редактирование ячейки | F2 или Enter | двойной щелчок |
| Закончить редактирование строки | Enter, Tab до конца строки | щелчок по другой строке |
Как работает F9 по шагам:
- Щёлкните по строке, которую хотите повторить. Достаточно выделить любую ячейку.
- Нажмите
F9. Копия встанет в конец таблицы или сразу под текущей — зависит от настроек формы. - Копия откроется в режиме редактирования. Поправьте количество, цену или склад.
- Нажмите
Enter— сработают обработчики формы, и сумма с НДС пересчитается.
F9 работает не только в табличной части. В любом списке — справочнике «Номенклатура», журнале документов — та же клавиша создаёт копию элемента или документа. Новый документ получает свой номер и не проводится, пока вы его не проведёте.
Копия строки получает новый номер строки. Остальные значения переносятся как есть: номенклатура, количество, цена, ставка НДС, счета учёта. Если цена в исходной строке была введена вручную, она «переедет» в копию — проверьте её, если документ на другую дату.
Как выделить и скопировать несколько строк сразу
F9 копирует одну, текущую строку. Чтобы работать с группой строк, их сначала выделяют.
Способы выделения в таблице 1С:
- 🖱️
Ctrl+ щелчок — добавить строку к выделению или убрать её; - ⬇️
Shift+ щелчок илиShift+↓— выделить диапазон подряд; - 📋
Ctrl+A— выделить все строки таблицы.
Выделенные строки можно разом удалить клавишей Del. А вот размножить их одной командой платформа не даёт: стандартная команда «Скопировать» делает копию только текущей строки. Для группы строк есть три выхода:
- Нажать F9 по очереди на каждой строке — терпимо, если строк пять-шесть.
- Скопировать документ целиком через F9 в журнале и удалить лишнее в копии — быстрее, если нужно больше половины строк.
- Использовать команды копирования и вставки строк самой конфигурации (следующий раздел) или обработку на встроенном языке.
Если в документе F9 и кнопка Добавить неактивны, документ открыт только для просмотра. Обычно причина одна из двух: у пользователя нет прав на изменение или дата документа попадает под дату запрета изменения данных.
Перенос строк между документами через буфер обмена
Это самый частый запрос: строки из одного документа нужны в другом. Например, товары из заказа поставщику — в поступление, или список сотрудников из одной ведомости — в другую.
Команды «Скопировать строки» и «Вставить строки»
В современных релизах типовых конфигураций (БП 3.0, УТ 11, КА 2, ERP) у основных табличных частей документов — товары, услуги — есть пара команд для копирования строк между документами. Ищите их в меню Ещё над табличной частью или на её командной панели.
Порядок такой:
- Откройте документ-источник, выделите нужные строки (
CtrlилиShift+ щелчок). - Выполните команду копирования строк. Строки запоминаются программой.
- Откройте документ-приёмник и встаньте в ту же табличную часть.
- Выполните команду вставки строк. Программа добавит строки в конец таблицы.
- Проверьте цены и суммы: если в документе-приёмнике другой тип цен или ставка НДС, конфигурация может пересчитать значения.
Если таких команд у вас нет — релиз старый или конфигурация доработана. Тогда используйте способ через табличный документ.
Через 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?
Как скопировать строки из списка документов, а не из табличной части?
Ещё → Вывести список.