Копирование строк и товарных позиций в документах 1С 8.3
Содержание
Чтобы скопировать одну позицию в табличной части документа 1С, поставьте курсор на строку и нажмите F9 — появится дубль, в котором остаётся поменять количество или цену. Несколько строк выделяют мышью с Ctrl или Shift и копируют тем же F9 либо через буфер: Ctrl+C, затем Ctrl+V в табличную часть такой же структуры.
Если позиции нужно перенести из другого документа, работают кнопки Заполнить и Подбор или ввод документа на основании. Для переноса между базами используют обмен данными, а для разовой массовой задачи — несколько строк кода на встроенном языке. Ниже — все способы скопировать позиции в 1С 8.3 с точными действиями и разбором того, что при копировании переносится, а что придётся пересчитать.
F9. Для нескольких — выделите их с Ctrl и нажмите F9.на основании или нажмите Заполнить / Подбор. Структура полей совпадёт автоматически.Выгрузить() табличной части в одной базе, Загрузить() — в другой.Как продублировать строки табличной части
Табличная часть — это таблица с товарами или услугами внутри документа: «Товары» в реализации и поступлении, «Услуги», «Материалы». Копирование строк внутри неё — самая частая задача.
Одна строка. Встаньте на неё и нажмите F9 (команда «Скопировать»). Новая строка встанет ниже и повторит все заполненные поля: номенклатуру, количество, цену, ставку НДС, характеристику. Дальше меняете то, что отличается.
Несколько строк. Выделите их мышью, удерживая Ctrl (вразбивку) или Shift (подряд), и нажмите F9. Скопируются все выделенные строки.
Через буфер обмена. Выделите строки, нажмите Ctrl+C, поставьте курсор в нужное место и нажмите Ctrl+V. Так удобно переносить позиции между двумя открытыми документами одного вида — например, из одной реализации в другую. Главное условие: табличные части должны иметь одинаковый состав колонок, иначе часть значений не подставится.
Новую пустую строку добавляют клавишей Ins или кнопкой Добавить на командной панели таблицы. Лишние строки убирают клавишей Del (строка помечается на удаление или удаляется сразу — зависит от настройки формы). Порядок строк меняют стрелками вверх/вниз на командной панели таблицы или сочетанием Ctrl+Shift+↑/↓. Эти же команды собраны в меню Еще над табличной частью, если клавиши под рукой вспоминать неудобно.
Если нужно размножить одну позицию на десяток строк с разными характеристиками или сериями, скопируйте её F9 нужное число раз, а затем правьте только отличающееся поле. Это быстрее, чем добавлять каждую строку заново через Подбор.
Как перенести позиции из другого документа
Когда список товаров уже есть в другом документе, его не набивают заново.
Ввод на основании. Откройте документ-источник, нажмите Создать на основании и выберите нужный вид документа. 1С создаст новый документ и перенесёт в него товарные позиции источника. Классические связки: Счёт покупателю → Реализация, Поступление → Возврат поставщику, Заказ → Реализация. Переносятся номенклатура, количество и, как правило, цены.
Кнопка «Заполнить». В документах поступления и реализации есть команда Заполнить с вариантами — заполнить по другому документу, по остаткам, по поступлению. Набор вариантов зависит от конфигурации и вида документа.
Подбор. Команда Подбор открывает список номенклатуры, где позиции отмечают и переносят в документ пачкой. Подходит, когда готового документа-источника нет, а товары надо выбрать из справочника.
После переноса всегда проверяйте цены и склад. При вводе на основании цена подставляется из документа-источника, а не пересчитывается по текущему прайсу. Если источник старый, цены будут устаревшими.
Копирование позиций через буфер и выгрузку в список
Для работы с внешними данными есть два приёма.
Выгрузка в табличный документ. На командной панели табличной части или списка откройте меню Еще и выберите Вывести список. 1С соберёт позиции в табличный документ, который сохраняется в Excel через Файл → Сохранить как. Так удобно отдать перечень товаров коллеге или в другую программу.
Загрузка из файла. Часть документов умеет принимать позиции из внешней таблицы напрямую — например, у документа установки цен номенклатуры и у инвентаризации есть команда Загрузить из файла. Если у вашего документа такой кнопки нет, позиции загружают универсальной обработкой «Загрузка данных из табличного документа» (поставляется отдельно) или вставляют через буфер, предварительно приведя колонки Excel к структуре табличной части.
При вставке из Excel через Ctrl+V 1С сопоставляет колонки по порядку. Номенклатуру программа ищет по наименованию или артикулу — если точного совпадения в справочнике нет, строка останется незаполненной. Поэтому перед массовой вставкой убедитесь, что карточки номенклатуры в базе уже заведены.
Как скопировать позиции между базами
Если документы с позициями нужно перенести в другую информационную базу, построчное копирование не поможет — работают механизмы обмена.
Одинаковые конфигурации. Используйте обработку выгрузки и загрузки данных в формате XML. В базе-источнике отбираете документы (или справочники), выгружаете в файл, в базе-приёмнике загружаете его. Отбор задают по дате, организации или виду документа — выгрузить можно как один документ, так и партию за период. Переносится объект целиком — документ вместе со всей табличной частью и ссылками на номенклатуру. Вместе с документом подтягиваются и справочники, на которые он ссылается, поэтому незаполненных строк из-за отсутствующей номенклатуры не будет. Это главный способ «скопировать позиции» вместе с документами между копиями одной базы.
Разные конфигурации. Когда структуры баз отличаются (например, из управления торговлей в бухгалтерию), нужны правила обмена и механизм конвертации данных. Настройка сложнее: сопоставляются объекты и реквизиты источника и приёмника. Для типовых пар баз правила уже готовы в стандартной синхронизации — её включают в разделе Администрирование → Синхронизация данных.
Обмен переносит объекты целиком, а не отдельные строки. Скопировать «только три позиции из документа» через XML-выгрузку нельзя — выгрузится весь документ. Для выборочного переноса строк остаётся буфер обмена или код.
Копирование строк в коде встроенного языка 1С
Когда строк сотни или нужно своё правило отбора, задачу решают обработкой на встроенном языке 1С:Предприятия 8.3. Табличная часть умеет выгружать себя в таблицу значений и загружать обратно.
Скопировать всю табличную часть из одного документа в другой — одна строка:
НоваяРеализация.Товары.Загрузить(ДокументИсточник.Товары.Выгрузить());
Выгрузить() возвращает таблицу значений с колонками табличной части, Загрузить() заполняет ими приёмник. Колонки сопоставляются по именам, поэтому способ работает между документами с одинаковым составом реквизитов.
Если нужно скопировать не все строки, а по условию, перебирайте источник в цикле:
Для Каждого СтрокаИсточника Из ДокументИсточник.Товары Цикл
Если СтрокаИсточника.Количество = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НоваяРеализация.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсточника);
КонецЦикла;
НоваяРеализация.Записать();
Метод Добавить() создаёт пустую строку, а ЗаполнитьЗначенияСвойств(Приёмник, Источник) переносит значения всех реквизитов с совпадающими именами. Проверку Количество = 0 при желании заменяют своим условием — например, отбором по виду номенклатуры.
Чтобы документ не только сохранился, но и сформировал движения, записывайте его с проведением:
НоваяРеализация.Записать(РежимЗаписиДокумента.Проведение);
Если у документа-приёмника состав колонок отличается от источника, перебор в цикле всё равно сработает: ЗаполнитьЗначенияСвойств перенесёт только те реквизиты, имена которых совпали, а лишние пропустит. Поэтому код устойчивее к разнице структур, чем прямое Загрузить(Выгрузить()).
Отлаживать такой код удобно во внешней обработке с формой или в консоли запросов и кода. Сначала проверьте алгоритм на копии базы — массовая запись документов сразу формирует движения по регистрам, откатить их пачкой сложно.
Сравнение способов копирования позиций
У каждого способа своя область применения — буфер не заменит обмен, а код нужен не всегда. Таблица сводит, что именно переносит каждый метод и где его границы.
| Способ | Что переносит | Ограничение |
|---|---|---|
F9 в табличной части | Выделенные строки с их полями | Только внутри одного документа |
Буфер Ctrl+C / Ctrl+V | Строки между документами | Нужна одинаковая структура колонок |
На основании / Заполнить | Всю табличную часть источника | Цены не пересчитываются по прайсу |
| Выгрузка-загрузка XML | Документ целиком со ссылками | Только весь объект, базы одинаковые |
Код Выгрузить() / Загрузить() | Строки по своему правилу | Нужен доступ к конфигуратору или обработке |
Правило простое: чем ближе источник и приёмник (одна таблица, один документ, одна база), тем проще способ. Перенос в другую базу или по сложному отбору сразу переводит задачу в обмен или код.
Что копируется при переносе, а что нужно пересчитать
Копирование переносит значения полей как есть, на момент копирования. Это экономит время, но создаёт типичную ошибку — человек копирует позиции и забывает, что часть данных устарела.
Переносится без изменений:
- 📦 номенклатура, количество, единица измерения — остаются теми же;
- 🏷 характеристика номенклатуры — если велась в источнике, копируется как значение колонки;
- 💲 цена, сумма, ставка и сумма НДС — копируются ровно те, что были в источнике.
Требует проверки после копирования:
- 💰 цены — не пересчитываются по текущему прайсу. Если источник старый, обновите цены кнопкой заполнения цен, через
Подборили сменой типа цен в шапке; - 🔢 серийные номера и конкретные серии — привязаны к движению своего документа, в скопированной строке их заполняют заново;
- 🏭 склад, договор, статья расходов — часть этих реквизитов хранится в шапке документа, а не в строке, и при копировании строк не переносится. Заполните шапку до проведения.
Когда копируете документ целиком клавишей F9 в журнале, новый документ получает свой номер и текущую дату, а движения по регистрам у него не сформированы, пока вы его не проведёте.
Типичные ошибки при копировании позиций
Разбор того, почему копирование идёт не так, как ожидалось.
F9 внутри одного документа или переносите через Заполнить.Провести.Частые вопросы
Можно ли скопировать позиции из Excel прямо в документ 1С?
Загрузить из файла (например, у установки цен и инвентаризации) либо через буфер обмена Ctrl+V, когда колонки Excel совпадают по порядку с табличной частью. Для документов без такой кнопки используют универсальную обработку загрузки из табличного документа.Переносятся ли цены при копировании строк?
Как скопировать сразу все товары из одного документа в другой?
на основании исходного или нажмите Заполнить и выберите заполнение по документу-источнику. Оба способа переносят всю табличную часть целиком.