|
Привязка сотрудника к пользователю | ☑ | ||
---|---|---|---|---|
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) Или у тебя в предопределённых элементах справочника ПредопределенныеЭлементы есть реквизит с типом "сотрудники"? А нафига такая конструкция?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |