Имя: Пароль:
1C
1С v8
Привязка сотрудника к пользователю
,
0 yuran9393
 
29.05.23
12:08
Всем привет, подскажите пожалуйста, есть справочник "Предопределнные элементы" в нем есть сотрудник "Тест" (предопределенный элемент).
Есть заведенный пользователь 1СТест у которого реквизит сотрудник пустой.
Необходима внешняя обработка, которая добавит привязку сотрудника  "Тест" к пользователю 1СТест.

Подскажите пожалуйста как поучить значение по предопределенному элементу и как реализовать?
1 Волшебник
 
29.05.23
12:10
Плохая структура базы.

Лучше наоборот: в справочнике "Сотрудники" завести предопределённый элемент "Тест", тогда обращение будет тривиальным:
Справочники.Сотрудники.Тест
2 yuran9393
 
29.05.23
12:13
Пока только такая есть, так обратиться нельзя? Справочники.ПредопределенныеЭлементы.Тест ?
3 Волшебник
 
29.05.23
12:14
(2) Можно. Но структура базы уродская. За такое могут и побить.
4 Мультук
 
гуру
29.05.23
12:15
(3)

P.S.

Цифры в его нике -- это номер реинкарнации
5 yuran9393
 
29.05.23
12:17
Подскажи как можно привязать в таком случае сотрудника к пользователю?
6 yuran9393
 
29.05.23
13:09
СотрудникСсылка = Справочники.ПредопределенныеЭлементы.Тест;        
ПользовательСсылка = Справочники.Пользователи.НайтиПоНаименованию("1СТест");                
НаимСотрудника = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СотрудникСсылка, "СсылкаНаЭлемент");            
ПользовательОбъект = ПользовательСсылка.ПолучитьОбъект();
ПользовательРеквизит = ПользовательОбъект.Сотрудник;
Если НЕ ЗначениеЗаполнено(ПользовательРеквизит) Тогда
     ПользовательРеквизит =  НаимСотрудника;  
     ПользовательИзменен = Истина;  
КонецЕсли;
     Если ПользовательИзменен Тогда
            ПользовательОбъект.Записать();
    КонецЕсли;
7 Волшебник
 
29.05.23
13:21
(6)

ПользовательОбъект.Сотрудник = СотрудникСсылка;
ПользовательОбъект.Записать();
8 yuran9393
 
29.05.23
13:53
СотрудникСсылка = Справочники.ПредопределенныеЭлементы.СлужебныйСотрудник1cService;    
ЗначениеСотрудника = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СотрудникСсылка, "СсылкаНаЭлемент");               //Получаем значение пред эл-та
ПользовательСсылка = Справочники.Пользователи.НайтиПоНаименованию("1CTester");
ПользовательОбъект = ПользовательСсылка.ПолучитьОбъект();
    Если НЕ ЗначениеЗаполнено(ПользовательОбъект.Сотрудник) Тогда
         //ПользовательРеквизит =  ЗначениеСотрудника;  
         ПользовательОбъект.Сотрудник = ЗначениеСотрудника;
         ПользовательИзменен = Истина;  
     ИначеЕсли
        
    КонецЕсли;
     Если ПользовательИзменен Тогда
            ПользовательОбъект.Записать();
    КонецЕсли;
Так все работает,спасибо
9 yuran9393
 
29.05.23
13:57
СотрудникСсылка = Справочники.ПредопределенныеЭлементы.Тест;
ЗначениеСотрудника = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СотрудникСсылка, "СсылкаНаЭлемент");        
ПользовательСсылка = Справочники.Пользователи.НайтиПоНаименованию("1СТест");                
ПользовательОбъект = ПользовательСсылка.ПолучитьОбъект();            
Если НЕ ЗначениеЗаполнено(ПользовательРеквизит) Тогда
     ПользовательОбъект.Сотрудник = ЗначениеСотрудника;
     ПользовательИзменен = Истина;  
КонецЕсли;
     Если ПользовательИзменен Тогда
            ПользовательОбъект.Записать();
    КонецЕсли;
10 Fish
 
29.05.23
14:14
(9) А вот это зачем?
ЗначениеСотрудника = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СотрудникСсылка, "СсылкаНаЭлемент");
11 uno-group
 
29.05.23
14:30
(3) Как по мне наоборот. 1 сотрудник может работать под несколькими пользователями и такая структура позволяет сделать кучу пользователей не размножая сотрудников.
12 yuran9393
 
29.05.23
15:00
А вот это зачем?
ЗначениеСотрудника = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СотрудникСсылка, "СсылкаНаЭлемент"); - Получаем значение предопределенного элемента
13 Fish
 
29.05.23
15:09
(12) Ты же уже получил его строкой выше.
14 Fish
 
29.05.23
15:10
+(13) Или у тебя в предопределённых элементах справочника ПредопределенныеЭлементы есть реквизит с типом "сотрудники"? А нафига такая конструкция?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший