Modber Сообщество
профессионалов по 1С

Как программно установить связь по владельцу в форме



Платформы: 1С:Предприятие 8.2, 1С:Предприятие 8.1
Конфигурации: Все конфигурации
2013-03-30
11490 

 

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

Рассмотрим задачу немного в другом ракурсе. 

Чтобы избежать зависания, обычно назначают «Связь по владельцу». См. рисунок. Слева на рисунке — форма списка регистра, справа на рисунке — свойства поля ввода «ИСТ» (того самого, что отмечено слева в форме списка регистра красными буквами «ИСТ»). Чтобы однозначно определить владельца (не программным путем), для поля ввода «ИСТ» заполняется поле, отмеченное на рисунке цифрой «1» — «Связь по владельцу», где указывается связь с полем «Номенклатура».
 

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

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

К примеру, поле «ИСТ» списка регистра нужно связать с владельцем-полем «Транспортная единица» (которое тоже является элементом справочника «Номенклатура»), если транспортная единица заполнена, а если не заполнена, то владелецем нужно считать значение в поле «Номенклатура»  — см. указатель №3 на рисунке.
Каким образом это реализовывается.
 В данном случае поле 1 «Связь по владельцу» заполнять не нужно. Но при этом необходимо в поле 2 «Начало выбора» указать процедуру, в которой будет программно определяться связь по владельцу с помощью директивы «ВыборПоВладельцу».
Пример процедуры:


Процедура РегистрСведенийСписокЕдиницаХраненияНачалоВыбора(Элемент, СтандартнаяОбработка)

    Владелец = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные.Номенклатура;
    Если ЗначениеЗаполнено(ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные.ТранспортнаяЕдиница) Тогда
        Если ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные.ТранспортнаяЕдиница.ТипНоменклатуры = Перечисления.усТипыНоменклатуры.Груз Тогда
            Владелец = ЭлементыФормы.РегистрСведенийСписок.ТекущиеДанные.ТранспортнаяЕдиница
        КонецЕсли;
    КонецЕсли;

    Элемент.ВыборПоВладельцу = Владелец;

КонецПроцедуры

 

Как программно добавить новый элемент справочника, если у него есть владелец

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

Это делается так:
// создаем новый элемент справочника "ЕдиницыХранения":
ИСТ = Справочники.ЕдиницыХранения.СоздатьЭлемент();
// записываем ему владельца — сыслку на номенклатуру, где "Номенклатура" — элемент справочника "Номенклатура", определенный ранее
ИСТ.Владелец  = Номенклатура.Ссылка;
// определяем наименование и другие реквизиты:
ИСТ.Наименование    = "единица АБС";
ИСТ.Коэффициент    = 1;
//… заполняем остальные реквизиты
// собственно, записываем созданную единицу хранения в базу:
ИСТ.Записать();




Бесплатная юридическая
консультация по телефону

8 (499) 350-80-26(Москва)
8 (812) 627-15-62(Спб)

звонок бесплатный

В центре внимания

Комментарии (0)