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