В прикладных задачах иногда возникают ситуации, когда элемент какого-нибудь справочника должен быть жестко подчинен элементу другого справочника. Например, у контрагентов могут существовать договоры, которые заключены с организацией, ведущей учёт. Тогда, экземпляр справочника Договоры контрагента должен быть подчинен справочнику Контрагенты, поскольку, мы не можем создать договор сам по себе, договор должен быть привязан к конкретному контрагенту. Для реализации подобных задач необходим подчиненный справочник 1С. В выше приведенном случае, справочник Договоры контрагента станет подчинен справочнику Контрагенты. А справочник Контрагенты будет являться владельцем справочника Договоры контрагента.
Конструируем подчиненный справочник 1С
Для того, чтобы из справочника 1С сделать подчиненный справочник, достаточно в редакторе справочника на закладке Владельцы указать владельца этого справочника.
После этого, справочник с заполненным списком на закладке Владельцы станет подчиненный, а справочник (или справочники) из списка на этой закладке будут владельцами данного справочника.
После таких манипуляций, нельзя создать этот справочник (в рассматриваемом примере – ДоговорыКонтрагента) без указания владельца (Контрагента).
Если мы попробуем создать, элемент справочника ДоговорыКонтрагента, то поле, в котором следует указать контрагента-владельца будет обязательным для заполнения.
Заметьте, это поле называется Владелец и является стандартным реквизитом справочника.
Этот реквизит стал активным, тогда, когда мы указали владельца справочника на закладке Владельцы.
В тоже время, на форме элемента справочника-владельца появилась команда с названием подчиненного справочника.
После выполнении этой команды, откроется форма списка с элементами подчиненного справочника, у которых владелец ссылка на открытый элемент справочника Контрагенты.
Программное создание элемента подчиненного справочника
Разберем программное создание элемента подчиненного справочника. Оно выполняется при помощи метода менеджера справочник СоздатьЭлемент. Только, в случае подчиненных справочников обязательно нужно указать владельца!
Например, создадим обработку, на управляемой форме которой разместим реквизиты Владелец (тип ссылка на справочник Контрагент) и Название договора, а также команду Создать подчиненный справочник.
При выполнении этой команды, будем создавать экземпляр справочника Договоры контрагента, который подчинен указанному владельцу.
&НаСервере Процедура СоздатьПодчиненныйСправочникНаСервере() НовыйДоговор = Справочники.ДоговорыКонтрагента.СоздатьЭлемент(); НовыйДоговор.Наименование = НазваниеДоговора; НовыйДоговор.Владелец = Владелец; НовыйДоговор.Записать(); КонецПроцедуры &НаКлиенте Процедура СоздатьПодчиненныйСправочник(Команда) Если Не ПроверитьЗаполнение() Тогда Возврат; КонецЕсли; СоздатьПодчиненныйСправочникНаСервере(); КонецПроцедуры
В клиентской процедуре используется проверка заполнения. Подробнее о проверке читайте в этой статье:
Выбор элементов подчиненного справочника на управляемой форме
Часто возникают задачи, когда на управляемой форме размещены поля ввода и для справочника владельца, и для подчиненного справочника. И в этом случае нужно реализовать, чтобы в поле ввода подчиненного справочника отображались только те элементы, владелец которых указан в поле ввода справочника владельца.
Например, у документа Продажа товаров существуют реквизиты Контрагент и Договор контрагента соответствующих типов.
Для того, чтобы в реквизите Договор контрагента можно было выбрать только договоры указанного контрагента, следует в палитре свойств реквизита объекта у свойства Связи параметров выбора сделать настройку, в которой указать, что реквизит Контрагент используется при выборе значений в качестве владельца.
После таких настроек, в поле ввода Договоры контрагента можно выбрать только договоры, указанного контрагента.
Если же мы создадим реквизит управляемой формы с ссылкой на подчиненный справочник, то у этого реквизита не будет такого же свойства, как и у реквизита объекта.
Для того, чтобы отбор работал, следует у элемента формы, который связана с реквизитом для подчиненного справочника, заполнить свойство Связи параметров выбора.
Поиск среди подчиненных справочников
Для того, чтобы найти какой-то элемент среди подчиненных справочников, при помощи методов менеджера справочника НайтиПоНаименованию, НайтиПоКоду и НайтиПоРеквизиту следует использовать параметр Владелец этих методов.
Например, в случае поиска по наименованию, код будет следующим.
Договор = Справочники. ДоговорыКонтрагента.НайтиПоНаименованию(НазваниеДоговора,Истина,,Владелец);
Где НазваниеДоговора – это наименование элемента справочника, который ищется.
Владелец – это ссылка на справочник владелец.
Подчиненный справочник 1С или табличная часть?
Часто возникает вопрос: чем отличается подчиненный справочника от табличной части. Основной ответ, тем что у элемента подчиненного справочника имеется ссылка на этот элемент, а у строки табличной части такой ссылки нет.
Подробно, о том, что выбрать при разработке подчиненный справочник или табличную часть читайте по этой ссылке на сайте its.1c.ru:
Подчиненный справочник или табличная часть
Видео по теме:
Читайте также по теме:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009