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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Использование прямых ссылок

Самый надежный способ связать два справочника — не искать элемент по строковым полям, а использовать тип данных СправочникСсылка. В 1С ссылка является уникальным указателем на объект в базе данных.

В конфигураторе создайте реквизит с типом СправочникСсылка.[ИмяВашегоСправочника]. Передача данных при этом осуществляется простым присваиванием:


// Присваиваем ссылку другому объекту
НовыйЭлемент.РеквизитСвязи = ВыбраннаяСсылка;
НовыйЭлемент.Записать();

Такой подход гарантирует, что система обратится именно к тому объекту, который был выбран, вне зависимости от его наименования или кода.

Поиск по уникальному идентификатору (GUID)

Если вам нужно получить ссылку, имея на руках только строковое представление идентификатора (например, при импорте данных из внешних систем), используйте УникальныйИдентификатор. Это исключит проблему неоднозначности поиска.


// Получение ссылки по строке GUID
СтрокаGUID = \"3b241334-a4b5-11e9-80bf-0050569e1f57\";
Идентификатор = Новый УникальныйИдентификатор(СтрокаGUID);
НайденнаяСсылка = Справочники.Номенклатура.ПолучитьСсылку(Идентификатор);

Использование запросов для сложного поиска

Методы типа НайтиПоНаименованию часто подводят, если в базе есть несколько элементов с одинаковыми именами. Чтобы избежать ошибок, используйте Запрос. Это позволит добавить дополнительные условия, например, проверку на владельца, ИНН или другие реквизиты.


Запрос = Новый Запрос;
Запрос.Текст = \"ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ Наименование = &Наименование И ИНН = &ИНН\";
Запрос.УстановитьПараметр(\"Наименование\", \"ООО Ромашка\");
Запрос.УстановитьПараметр(\"ИНН\", \"7701234567\");
Результат = Запрос.Выполнить();

Передача ссылок в табличный документ через расшифровку

Если ваша задача — вывести данные в печатную форму (табличный документ) так, чтобы пользователь мог кликнуть по тексту и перейти в карточку элемента, используйте механизм Расшифровка. Это стандартный способ связи ячейки отчета или печатной формы с объектом базы данных.

  1. В макете табличного документа выделите ячейку, в которую выводите текстовое наименование.
  2. В свойствах ячейки установите параметр Расшифровка.
  3. В коде формирования табличного документа при заполнении параметров ячейки передайте в эту область ссылку на объект:

Область = Макет.ПолучитьОбласть(\"Строка\");
Область.Параметры.Контрагент = СсылкаНаКонтрагента;
// Установка расшифровки
Область.Параметры.Расшифровка = СсылкаНаКонтрагента;
ТабДок.Вывести(Область);

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

Итоговые рекомендации

Чтобы избежать проблем с поиском элементов:

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

← На главную