Документы и Печать · 11 мин
Как скопировать табличную часть одного документа в другой в 1С
Способы скопировать табличную часть документа в 1С: штатные инструменты, ввод на основании, буфер обмена и программное копирование через код. Проверка результата и ошибки.
Копирование табличной части из одного документа в другой — типовая задача в 1С: перенести список товаров из заказа в реализацию, повторить состав прошлой накладной в новой, продублировать начисления за предыдущий период. В зависимости от ситуации задача решается штатными кнопками формы, механизмом ввода на основании, обработкой заполнения или программным кодом.
Универсального ответа «нажмите одну кнопку» нет: разные конфигурации (Управление торговлей, Бухгалтерия предприятия, ERP, Зарплата и управление персоналом) предлагают разные инструменты, а часть сценариев вообще доступна только через доработку. Ниже разобраны основные способы — от действий обычного пользователя до кода для разработчика, с проверкой результата и типичными ошибками.
Перед любыми массовыми операциями с документами убедитесь, что у вас есть актуальная резервная копия базы или хотя бы возможность отменить изменения. Ошибочное заполнение табличной части проведённого документа может повлиять на проводки, остатки на складах и взаиморасчёты.
Какие способы копирования существуют и как выбрать подходящий
Выбор способа зависит от трёх факторов: есть ли у вас доступ к конфигуратору, связаны ли документы логически (например, заказ и реализация) и насколько регулярна операция. Разовое копирование проще выполнить вручную, повторяющуюся операцию стоит автоматизировать.
Основные варианты: ввод на основании, штатные кнопки заполнения в форме, копирование строк через буфер обмена, программное копирование через встроенный язык и внешние обработки заполнения табличных частей. Каждый вариант имеет свои ограничения по правам и по составу переносимых данных.
Как выбрать способ
Ввод на основании — самый надёжный штатный способ
Механизм ввода на основании — стандартный способ переноса данных между связанными документами. Откройте документ-источник, нажмите «Создать на основании» и выберите нужный вид документа. Конфигурация заполнит новый документ, включая табличную часть, по заложенным в неё правилам.
Важно понимать: переносится не обязательно весь состав строк. Правила заполнения задаются разработчиком конфигурации — например, из заказа в реализацию могут попасть только неотгруженные остатки, а из счёта — только позиции с ненулевой суммой. Если результат не совпадает с ожиданием, это не ошибка копирования, а логика конкретной конфигурации.
Для документов одного вида (например, повторить прошлую реализацию) используйте копирование документа целиком: выделите документ в списке и нажмите F9 или кнопку «Скопировать». Новый документ получит ту же табличную часть, но текущую дату и новый номер.
Копирование строк через буфер обмена в форме документа
Когда нужно перенести строки в уже существующий документ другого вида, работает ручное копирование. Откройте оба документа, в документе-источнике выделите нужные строки табличной части (Shift или Ctrl для выборочного выделения), нажмите Ctrl+C, затем перейдите в табличную часть документа-приёмника и нажмите Ctrl+V.
Способ работает не во всех конфигурациях и не для всех сочетаний полей: если состав колонок табличных частей различается, часть данных может не перенестись или перенестись некорректно. В старых конфигурациях на обычных формах копирование строк через буфер часто недоступно — там помогает только ввод на основании или программный способ.
После вставки обязательно проверьте каждую строку: номенклатуру, количество, цены и счета учёта. Программа не всегда подставляет в новый документ цены и ставки НДС исходного документа — они могут пересчитаться по текущим настройкам.
- 1Откройте документ-источник и документ-приёмник в двух окнах
- 2В табличной части источника выделите нужные строки мышью с Shift или Ctrl
- 3Нажмите Ctrl+C или выберите «Копировать» в контекстном меню
- 4Поставьте курсор в табличную часть документа-приёмника и нажмите Ctrl+V
- 5Проверьте количество строк, суммы, ставки НДС и счета учёта
- 6Запишите документ и сверьте итоговые суммы с источником
Штатные кнопки заполнения и подбора в типовых конфигурациях
Во многих типовых конфигурациях табличную часть можно заполнить без прямого копирования. Кнопка «Заполнить» в документах часто содержит команды «Заполнить по заказу», «Заполнить по остаткам», «Добавить из документа» — они вытягивают состав строк из связанного документа по правилам конфигурации.
Кнопка «Подобрать» открывает форму подбора номенклатуры, где можно множественным выбором добавить позиции. Это не копирование в чистом виде, но для повторения типового состава (например, стандартного комплекта поставки) подбор с отбором по группе товаров работает быстрее ручного переноса.
В конфигурациях на управляемых формах также встречается команда «Скопировать строки» / «Вставить строки» в меню «Ещё» табличной части. Ищите её именно там, если сочетания клавиш не срабатывают.
Программное копирование табличной части через встроенный язык
Разработчику или продвинутому пользователю с доступом к конфигуратору доступен полный контроль над переносом. Базовый приём — выгрузить табличную часть источника в таблицу значений и загрузить её в приёмник:
НовыйДокумент.Товары.Загрузить(ДокументИсточник.Товары.Выгрузить());
Метод Выгрузить() возвращает таблицу значений с копией строк, Загрузить() очищает табличную часть приёмника и заполняет её переданными данными. Этот вариант корректно работает, когда состав колонок табличных частей совпадает. Если колонки различаются, перебирайте строки в цикле и заполняйте только нужные поля.
Для выборочного переноса используйте цикл с условием:
Для Каждого Строка Из ДокументИсточник.Товары Цикл
Если Строка.Количество > 0 Тогда
НоваяСтрока = НовыйДокумент.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
КонецЕсли;
КонецЦикла;
Функция ЗаполнитьЗначенияСвойств переносит только совпадающие по именам свойства, что защищает от ошибок при разном составе колонок. После загрузки вызовите пересчёт итогов, если он выполняется в коде конфигурации, и запишите документ в транзакции.
Внешние обработки заполнения табличных частей
Если операция регулярная, но дорабатывать конфигурацию нежелательно, используйте механизм внешних обработок заполнения табличных частей (в конфигурациях на БСП — «Дополнительные отчеты и обработки»). Обработка добавляет в меню «Заполнить» документа свою команду, не меняя конфигурацию и не нарушая поддержку обновлений.
В обработке описывается команда заполнения и код, который получает объект документа и заполняет его табличную часть по вашим правилам — например, копирует состав из выбранного пользователем документа-шаблона. Это компромисс между ручным копированием и полной доработкой.
Проверка результата и типичные ошибки
Любое копирование завершайте контролем: сравните количество строк и итоговые суммы источника и приёмника, проверьте ставки НДС, счета учёта, склады и подразделения. В документе-приёмнике часть реквизитов могла заполниться значениями по умолчанию, отличными от исходных.
Если документ проводится, дополнительно проверьте движения: сформируйте отчёт по проводкам или остаткам и убедитесь, что они соответствуют ожиданиям. Расхождения проще исправить сразу, чем искать их при закрытии периода.
Как проверить результат
Совпадает или расхождение объяснимо правилами конфигурации
Строки потеряны или задублированы без причины
Совпадают с источником или отличаются на осознанную величину
Суммы пересчитались непредсказуемо
Соответствуют документу-приёмнику
Остались реквизиты документа-источника
Проводки и остатки корректны
Отрицательные остатки или лишние проводки
Часто задаваемые вопросы
Можно ли скопировать табличную часть между документами разных видов без программирования?
Да, если конфигурация поддерживает ввод на основании для этой пары документов — это основной штатный способ. Дополнительно в ряде конфигураций работает копирование выделенных строк через Ctrl+C / Ctrl+V, но состав перенесённых колонок зависит от совпадения полей табличных частей.
Почему после вставки строк суммы не совпадают с документом-источником?
Документ-приёмник пересчитывает цены, скидки и НДС по своим текущим настройкам: типу цен, дате, соглашению с клиентом. Скопированы были только номенклатура и количество. Сравните цены построчно и при необходимости укажите их вручную или измените настройки ценообразования документа.
Чем отличается Загрузить() от перебора строк в цикле?
Загрузить() полностью очищает табличную часть и переносит все колонки — это быстро, но требует совпадения состава колонок. Цикл с Добавить() и ЗаполнитьЗначенияСвойств позволяет фильтровать строки, переносить только совпадающие поля и дополнять существующие строки, не удаляя их.
Можно ли скопировать табличную часть из помеченного на удаление документа?
Технически данные помеченного документа ещё существуют в базе, и программно строки можно прочитать. Но ввод на основании для помеченных документов обычно недоступен, а использовать такой источник рискованно: после удаления помеченных объектов данные исчезнут. Надёжнее снять пометку, скопировать и решить судьбу документа после.
Как повторять копирование регулярно без доработки конфигурации?
Используйте внешнюю обработку заполнения табличной части, подключённую через механизм дополнительных отчетов и обработок. Она добавит свою команду в меню «Заполнить» документа, не затрагивая типовую конфигурацию и не мешая её обновлению.
Почему сочетание Ctrl+C / Ctrl+V не копирует строки табличной части?
Не все формы и конфигурации поддерживают копирование строк через буфер обмена, особенно обычные формы в старых версиях. Проверьте меню «Ещё» табличной части — там могут быть команды «Скопировать строки» и «Вставить строки». Если их нет, используйте ввод на основании или программный способ.
Что важно запомнить
Для связанных документов используйте ввод на основании, для повторения документа того же вида — копирование через F9, для частичного переноса — буфер обмена. Регулярные операции автоматизируйте программно через Выгрузить()/Загрузить() или внешние обработки. Всегда проверяйте суммы, НДС и движения после копирования, а эксперименты с кодом проводите на копии базы.