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

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

Как связать документ и справочник в 1С

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

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

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

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

Какой тип связи выбрать: одиночный реквизит или табличная часть

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

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

Отдельный случай — связь «многие ко многим», когда одному документу соответствует много элементов справочника, а элементу справочника — много документов. Классическое решение в 1С — табличная часть документа либо регистр сведений с измерениями «Документ» и «ЭлементСправочника», если связь должна существовать независимо от проведения.

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

Как выбрать структуру связи

К документу относится одно значение справочника (контрагент, склад, ответственный)Создайте одиночный реквизит в шапке документа
Документ содержит список позиций из справочника (товары, услуги, сотрудники)Используйте табличную часть с реквизитом ссылочного типа
Связь нужна независимо от проведения и её анализируют отдельноРассмотрите регистр сведений с двумя измерениями

Создание реквизита со ссылкой на справочник

Откройте конфигуратор, найдите нужный документ в дереве конфигурации и перейдите на закладку «Данные». Добавьте новый реквизит, задайте имя (например, «Контрагент») и в свойстве «Тип» выберите «СправочникСсылка.Контрагенты». Если реквизит может ссылаться на разные справочники, задайте составной тип, но используйте его осознанно: составные типы замедляют запросы и усложняют отчёты.

Для связи через табличную часть перейдите в раздел «Табличные части» документа, добавьте табличную часть (например, «Товары»), а внутри неё — реквизит «Номенклатура» с типом «СправочникСсылка.Номенклатура». Рядом обычно добавляют количество, цену и сумму — это уже числовые реквизиты без ссылок.

После изменения структуры обновите конфигурацию базы данных (F7). Платформа добавит новое поле в таблицу документа. Существующие документы получат пустое значение реквизита — это нормально, заполнить их можно обработкой или вручную.

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

Вывод реквизита на форму и настройка выбора

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

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

Если элементов справочника много и они сгруппированы иерархически, убедитесь, что форма выбора справочника показывает иерархию и поиск работает по наименованию и коду. В типовых конфигурациях формы выбора уже настроены; в самописных их стоит проверить отдельно, иначе пользователи будут тратить время на ручной поиск.

Связь параметров выбора для зависимых справочников

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

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

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

Проверка заполнения и обязательность связи

Если документ без ссылки на справочник бессмыслен (накладная без контрагента), включите у реквизита свойство «Проверка заполнения» — «Выдавать ошибку». Тогда платформа не даст провести документ с пустым значением. Это простейшая защита от неполных данных, не требующая кода.

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

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

1c
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если ВидОперации = Перечисления.ВидыОпераций.Продажа
        И Не ЗначениеЗаполнено(Договор) Тогда
        ОбщегоНазначения.СообщитьПользователю("Укажите договор контрагента",, "Договор",, Отказ);
    КонецЕсли;
КонецПроцедуры

Целостность данных: что будет при удалении элемента справочника

Платформа 1С защищает ссылочную целостность: элемент справочника, на который есть ссылки из документов, нельзя удалить физически — при попытке удаления будет выдано сообщение со списком объектов-ссылок. Стандартная практика — не удалять, а помечать элемент на удаление и исключать его из выбора пометкой или признаком «Архив».

«Битые» ссылки (значение вида «Объект не найден») появляются при обменах, восстановлении из копий, прямых манипуляциях с базой или удалении в обход контроля ссылочной целостности. Они ломают отчёты и проведение. Проверить базу помогает штатная операция «Тестирование и исправление» с включённой проверкой ссылочной целостности — запускайте её только на копии или в монопольном режиме после резервного копирования.

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

Проверка результата и типичные ошибки

После настройки проверьте сценарий целиком: создайте документ, выберите элемент справочника, проведите, постройте отчёт по документам с группировкой по этому реквизиту. Значение должно отображаться наименованием, а не пустой строкой или техническим представлением ссылки. Проверьте также быстрый ввод с клавиатуры и работу связи параметров выбора.

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

Типичные ошибки
01
Реквизит добавлен в конфигураторе, но не вынесен на форму — пользователи не могут его заполнить
02
Составной тип ссылки без необходимости — ухудшение производительности запросов и отчётов
03
Связь параметров выбора настроена на несуществующий реквизит отбора — отбор молча не работает
04
Физическое удаление элементов справочника вместо пометки — риск «битых» ссылок в документах
05
Отсутствие проверки заполнения — документы проводятся без обязательной ссылки
Контрольные точки

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

Отображение реквизита в документе
Норма

Поле показывает наименование элемента, открывается по кнопке

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

Пустое поле, «Объект не найден» или техническая строка ссылки

Выбор значения
Норма

Список выбора открывается, работает поиск по вводу

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

Список пуст или показывает лишние элементы

Связь параметров выбора
Норма

В договорах видны только договоры выбранного контрагента

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

Показываются все договоры всех контрагентов

Проведение документа
Норма

Документ проводится, отчёт группируется по реквизиту

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

Ошибка проведения или пустая группировка в отчёте

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

Можно ли связать документ с несколькими справочниками одним реквизитом?

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

Как сделать, чтобы при выборе контрагента договор подставлялся автоматически?

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

Почему в списке выбора не видно нужный элемент справочника?

Частые причины: элемент помечен на удаление, на форму выбора наложен отбор (в том числе через связь параметров выбора), у пользователя нет прав на просмотр этого справочника или на уровне записей (RLS) скрыта часть элементов. Проверяйте в указанном порядке, начиная с пометки удаления.

Что произойдёт со старыми документами при удалении элемента справочника?

Физически удалить элемент, на который есть ссылки, платформа не даст — покажет список ссылающихся объектов. Если удаление выполнено в обход контроля (обработкой, при обмене), в документах останутся «битые» ссылки вида «Объект не найден», которые придётся заменять вручную или обработкой.

Можно ли связать документ и справочник без изменения конфигурации?

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

Как вывести в отчёт данные справочника через ссылку из документа?

В запросе используйте обращение через точку: Документ.Контрагент.ИНН, Документ.Номенклатура.Артикул. Платформа автоматически выполнит соединение с таблицей справочника. В СКД достаточно добавить поле через точку в наборе данных — отчёт покажет реквизиты связанного элемента без дополнительного кода.

Итог

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

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