Имя: Пароль:
 
1C
1С v8
КД2: Установить ссылку на предопределенный элемент
0 mistеr
 
04.01.18
21:51
Как при заполнении реквизита объекта передать ссылку на предопределенное (в приемнике) значение?

С перечислениями все просто: передаешь строку с именем значения и готово. А со справочниками и другими ссылочными типами как? Сейчас использую Выражение, но чувствую, должен быть способ поизящнее.
1 Cyberhawk
 
04.01.18
22:04
Ссылки передаются единообразно что на предопределенный, что на непредопределенный элемент
2 mistеr
 
04.01.18
22:58
(1) Я наверное плохо объяснил суть проблемы.

На примере. Есть РС КонтактнаяИнформация. Нужно записать туда телефон контрагента (к примеру). Там есть измерения Объект, Тип и Вид. В объект пихаем ссылку на контрагента. Тип — это перечисление ТипыКонтактнойИнформации, нужно записать туда значение Телефон. Передаем строку "Телефон", и при загрузке там корректно проставится ссылка на это значение. Теперь Вид, это справочник ВидыКонтактнойИнформации. Нужно записать туда ссылку на предопределенный элемент ТелефонКонтрагента. Как это сделать, какие есть варианты?
3 tesseract
 
05.01.18
00:52
(2) А чем стандартный способ - Справочники.ВидКонтактнойИнформации.ТелефонКонтрагента не подходит? В общем-то предопределенные элементы как раз и нужны, чтобы их в коде использовать можно.
4 mistеr
 
05.01.18
10:27
Апну.

(3) Отлично, как его использовать *в источнике*?

Источник 7.7, если что.
5 Mikhail Volkov
 
05.01.18
10:43
(0) Предопределенные элементы указываются на вкладке "Конвертация значений".
6 vde69
 
05.01.18
10:49
>>>>Источник 7.7, если что.

зечем их там использовать? просто в обработчике поиска укажи

Если ...... Тогда

НайденныйОбъект = Справочники.ВидКонтактнойИнформации.ТелефонКонтрагента
7 MadJhey
 
05.01.18
10:51
просто ТелефонКонтрагента
8 MadJhey
 
05.01.18
10:52
Значение = "ТелефонКонтрагента"
9 mistеr
 
05.01.18
12:25
(7) (8) Работает! Супер, спасибо.

Правда, работает для всего, кроме РС КонтактнаяИнформация. Там у измерения Вид составной тип: Строка и СправочникСсылка.ВидыКонтактнойИнформации. Есди передать строку, то и запишется строка, а не ссылка на справочник.

как тут быть?
10 Mikhail Volkov
 
05.01.18
17:42
(9) 2 ПКО: для строки и справочника.
11 user-ok
 
05.01.18
18:05
Значение = "ТелефонКонтрагента";
ТипПриемника = "СправочникСсылка.ВидыКонтактнойИнформации";
12 user-ok
 
05.01.18
18:11
ТипПриемника - Строка. Тип свойства приемника. Для свойств не составных типов - всегда определен. Для свойств составных типов - определяется либо правилом конвертации, либо разработчиком конвертации
13 mistеr
 
05.01.18
20:26
(11) (12) Спасибо. Долой выражения! :)
14 Mikhail Volkov
 
06.01.18
09:46
ПКС для "Вид" из Альфа-Авто в УПП:

Структура = Новый Структура("ОбъектКИ", Источник.Объект);
ИсходящиеДанные = Структура;

Значение = ""; ИмяПКО = "";
Если ТипЗнч(Источник.Вид) = "Строка" Тогда
    Значение = СокрЛП(Источник.Вид);
ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.ПрочаяИнформация Тогда
    Значение = "Прочая информация";
ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.ВебСтраницаОрганизации Тогда
    Значение = "Веб-страница организации";
ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.ВебСтраницаФизЛица Тогда
    Значение = "Домашняя веб-страница";
ИначеЕсли Источник.Вид = Справочники.ВидыКонтактнойИнформации.НомерICQ Тогда
    Значение = "Номер ICQ";
ИначеЕсли Источник.Вид.Предопределенный Тогда
    Если ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Контрагенты") Тогда
        ИМяПКО = "ВидыКонтактнойИнформацииКонтрагенты";
    ИначеЕсли ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.КонтактныеЛица") Тогда
        ИмяПКО = "ВидыКонтактнойИнформацииКонтактныеЛица";
    ИначеЕсли ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Организации") Тогда
        ИмяПКО = "ВидыКонтактнойИнформацииОрганизации";
    ИначеЕсли ТипЗнч(Источник.Объект) = Тип("СправочникСсылка.Сотрудники") Тогда
        Если Источник.Вид = Справочники.ВидыКонтактнойИнформации.АдресЭлектроннойПочтыРабочий Тогда
            ИМяПКО = "ВидыКонтактнойИнформацииПользователи";
        Иначе
            ИмяПКО = "ВидыКонтактнойИнформацииФизЛица";
        КонецЕсли;
    Иначе    
        ИмяПКО = "ВидыКонтактнойИнформации";
    КонецЕсли;
Иначе    
    ИмяПКО = "ВидыКонтактнойИнформации";
КонецЕсли;
Программист всегда исправляет последнюю ошибку.