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