Имя: Пароль:
1C
 
Отбор в форме списка "Контактное Лицо"
0 __user__
 
13.08.22
01:24
Добрый день. Подскажите пожалуйста, как можно настроить поле "Контактное Лицо" в форме документа "Заказ Покупателя" так, чтобы при нажатии на надпись "Показать Все" в поле "Контактное Лицо" в появившейся форме списка контактных лиц отображались только те контакты, которые связаны с выбранным контрагентом в поле "Контрагент" формы документа "Заказ Покупателя". Все связи контактов и контрагентов приведены в регистре сведений "СвязиКонтрагентКонтакт". Имеются также справочники "Контрагенты" и "КонтактныеЛица", но между ними нет никаких связей, поэтому через "СвязиПараметровВыбора" не получается
1 asady
 
13.08.22
10:17
(0)
В форме выбора сразу выставляется отбор
Отбор.Владелец(Объект.Партнер)
что не так?
2 __user__
 
13.08.22
13:55
Справочник "Контактные лица" не подчинен справочнику "Контрагенты"
3 shuhard
 
13.08.22
14:48
(2) контрагенты и партнеры ведутся раздельно ?
4 __user__
 
13.08.22
16:25
(3) Да
5 asady
 
13.08.22
16:33
(4) не выдумывай велосипед - делай через партнера и все будет штатно без левых рс
6 lubitelxml
 
13.08.22
16:37
(0) передавай контрагента в форму списка Контактные лица, доработай запрос дин. списка, и накладывай отбор на поле
7 __user__
 
20.08.22
19:56
(6) Доработал запрос - добавил параметр "Контрагент" в тексте запроса:

ВЫБРАТЬ РАЗЛИЧНЫЕ
    СвязиКонтрагентКонтактСрезПоследних.Контакт КАК Контакт,
    ИСТИНА КАК ЕстьКонтрагент
ПОМЕСТИТЬ СвязиКонтрагентКонтакт
ИЗ
    РегистрСведений.СвязиКонтрагентКонтакт.СрезПоследних КАК СвязиКонтрагентКонтактСрезПоследних
ГДЕ
    СвязиКонтрагентКонтактСрезПоследних.СвязьНедействительна = ЛОЖЬ
    И СвязиКонтрагентКонтактСрезПоследних.Контрагент = &Контрагент
;

Далее создал обработчик события "Начало Выбора" поля документа "Контактное Лицо". Здесь задаю контрагента в качестве параметра в методе открытия формы списка Контактные лица. В процедуре ПриСозданииНаСервере формы списка устанавливаю этот параметр - "Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Параметры.Контрагент)". Но снова не работает
8 __user__
 
20.08.22
19:57
(6)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды
    
    // СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
    МожноРедактировать = ПравоДоступа("Редактирование", Метаданные.Справочники.КонтактныеЛица);
    Элементы.ФормаИзменитьВыделенные.Видимость = МожноРедактировать;
    // Конец СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов
    
    // СтандартныеПодсистемы.ЗагрузкаДанныхИзВнешнегоИсточника
    ЗагрузкаДанныхИзВнешнегоИсточника.ПриСозданииНаСервере(Метаданные.Справочники.КонтактныеЛица, НастройкиЗагрузкиДанных, ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ЗагрузкаДанныхИзВнешнегоИсточника
    
    // Установим настройки формы для случая открытия в режиме выбора
    Элементы.Список.РежимВыбора = Параметры.РежимВыбора;
    Элементы.Список.МножественныйВыбор = ?(Параметры.ЗакрыватьПриВыборе = Неопределено, Ложь, Не Параметры.ЗакрыватьПриВыборе);
    Если Параметры.РежимВыбора Тогда
        КлючНазначенияИспользования = "ВыборПодбор";
        РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
        Параметры.Свойство("ОткрытиеИзФормыКонтрагента",ОткрытиеИзФормыКонтрагента);
        Если ОткрытиеИзФормыКонтрагента Тогда
            Элементы.ФормаСоздать.Видимость = Ложь;
            Элементы.ФормаСкопировать.Видимость = Ложь;
            Элементы.СписокКонтекстноеМенюСоздать.Видимость = Ложь;
            Элементы.СписокКонтекстноеМенюСкопировать.Видимость = Ложь;
        КонецЕсли;
    Иначе
        КлючНазначенияИспользования = "Список";
    КонецЕсли;
    
    //////////////////////////////////////////////
    Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Параметры.Контрагент);
    //////////////////////////////////////////////
    
    Если Параметры.Отбор.Свойство("Контрагент") И ЗначениеЗаполнено(Параметры.Отбор.Контрагент) Тогда
        Список.Параметры.УстановитьЗначениеПараметра("ЕстьСвязи",Истина);
        Элементы.Связи.Видимость = Ложь;
        Элементы.Контрагент.Видимость = Ложь;
    //    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Контрагент", Параметры.Отбор.Контрагент);
    //    Параметры.Отбор.Удалить("Контрагент");
    КонецЕсли;
    
    УстановитьУсловноеОформление();
    
    ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
        Список,
        "Недействителен",
        Ложь,,,
        Не Элементы.ПоказыватьНедействительных.Пометка);
        
    ПрочитатьИерархию();
    
    Если НЕ Элементы.Список.РежимВыбора Тогда
        ВариантОтборовФормы = "";
        РаботаСОтборами.ВосстановитьНастройкиОтборов(ЭтотОбъект, Список,,,Новый Структура("ОтборПериод", "ДатаСоздания"), ВариантОтборовФормы);
        ВосстановитьНастройкиОтборовПоСвязям();    
    Иначе
        ПредставлениеПериода = РаботаСОтборамиКлиентСервер.ОбновитьПредставлениеПериода(Новый СтандартныйПериод);
        
        Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
            РаботаСОтборами.НастроитьПанельОтборовМобильныйКлиент(ЭтотОбъект,,,"ОтборСвязи,ОтборКонтрагент,ОтборТег,ОтборИсточник,ОтборОтветственный,ОтборИерархияТекущая",,Истина);
        КонецЕсли;
        
    КонецЕсли;
    
    НастроитьКомандуЭкспортВАдреснуюКнигу();
    
    // УНФ.ПанельКонтактнойИнформации
    КонтактнаяИнформацияПанельУНФ.ПриСозданииНаСервере(ЭтотОбъект, "КонтактнаяИнформация", "СписокКонтекстноеМеню");
    // Конец УНФ.ПанельКонтактнойИнформации
    
КонецПроцедуры
9 __user__
 
20.08.22
19:58
(6)
&НаКлиенте
Процедура КонтактноеЛицо1НачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура("Контрагент", Объект.Контрагент);
    ОткрытьФорму("Справочник.КонтактныеЛица.ФормаСписка", ПараметрыФормы);
КонецПроцедуры
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.