Имя: Пароль:
1C
1С v8
КД. ПКО через промежуточный справочник
0 Радим1987
 
10.11.20
22:59
Всем привет, вопрос по КД.
код справочника "Физлицо" (источник) - соответствует коду справочника "Сотрудники" (приемника).
Собственно вопрос как настроить ПКО Физ лицо-Физлицо с использованием справочника "Сотрудники" (промежуточного справочника)
1 hhhh
 
11.11.20
00:01
(0) зачем? делайте 2 ПКО: Физ лицо-Физлицо и Физлицо - Сотрудники
2 Радим1987
 
11.11.20
01:01
Сделал Так

ПКО  СправочникСсылка.ФизическиеЛица (источник) →(С использованием справочника "Сотрудники")→ СправочникСсылка.ФизическиеЛица (приемник)
- Не создавать новый объект в приемнике, если он НЕ найден = ИСТИНА
- Автоматически генерировать номер или код, если он не задан

ПередВыгрузкой

ВходящиеДанные = Новый Структура("КодПоиска");

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |    Водители.ТабельныйНомер КАК Код
    |ИЗ
    |    РегистрСведений.Водители.СрезПоследних(, Физлицо = &Ссылка) КАК Водители";

Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);

РезультатЗапроса = Запрос.Выполнить();

Если НЕ РезультатЗапроса.Пустой() Тогда     
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();             
    ВходящиеДанные.КодПоиска = СокрЛП(Выборка.Код);     
    Сообщить(Выборка.Код);      
Иначе
    Отказ = Истина;
КонецЕсли;


ПоляПоиска

Если Не СвойстваПоиска["ЭтоГруппа"] Тогда
    
    Если ЗначениеЗаполнено(СвойстваПоиска["КодПоиска"]) Тогда
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо
        |ИЗ
        |    РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
        |ГДЕ
        |    ТекущиеКадровыеДанныеСотрудников.Сотрудник.Код = &КодПоиска";
        
        Запрос.УстановитьПараметр("КодПоиска", ПараметрыОбъекта["КодПоиска"]);    
        
        РезультатЗапроса = Запрос.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
        Если ВыборкаДетальныеЗаписи.Следующий() Тогда         
            СсылкаНаОбъект = ВыборкаДетальныеЗаписи.ФизическоеЛицо;           
        Иначе
            ПрекратитьПоиск = Истина;          
        КонецЕсли;  
    КонецЕсли;
Иначе
    СтрокаИменСвойствПоиска = "ЭтоГруппа, Наименование";  
КонецЕсли;



ПКС
- Код(источник) - Код(Приемник) Отключить = Истина;
- Наименование (источник) - Наименование (Приемник) Поиск = Истина
- ЭтоГруппа(источник) - ЭтоГруппа(Приемник) Поиск = Истина
- Параметр "КодПоиска" Поиск = Истина, Передавать данные в параметр = Истина, Получить значение из входящих данных = Истина