Связь по владельцу в управляемых формах

При работе в формах с подчиненных справочниками имеется ряд особенностей.

Прежде всего, следует отметить свойства формы списка справочника ПараметрОтборПоВладельцу и ПараметрВыборПоВладельцу .

Свойство ПараметрОтборПоВладельцу используются для передачи в форму списка справочника информации о том, что список нужно отображать по определенному владельцу. Расширение формы списка справочника на основании значения этого свойства в процессе открытия формы устанавливает отбор по владельцу. Этот параметр используется, например, системой при открытии подчиненного справочника по определенному элементу из списка справочника-владельца (по кнопке "Перейти"). Если отсутствует колонка для отображения владельца, то при открытии формы отключается возможность управления отбором пользователем, чтобы просмотр списка выполнялся строго по указанному владельцу.

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

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

В 1С:Предприятии 8 выбор в поле ввода значения подчиненного справочника не производит предварительного выбора владельца (такое поведение было реализовано в 1С:Предприятии 7.7). Если в момент выбора в поле ввода значение владельца для поля ввода не установлено (ни через связь по владельцу, ни через значение свойства ВыборПоВладельцу ), то форма будет открыта без установленного владельца. Таким образом, необходимо в форме выбора подчиненного справочника предусмотреть возможность выбора владельца.

Читайте также:  Сколько дюймов мой монитор

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

Может использоваться возможность просмотра справочника по всем владельцам. В этом случае следует вставить в список колонку для отображения владельца. Однако такой вариант тоже может быть неудобен для выбора.

Эффективным решением может быть размещение в форме выбора поля ввода, связанного с данными отбора по владельцу ("Отбор.Владелец.Значение"). В этом случае пользователь сможет быстро установить отбор по владельцу и выбрать необходимый элемент.

Допустим, требуется создать программным путем новый элемент справочника «Единицы хранения», у которого во владельцах — справочник «Номенклатура»
Это делается так:

Автор 1С

6 thoughts on “ Как программно установить связь по владельцу в форме. Как программно добавить новый элемент справочника, если у него есть владелец (1С: Программисту) ”

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

Алексей, уточните, что именно нужно. Вероятно, действительно стоит добавить какую-то информацию, но не понятно, что именно осталось непонятным 🙂
Вы внимательно прочитали вторую часть, то, что написано после картинки? Там поясняется, как программно задать владельца по какому-то условию. Обратили внимание на слова, выделенные жирным шрифтом? Поняли приведенную процедуру?

Т.е. при программном создании элемента формы нельзя программно установить для колонки ТП _имя_ реквизита формы / объекта (как в конфигураторе в редакторе формы), в котором хранится ссылка на владельца, а нужно каждый раз при вызове в обработчике подсовывать эту ссылку, непосредственно в экземпляр элемента управления

Воспрос остался непонятен.
При создании элемента формы (спасибо Евгении за подсказку) Вы назначаете ему Тип.
Допустим, Тип — это Справочник, у которого есть Владелец.
Если мы правильно поняли, вопрос в том, как назначить конкретного Владельца этому содаваемому элементу формы, чтобы при попытке выбора пользователем, открывался список, подчиненный заданному Владельцу?

Читайте также:  Разметка страницы в excel 2010 для печати

Вообще, выбор по владельцу задается в процедуре «ПриНачалеВыбора» командой вида
Элемент.ВыборПоВладельцу = Владелец;

Мы пок ане придумали, как именно это сделать для программно создаваемого элемента формы (если у кого-то возникнут мысли, просим помочь).
Быть может, поможет назначить процедуру-обработчик используя метод «УстановитьДействие»:

Расширение элементов управления, расположенных в форме
УстановитьДействие (SetAction)
Синтаксис:
УстановитьДействие( , )
Параметры:
(обязательный)
Тип: Строка. Имя события.
(обязательный)
Тип: Действие, Неопределено. Устанавливаемое действие.
В случае установки значения Неопределено при получении от элемента управления указанного события никакого действия выполнено не будет.
Описание:
Устанавливает новую процедуру-обработчик (действие) для указанного события.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Процедура должна быть экспортируемой и располагаться в модуле формы, при этом количество параметров должно совпадать с необходимым количеством параметров события, инициирующего вызов действия.

Или вопрос в том, как программно добавить новый элемент справочника, если у него есть владелец?
Допустим, требуется создать программным путем новый элемент справочника «Единицы хранения»,
у которого во владельцах — справочник «Номенклатура».
Это делается так:

