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