К статье
Практический материал

Документы и Печать · 11 мин

Как скопировать табличную часть документа в 1С

Способы скопировать табличную часть документа в 1С: копирование документа, заполнение на основании, подбор, обработки и программные методы с примерами кода.

Табличная часть — это список строк внутри документа 1С: товары в реализации, услуги в акте, сотрудники в ведомости. Задача скопировать её возникает постоянно: нужно повторить отгрузку постоянному клиенту, создать похожий заказ с небольшими изменениями, перенести состав комплекта из одного документа в другой. Ручной ввод десятков строк — потеря времени и источник ошибок в количестве, ценах и номенклатуре.

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

Ниже разобраны практические варианты для типовых конфигураций (Управление торговлей, ERP, Бухгалтерия, Комплексная автоматизация) и универсальные программные методы, которые работают в любой конфигурации на управляемых и обычных формах.

Скопировать документ целиком — самый простой способ

Если нужен такой же документ с той же табличной частью, не копируйте строки по отдельности — скопируйте документ целиком. Откройте список документов, выделите нужный и нажмите F9, либо кнопку «Скопировать» на панели списка, либо пункт «Скопировать» в контекстном меню по правой кнопке мыши. Создастся новый документ с текущей датой, в котором будут все реквизиты и все табличные части исходника.

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

Ограничение способа очевидно: он работает только внутри одного вида документов. Скопировать таким образом строки из «Заказа клиента» в «Реализацию товаров и услуг» не получится — для этого есть ввод на основании и другие приёмы ниже.

Ввод на основании — перенос строк между разными документами

Когда табличную часть нужно перенести в документ другого вида, штатный механизм — ввод на основании. Откройте исходный документ и нажмите кнопку «Создать на основании» (в некоторых конфигурациях — «Ввести на основании»), выберите нужный вид документа. 1С создаст новый документ и заполнит его по правилам, заложенным в конфигурацию: из заказа — реализацию, из реализации — счёт-фактуру или возврат, из поступления — счёт на оплату поставщику.

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

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

Подбор и заполнение табличной части вручную с ускорением

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

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

Внешние обработки для переноса табличных частей

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

Такие обработки обычно работают по схеме: выбираете документ-источник, документ-приёмник, отмечаете, какие строки и колонки переносить, и нажимаете «Выполнить». Перед использованием сторонней обработки проверьте её на копии базы: ошибка в коде обработки может записать в документ некорректные данные — пустую номенклатуру, нулевые цены, битые ссылки.

Доступ к подключению внешних обработок есть не у всех пользователей — он регулируется правами и профилями групп доступа. Если раздел недоступен, обратитесь к администратору 1С или специалисту, сопровождающему конфигурацию.

Порядок действий при копировании через документ
  1. 1
    Откройте список документов нужного вида
  2. 2
    Выделите документ-источник и нажмите F9 или «Скопировать»
  3. 3
    В новом документе проверьте дату, договор, склад и цены
  4. 4
    Исправьте строки, которые должны отличаться от исходника
  5. 5
    Проведите документ и сверьте итоговые суммы с исходным

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

Для разработчиков и при доработке конфигурации табличную часть копируют кодом. Базовый приём — методы Выгрузить() и Загрузить(): табличная часть выгружается в таблицу значений и загружается в другой документ, если состав колонок совпадает. Это работает и между разными видами документов, если имена реквизитов табличных частей одинаковые.

// Копирование табличной части между документами одного вида

НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

НовыйДок.Заполнить(ТекущаяДатаСеанса());

НовыйДок.Контрагент = ИсходныйДокумент.Контрагент;

НовыйДок.Товары.Загрузить(ИсходныйДокумент.Товары.Выгрузить());

НовыйДок.Записать();

Если состав колонок различается, перебирайте строки в цикле и переносите реквизиты поимённо. Добавляйте строку через Добавить(), заполняйте нужные поля, а после цикла пересчитывайте итоги, если они хранятся в реквизитах документа. При переносе между разными видами документов учитывайте различия в типах цен, ставках НДС и единицах измерения — прямое копирование суммы без пересчёта может дать неверный результат.

