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