К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как добавить документ в команду «Создать на основании» в 1С

Как добавить документ в команду «Создать на основании» в 1С: через конфигуратор, расширение и подсистему взаимосвязей. Пошаговая инструкция и типичные ошибки.

Команда «Создать на основании» в 1С позволяет быстро формировать связанные документы: из заказа клиента — реализацию, из реализации — счёт-фактуру и так далее. Когда нужного документа нет в списке, его требуется добавить настройкой в конфигураторе или через расширение.

Способ добавления зависит от конфигурации. В типовых решениях на платформе 8.3 цепочки ввода на основании настраиваются через состав команд в объекте конфигурации, а логика заполнения — в процедуре «ОбработкаЗаполнения» модуля объекта. В старых конфигурациях дополнительно используется критерий отбора «Структура подчинённости».

Ниже разобраны основные сценарии: добавление через конфигуратор, через расширение без изменения типовой конфигурации, настройка заполнения реквизитов и проверка результата. Отдельно описаны ошибки, из-за которых команда появляется, но документ создаётся пустым или с неверными данными.

Как устроен механизм ввода на основании

Механизм состоит из трёх частей. Первая — связь между объектами в конфигурации: у документа есть свойство «Вводится на основании», где перечислены документы-основания, и обратная настройка у документа-источника. Вторая — процедура «ОбработкаЗаполнения» в модуле объекта, которая получает данные основания и переносит их в новый документ. Третья — команда интерфейса, которая выводится в форме списка и форме документа в группе «Создать на основании».

Если связь настроена, а обработка заполнения пустая, документ создастся, но будет пустым — пользователю придётся заполнять всё вручную. Если обработка есть, а связь не настроена, команда просто не появится в интерфейсе. Поэтому обе части всегда проверяют вместе.

Добавление документа через конфигуратор

Этот способ подходит для собственных конфигураций или для конфигураций, снятых с поддержки. Для типовых решений на поддержке прямое изменение объектов нежелательно — используйте расширение, описанное в следующем разделе.

Порядок действий в конфигураторе
  1. 1
    Откройте конфигуратор и найдите документ, который должен создаваться (например, «СчетНаОплату») в ветке «Документы»
  2. 2
    Откройте его свойства и на закладке «Вводится на основании» отметьте документ-основание (например, «ЗаказКлиента»)
  3. 3
    Откройте модуль объекта документа и добавьте процедуру «ОбработкаЗаполнения» с переносом нужных реквизитов из параметра «ДанныеЗаполнения»
  4. 4
    Обновите конфигурацию базы данных (F7) и проверьте, что команда появилась в форме документа-основания
  5. 5
    Создайте тестовый документ на основании и проверьте заполнение реквизитов

Минимальный вариант процедуры заполнения выглядит так: проверяется тип параметра «ДанныеЗаполнения», затем значения реквизитов копируются напрямую или через запрос, если нужны данные табличной части основания. Для переноса табличных частей используют запрос к документу-основанию, а не обращение через точку, чтобы не тянуть в память лишние данные.

bsl
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
		Контрагент = ДанныеЗаполнения.Контрагент;
		Организация = ДанныеЗаполнения.Организация;
		ДокументОснование = ДанныеЗаполнения;
	КонецЕсли;
КонецПроцедуры

Добавление через расширение конфигурации

Для типовых конфигураций (1С:ERP, «Управление торговлей», «Комплексная автоматизация») правильный путь — расширение. Оно не нарушает поддержку и не слетает при обновлении. Порядок такой: создайте расширение, добавьте в него собственный документ или заимствуйте существующий, настройте связь ввода на основании и дополните обработчик заполнения через аннотацию «&После» или «&Вместо».

Если документ создаётся в расширении с нуля, связь настраивается так же, как в конфигураторе: в свойствах нового документа укажите основание. Если нужно добавить новое основание для типового документа, заимствуйте типовой документ в расширение и расширьте состав вводимых на основании объектов.

Обратите внимание: собственные объекты расширения не во всех версиях платформы могут участвовать в типовых критериях отбора и подсистемах взаимосвязей. Если команда не появляется, проверьте версию платформы и состав подсистемы «Взаимодействия» или «СтруктураПодчиненности».

Настройка заполнения реквизитов и табличных частей

Качество команды «Создать на основании» определяется тем, насколько полно заполняется новый документ. Минимум — шапка: организация, контрагент, договор, склад, валюта. Для торговых документов обычно требуется перенос табличной части «Товары» с количеством, ценами и ставками НДС.

Табличную часть заполняйте запросом к основанию: выберите нужные поля из табличной части документа-источника и загрузите результат в табличную часть нового документа методом «Загрузить». Если документов-оснований может быть несколько (например, одна реализация по нескольким заказам), логику усложняют: в типовых конфигурациях для этого используются специальные обработчики в общих модулях ввода на основании.

Не забывайте про реквизит «ДокументОснование» или его аналог. Он связывает документы и позволяет строить отчёты по цепочке, а также выводить связанные документы в форме. В типовых конфигурациях связь часто хранится в критерии отбора «СвязанныеДокументы» — проверьте, что новый документ включён в его состав.

Удобно проверять заполнение в отладчике: поставьте точку останова в «ОбработкаЗаполнения», создайте документ из формы основания и посмотрите, что приходит в параметре «ДанныеЗаполнения». Иногда туда передаётся не ссылка, а структура — тогда проверку типа нужно писать иначе.
ПЗ
Практическое замечание

