1С. Программное переопределение связей параметров выбора

Задача1c-programmnoye-pereopredeleniye-svyazey-parametrov-vybora_0

Необходимо организовать программное переопределить связи параметров выбора по определенному событию

Решение

Для наглядности создадим новую конфигурацию со следующими справочниками:

  1. «Контрагенты»;
  2. «Договоры контрагентов». Подчинен справочнику «Контрагенты»;
  3. «Соглашения». У реквизита «Договор контрагента» установлены параметры связей выбора по реквизитам «Владелец», «Параметр 1» и «Параметр 2».

При такой реализации в соглашении будут доступны договоры указанного контрагента с определенными параметрами.

В качестве события для переопределения связей параметров выбора будем использовать значение реквизита «Позволить выбирать любой договор контрагента». Если признак будет установлен, то позволим выбирать любой договор указанного контрагента.

Собственно код формы элемента справочника «Соглашения» и изображения результата

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ПереопределитьСвязиПараметровВыбора();
КонецПроцедуры

#КонецОбласти

#Область ОбрабочикиСобытийЭлементовФормы

&НаКлиенте
Процедура ПозволитьВыбиратьЛюбойДоговорКонтрагентаПриИзменении(Элемент)
	ПереопределитьСвязиПараметровВыбора();
КонецПроцедуры

#КонецОбласти

#Область ПрограммныйИнтефейс

&НаСервере
Процедура ПереопределитьСвязиПараметровВыбора()
	
    НовыйМассив = Новый Массив();
    НовыйМассив.Добавить(Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Контрагент"));
	
    Если Не Объект.ПозволитьВыбиратьЛюбойДоговорКонтрагента Тогда 
        НовыйМассив.Добавить(Новый СвязьПараметраВыбора("Отбор.Параметр1", "Объект.Параметр1"));
        НовыйМассив.Добавить(Новый СвязьПараметраВыбора("Отбор.Параметр2", "Объект.Параметр2"));
    КонецЕсли;	
	
    НовыеСвязи = Новый ФиксированныйМассив(НовыйМассив);
	
    Элементы.ДоговорКонтрагента.СвязиПараметровВыбора = НовыеСвязи;
	
КонецПроцедуры // ПереопределитьСвязиПараметровВыбора()

#КонецОбласти

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

Комментарии 2

  • iq-kredit 11.01.2016 в 09:18 Cсылка

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

    • Guesto 11.01.2016 в 17:24 Cсылка

      iq-kredit, в конфигураторе есть такая возможность, и в пользовательском режиме можно установить отборы в форме выбора.
      Жесткое ограничение вводится для исключения ввода неверных данных. Например, пользователь указал одного контрагента, а договор от другого.

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

  • Добавить комментарий

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