Документы и Печать · 9 мин
Где в 1С хранится документ-основание и как его найти
Где в 1С хранится документ-основание: в табличной части, реквизите шапки или регистре. Как найти основание в типовых конфигурациях и через запрос.
Документ-основание в 1С — это ссылка на первичный документ, на базе которого создан текущий. Например, реализация товаров вводится на основании заказа покупателя, а счёт-фактура — на основании реализации. Проблема в том, что единого универсального места хранения этой ссылки нет: в разных конфигурациях и даже в разных документах одной конфигурации основание хранится по-разному.
Чаще всего ссылка на основание лежит в реквизите шапки документа, в табличной части «ДокументыОснования» (или с похожим названием) либо вычисляется через критерий отбора и регистры. Понимание этих вариантов позволяет быстро находить связанные документы, строить отчёты по цепочкам и писать корректные запросы.
Как устроено хранение основания в типовых конфигурациях
В конфигурациях на базе БСП (Библиотека стандартных подсистем) — «Управление торговлей», «ERP», «Комплексная автоматизация», «Бухгалтерия предприятия» — действует механизм ввода на основании. Он предполагает, что у документа может быть несколько оснований, поэтому ссылка хранится не в одном реквизите, а в табличной части.
Типовое имя такой табличной части — ДокументыОснования или Основания. В ней каждая строка содержит реквизит ДокументОснование с составным типом: туда можно записать ссылку на любой документ, разрешённый в настройках ввода на основании. В старых или узкоспециализированных документах встречается одиночный реквизит шапки с именем ДокументОснование, Основание или ЗаказПокупателя.
Три типовых способа хранения ссылки на основание
Чтобы понять, где искать основание у конкретного документа, полезно знать три основных варианта реализации. Они различаются структурой метаданных и способом обращения из запросов и кода.
| Способ хранения | Где искать | Особенности |
|---|---|---|
| Реквизит шапки | Реквизит «ДокументОснование» / «Основание» | Только одно основание; простые запросы |
| Табличная часть | ТЧ «ДокументыОснования», реквизит «ДокументОснование» | Несколько оснований; стандарт БСП |
| Критерий отбора / регистр | Критерий отбора «СвязанныеДокументы», регистры сведений | Связь вычисляется, а не хранится напрямую |
Проверить, какой вариант используется, можно через конфигуратор: откройте объект «Документ» нужного вида и посмотрите список реквизитов и табличных частей. Если есть табличная часть с реквизитом составного типа, содержащего ссылки на другие документы, — это она и есть.
Как найти документ-основание в пользовательском режиме
В режиме «1С:Предприятие» искать основание проще всего через стандартные команды интерфейса. В форме документа обычно доступна кнопка «Ещё» → «Связанные документы» (в некоторых конфигурациях — «Структура подчинённости»). Откроется дерево, где видно и основания, и подчинённые документы.
Второй способ — поле «Основание» прямо в форме документа. В бухгалтерских документах (например, «Счёт-фактура выданный») оно выведено на форму и доступно для просмотра и перехода. Если поля нет на форме, это не значит, что его нет в данных — оно может быть скрыто настройками формы.
- 1Откройте документ, для которого нужно найти основание
- 2Нажмите «Ещё» → «Связанные документы» или «Структура подчинённости»
- 3В дереве найдите документы уровнем выше — это основания
- 4Двойной щелчок откроет документ-основание для просмотра
Как получить основание запросом и в коде
В запросах обращение зависит от способа хранения. Для реквизита шапки всё просто: Док.ДокументОснование. Для табличной части нужно обращаться к ней как к отдельной таблице: Документ.РеализацияТоваровУслуг.ДокументыОснования, где поле связи — Ссылка, а основание — ДокументОснование.
В коде на встроенном языке для объектов с табличной частью основание получают перебором строк: Объект.ДокументыОснования[0].ДокументОснование. Для универсального доступа в БСП есть функции работы со связанными документами, которые учитывают и критерии отбора.
ВЫБРАТЬ
Основания.Ссылка КАК Документ,
Основания.ДокументОснование КАК Основание
ИЗ
Документ.РеализацияТоваровУслуг.ДокументыОснования КАК Основания
ГДЕ
Основания.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериодаЕсли конфигурация нестандартная, сначала выясните имя табличной части через конфигуратор или через универсальный отчёт по структуре метаданных — имена вроде «Основания», «ДокументыОснование», «ДокументыОснования» встречаются в разных вариациях.
Почему основание может быть пустым и что с этим делать
Пустое основание — частая ситуация, и не всегда это ошибка. Документ мог быть создан вручную, а не вводом на основании; загружен из обмена, где связь не передаётся; или основание было удалено, а ссылка очистилась. В старых базах встречаются «битые» ссылки — когда документ-основание удалён физически, а ссылка осталась в виде неразрешимого объекта.
Для поиска таких проблем используйте запрос с проверкой Основание ЕСТЬ NULL после левого соединения или отбор по пустому значению. Битые ссылки выявляются штатной обработкой «Поиск и удаление дублей» не всегда — надёжнее тестирование и исправление информационной базы с флагом проверки ссылочной целостности.
Типичные ошибки при работе с основаниями
Отдельная ошибка — путать «документ-основание» и «документ расчётов» или «заказ» в реквизитах. Например, в реализации может быть и заказ покупателя (как основание), и отдельный реквизит «Сделка» или «Заказ» для расчётов. Это разные связи с разной логикой проведения.
Как проверить результат и выбрать правильный подход
Как проверить результат
Для документов, введённых на основании, поле заполнено ссылкой
Все строки пустые — вероятно, неверное имя ТЧ или реквизита
Дерево показывает основание и подчинённые документы
Дерево пустое у документа, который точно введён на основании
Открывается форма реального документа
Ошибка «Объект не найден» — битая ссылка
Как выбрать действие
Итоговая логика проста: сначала смотрите структуру подчинённости в интерфейсе, затем — при необходимости автоматизации — изучаете метаданные и строите запрос под конкретный способ хранения. Универсального «поля основания» на всю конфигурацию не существует, и любая доработка должна это учитывать.
Что важно запомнить
Документ-основание в 1С хранится в реквизите шапки, табличной части «ДокументыОснования» или определяется критерием отбора. В пользовательском режиме связь видна через «Связанные документы», в запросах — через обращение к табличной части. Перед массовыми изменениями связей делайте резервную копию.
Частые вопросы
Где хранится основание у счёта-фактуры в 1С:Бухгалтерии?
У счёта-фактуры выданного ссылка на основание хранится в реквизите «ДокументОснование». В форме документа оно отображается как поле «Основание», доступно для перехода и заполняется автоматически при вводе на основании реализации или поступления.
Может ли у одного документа быть несколько оснований?
Да. В конфигурациях на базе БСП для этого и используется табличная часть «ДокументыОснования»: например, одна реализация может отгружать сразу несколько заказов покупателя. Каждое основание занимает отдельную строку табличной части.
Почему в запросе поле «ДокументОснование» пустое, хотя связь есть?
Скорее всего, основание хранится не в реквизите шапки, а в табличной части, и запрос обращается не туда. Проверьте в конфигураторе структуру документа и перепишите запрос с обращением к табличной части через «Документ.ВидДокумента.ИмяТабличнойЧасти».
Что делать, если при открытии основания появляется «Объект не найден»?
Это битая ссылка: документ-основание был удалён физически, а ссылка осталась. Выполните тестирование и исправление информационной базы с проверкой ссылочной целостности, предварительно сделав резервную копию. После этого решите, восстанавливать ли основание или очищать ссылку.
Передаётся ли документ-основание при обмене между базами?
Зависит от настройки правил обмена. В типовых синхронизациях основания обычно передаются, если сам документ-основание входит в состав выгрузки. Если основание не выгружается (например, отфильтровано по дате или организации), в базе-приёмнике ссылка будет пустой или битой.
Как программно создать документ на основании другого?
Используйте метод ввода на основании: создайте объект документа, вызовите его метод «Заполнить» с параметром-ссылкой на основание, затем запишите. Это задействует типовую логику переноса данных, включая заполнение табличной части оснований, а не только простановку ссылки.