Где появляется команда и как проверить результат

После настройки команда отображается в форме списка документа-основания (кнопка «Создать на основании» на командной панели) и в форме самого документа. В управляемых формах состав команд можно дополнительно настроить в редакторе формы: команда «ВвестиНаОсновании» добавляется в группу кнопок вручную, если автоматический вывод отключён.

Контрольные точки

Как проверить результат

Команда в интерфейсе
Норма

«Создать на основании» показывает новый документ в форме основания

Тревожный признак

Команды нет: не настроена связь в конфигураторе или нет прав на создание документа

Заполнение шапки
Норма

Контрагент, организация, договор переносятся из основания

Тревожный признак

Поля пустые: процедура «ОбработкаЗаполнения» отсутствует или тип данных не распознан

Табличная часть
Норма

Товары и суммы совпадают с основанием

Тревожный признак

Таблица пустая или с неверными суммами: ошибка в запросе заполнения

Связь документов
Норма

Основание видно в форме нового документа и в структуре подчинённости

Тревожный признак

Связи нет: реквизит основания не заполнен или документ не включён в критерий отбора

Типичные ошибки и ограничения

Самая частая проблема — команда появилась, но документ создаётся пустым. Причина почти всегда в том, что в «ОбработкаЗаполнения» не прописана ветка для нужного типа основания, либо процедура вообще не добавлена. Вторая по частоте ошибка — проверка типа «ДанныеЗаполнения» не совпадает с реальным типом: из формы списка может передаваться массив или структура, а не ссылка.

Ещё одна группа проблем связана с правами: пользователь видит основание, но не может создать документ, потому что у его роли нет права «Добавление» на новый вид документа. В этом случае команда либо скрыта, либо выдаёт ошибку нарушения прав доступа.

Типичные ошибки
01
Настроена связь, но не написана «ОбработкаЗаполнения» — документ создаётся пустым
02
Проверка типа «ДанныеЗаполнения» не учитывает структуру или массив — заполнение молча не срабатывает
03
Документ не добавлен в критерий отбора связанных документов — цепочка взаимосвязей не отображается
04
Изменение типовой конфигурации вместо расширения — настройка теряется при обновлении
05
Забыто право на добавление документа — пользователи не видят команду или получают ошибку доступа

Альтернативы: когда ввод на основании не нужен

Маршрут решения

Как выбрать действие

Нужен разовый перенос данных без связи документовИспользуйте обработку копирования или обмен данными вместо ввода на основании
Документ-основание типовой, новый документ тоже типовой, но связи нетПроверьте настройки подсистемы взаимосвязей в разделе администрирования — возможно, команду можно включить без доработки
Требуется создавать один документ из нескольких основанийИспользуйте обработку подбора оснований или типовые механизмы группового ввода на основании
Конфигурация типовая на поддержкеДелайте доработку только через расширение конфигурации

Иногда проще обойтись без доработки. Если нужно лишь скопировать данные, используйте стандартное копирование документа (F9). Если связь между типовыми документами должна существовать по логике конфигурации, но команды нет — проверьте функциональные опции: часть цепочек отключается настройками в разделе администрирования.

Итог

Что важно запомнить

Добавление документа в «Создать на основании» — это всегда три шага: связь объектов в конфигурации, процедура «ОбработкаЗаполнения» с переносом реквизитов и проверка прав доступа. Для типовых конфигураций используйте расширение, после настройки обязательно проверьте заполнение шапки, табличной части и отображение связи документов.

Частые вопросы

Почему команда «Создать на основании» не появляется после настройки?

Проверьте три вещи: обновлена ли конфигурация базы данных после изменения, есть ли у пользователя право на добавление нового документа и не отключён ли автоматический вывод команды в форме основания. Также убедитесь, что связь указана именно у создаваемого документа в свойстве «Вводится на основании».

Документ создаётся, но все поля пустые. В чём причина?

Почти всегда причина в отсутствующей или неработающей процедуре «ОбработкаЗаполнения» в модуле объекта нового документа. Проверьте, что тип параметра «ДанныеЗаполнения» распознаётся корректно: из разных мест интерфейса может приходить ссылка, структура или массив.

Можно ли добавить ввод на основании в типовой 1С без снятия с поддержки?

Да, через расширение конфигурации. Создайте расширение, добавьте или заимствуйте документ, настройте связь ввода на основании и дополните обработчик заполнения аннотациями «&После» или «&Вместо». Типовая конфигурация при этом не изменяется и обновляется штатно.

Как сделать, чтобы один документ создавался из нескольких оснований сразу?

Стандартная команда работает с одним выделенным документом. Для объединения нескольких оснований в типовых конфигурациях используются специальные обработки (например, оформление накладных по распоряжениям). В собственной конфигурации потребуется отдельная команда с формой подбора оснований и заполнением по выбранному списку.

Нужно ли добавлять новый документ в критерий отбора связанных документов?

Да, если хотите видеть цепочку документов в форме и в отчётах по взаимосвязям. Без включения в критерий отбора документ создастся и заполнится, но связь между ним и основанием в интерфейсе отображаться не будет.

Почему после обновления конфигурации команда пропала?

Если изменения вносились напрямую в типовые объекты, обновление могло вернуть их к исходному состоянию. Восстановите настройку и перенесите её в расширение конфигурации — тогда доработка сохранится при последующих обновлениях.