Команда программного добавления элемента формы:
ЭлементыФормы (Controls)
Добавить (Add)
Синтаксис:
Добавить( , , , )
Параметры:
(обязательный)
Тип: Тип. Тип добавляемого элемента управления
Индикатор
ПолеКалендаря
Кнопка
КоманднаяПанель
Надпись
Панель
Переключатель
ПолеТабличногоДокумента
ПолеHTMLДокумента
ПолеТекстовогоДокумента
ПолеВвода
ПолеВыбора
ПолеСписка
ПолеКартинки
ПолосаРегулирования
Разделитель
РамкаГруппы
ТабличноеПоле
Флажок
ПолеГрафическойСхемы
ПолеГеографическойСхемы
(обязательный)
Тип: Строка. Имя создаваемого элемента управления. Имя должно быть указано в соответсвии с правилами написания имен системы 1С:Предприятие 8. В противном случае выполнение метода вызовет исключение.
(необязательный)
Тип: Булево. Определяет, создавать новый элемент управления формы видимым или нет. Истина — элемент создается видимым.
Значение по умолчанию: Истина
(необязательный)
Тип: Панель, ПолеТабличногоДокумента. Определяет, какой панели формы или какому табличному документу принадлежит создаваемый элемент. Если указана панель, то добавляемый элемент размещается на текущей странице панели. Если не указан, создаваемый элемент будет принадлежать непосредственно форме.
Возвращаемое значение:
Элемент управления формы.
Описание:
Добавляет элемент управления на форму.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
// Расположим на странице табличное поле
ПолеРегистра = ЭлементыФормы.Добавить(Тип(«ТабличноеПоле»),
СтрокаТаблицы.Имя,
Истина,
ЭлементыФормы.ОсновнаяПанель);
ПолеРегистра.Данные = «ДокументОбъект.Движения.» + СтрокаТаблицы.Имя;

Читайте также:  Программы для взлома чужого компьютера

Если НЕ ЭтоНовый() Тогда
ПолеРегистра.Значение.Прочитать();
КонецЕсли;

ПолеРегистра.Верх = 30;
ПолеРегистра.Лево = 6;
ПолеРегистра.Ширина = ЭлементыФормы.ОсновнаяПанель.Ширина — 14;
ПолеРегистра.Высота = ЭлементыФормы.ОсновнаяПанель.Высота — 56;
ПолеРегистра.ТолькоПросмотр = Ложь;
ПолеРегистра.ИзменятьПорядокСтрок = Истина;
ПолеРегистра.ИзменятьСоставСтрок = Истина;

ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Верх,
КоманднаяПанельРегистра,
ГраницаЭлементаУправления.Низ);
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Низ,
ЭлементыФормы.ОсновнаяПанель,
ГраницаЭлементаУправления.Низ);
ПолеРегистра.УстановитьПривязку(ГраницаЭлементаУправления.Право,
ЭлементыФормы.ОсновнаяПанель,
ГраницаЭлементаУправления.Право);

Если Метаданные.РегистрыНакопления[СтрокаТаблицы.Имя].ВидРегистра = Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки Тогда

КолонкаВидДвижения = ПолеРегистра.Колонки.Вставить(1, «Вид движения»);
КолонкаВидДвижения.Имя = «ВидДвиженияРегистраНакопления»;
КолонкаВидДвижения.УстановитьЭлементУправления(Тип(«ПолеВвода»));
КолонкаВидДвижения.Данные = «ВидДвижения»;
КолонкаВидДвижения.ЭлементУправления.КнопкаВыбора = Истина;
КолонкаВидДвижения.ЭлементУправления.ВыбиратьТип = Ложь;

ПолеРегистра.Колонки.Регистратор.Видимость = Ложь;
ПолеРегистра.Колонки.Период.Видимость = Ложь;
ПолеРегистра.Колонки.НомерСтроки.Видимость = Ложь;

Подчиненные владельцу реквизиты — элементы справочников, которые должны выбираться пользователем в контексте элемента-владельца. В тестовом примере у нас будут справочники «Контрагенты», «Договора» и документ «ПриходнаяНакладная» с реквизитами «Контрагент» и «Договор».

Cправочник «Договора» подчинен справочнику «Контрагенты»:

Для документа «ПриходнаяНакладная» в свойствах реквизита «Договор» выставляем «Связи параметров выбора: Отбор.Владелец(Контрагент)»

Для этого по нажатию […] выбираем в списке «Связи параметров выбора» реквизит «Контрагент»:

В таблице Имя-Реквизит-Режим изменения должно стоять: Отбор.Владелец — Контрагент — Очищать

Если в поле «Имя» стоит что-то другое, нужный вариант можно выбрать из выпадающего списка:

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>