// Построчный перенос с контролем полей

Для Каждого СтрокаИсточник Из ИсходныйДокумент.Товары Цикл

НоваяСтрока = НовыйДок.Товары.Добавить();

НоваяСтрока.Номенклатура = СтрокаИсточник.Номенклатура;

НоваяСтрока.Количество = СтрокаИсточник.Количество;

НоваяСтрока.Цена = СтрокаИсточник.Цена;

НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;

КонецЦикла;

В управляемых формах помните про разделение на клиент и сервер: обращение к объектам документов (ДокументОбъект) возможно только в серверном контексте. В модуле формы используйте директиву &НаСервере или вызывайте серверные процедуры общего модуля.

bsl
НовыйДок.Товары.Загрузить(ИсходныйДокумент.Товары.Выгрузить());

Проверка результата и типичные ошибки

После любого копирования сверьте три вещи: количество строк, итоговую сумму документа и состав колонок (цены, ставки НДС, склады в строках). Расхождение числа строк обычно означает, что часть данных не перенеслась — например, из-за отбора по остаткам при вводе на основании. Расхождение суммы при том же составе строк указывает на устаревшие цены или пересчёт по другому курсу.

Частые ошибки при копировании табличных частей:

  • Проведение скопированного документа без смены даты — документ попадает не в тот период и искажает отчётность.
  • Старые цены и скидки в скопированных строках — итоговая сумма не соответствует актуальному прайсу.
  • Перенос строк в документ с другой организацией или складом — движения по регистрам формируются некорректно.
  • Программная загрузка табличной части без проверки типов колонок — ошибка исполнения или пустые значения в строках.
  • Копирование строк с характеристиками и сериями в документ, где они не используются, — лишние данные или ошибки проведения.
Типичные ошибки
01
Копирование документа и проведение без проверки договора — взаиморасчёты уходят не по тому договору
02
Перенос строк между базами через текстовый файл без контроля единиц измерения — количество искажается
03
Программный Загрузить() в табличную часть с другим составом колонок — ошибка выполнения или потеря части данных
Контрольные точки

Как проверить результат

Число строк в новом и исходном документе
Норма

Совпадает или отличается объяснимо (остатки, отбор)

Тревожный признак

Строки пропали без причины

Итоговая сумма документа
Норма

Совпадает с ожидаемой с учётом актуальных цен

Тревожный признак

Сумма не сходится при том же составе строк

Дата, организация, договор, склад
Норма

Соответствуют новой операции

Тревожный признак

Остались от исходного документа

FAQ

Можно ли скопировать только часть строк табличной части?

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

Как перенести табличную часть в документ другой базы 1С?

Для разовых случаев подойдёт выгрузка документа через «Выгрузить в файл» в корреспондирующем формате или обработка переноса через табличный документ. Для регулярного обмена настраивают типовую синхронизацию данных или план обмена — тогда документы с табличными частями переносятся автоматически по правилам конвертации.

Почему при копировании документа не перенеслась одна из табличных частей?

Такое бывает, если табличная часть заполняется не в документе, а в связанном объекте или очищается обработчиком заполнения. Проверьте, присутствует ли табличная часть в исходном документе и не очищается ли она при копировании настройками конфигурации. В доработанных конфигурациях причину ищут в процедуре «ПриКопировании» модуля объекта.

Как скопировать табличную часть, если нет прав на внешние обработки и конфигуратор?

Используйте только штатные средства: копирование документа целиком (F9), ввод на основании, подбор и команды заполнения табличной части. Этого набора достаточно для большинства повседневных задач без каких-либо дополнительных прав.

Переносятся ли при копировании скидки, серии и характеристики в строках?

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

Можно ли скопировать строки табличной части через буфер обмена?

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

Итог

Что важно запомнить

Для одного вида документов копируйте документ целиком через F9 — табличная часть перенесётся полностью. Для разных видов используйте ввод на основании или программный перенос через Выгрузить()/Загрузить(). Всегда проверяйте дату, договор, цены и итоговую сумму перед проведением скопированного документа.