|
Правильная подстановка значений в форму? | ☑ | ||
---|---|---|---|---|
0
pro3ri
21.04.15
✎
12:37
|
Добрый день!
Поправьте меня плз, делаю забивку значения в форму? &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Не ЗначениеЗаполнено(Объект.Менеджер) Тогда Объект.Менеджер= Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().Имя); КонецЕсли; КонецПроцедуры все ок? |
|||
1
pro3ri
21.04.15
✎
12:39
|
чтоб вручную не вносили
|
|||
2
singlych
21.04.15
✎
12:44
|
Наименование пользователя отличается от имени пользователя ИБ. Что будешь делать?
|
|||
3
pro3ri
21.04.15
✎
12:49
|
(2) модуль управл прилож:
Процедура ПередНачаломРаботыСистемы(Отказ) ТекПользователь = РаботаСПользователями.СинхронизацияПользователя(); итд... //////////////////////// Функция СинхронизацияПользователя() Экспорт ТекПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); ИД = ТекПользователь.УникальныйИдентификатор; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Пользователи.Ссылка, | Пользователи.УникальныйИдентификатор |ИЗ | Справочник.Пользователи КАК Пользователи |ГДЕ | Пользователи.УникальныйИдентификатор = &ИД | И НЕ Пользователи.ПометкаУдаления"; Запрос.УстановитьПараметр("ИД", ИД); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Пользователь = Справочники.Пользователи.СоздатьЭлемент(); Пользователь.Наименование = ТекПользователь.Имя; Пользователь.УникальныйИдентификатор = ИД; Пользователь.Записать(); Возврат Пользователь.Ссылка; Иначе ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Возврат ВыборкаДетальныеЗаписи.Ссылка; КонецЦикла; КонецЕсли; КонецФункции как то так; надеюсь понятно... |
|||
4
fisher
21.04.15
✎
13:01
|
А "Объект" - это что? Первоначальное заполнение прикладных объектов принято делать в ОбработкаЗаполнения()
|
|||
5
singlych
21.04.15
✎
13:09
|
(3) а если покопать, наверняка найдется какой-нибудь параметр сеанса ТекущийПользователь ;)
|
|||
6
pro3ri
21.04.15
✎
13:11
|
(4) вот он
http://savepic.ru/6871036.png |
|||
7
pro3ri
21.04.15
✎
13:15
|
(4) мод объекта:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) Менеджер = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().Имя); КонецПроцедуры |
|||
8
pro3ri
21.04.15
✎
13:15
|
так тоже работает!
|
|||
9
fisher
21.04.15
✎
13:19
|
Прелесть в том, что когда нужно будет программно заполнять без открытия формы, ты просто вызовешь метод Заполнить().
Ну а пользователя обычно ищут один раз. При инициализации сеанса. Пишут найденного пользователя в параметр сеанса и потом к нему обращаются. |
|||
10
singlych
21.04.15
✎
13:22
|
Ну и наименование - последнее, по чему стоит искать. А то придет один ИвановИИ, уволится, а потом придет другой ИвановИИ.
Тем более, что в (3) он уже ищется по ИД. |
|||
11
pro3ri
21.04.15
✎
13:26
|
(9) мод упр прил:
Перем ТекПользователь Экспорт; ТекПользователь = РаботаСПользователями.СинхронизацияПользователя(); // мод док: Менеджер = ТекПользователь; как-то так... |
|||
12
fisher
21.04.15
✎
13:27
|
(11) Нет. Правильно через параметры сеанса.
|
|||
13
pro3ri
21.04.15
✎
13:43
|
(12) ок благодарю
|
|||
14
fisher
21.04.15
✎
13:52
|
Почему параметр сеанса? Потому что он доступен на сервере и потому что он инициализируется и во внешнем соединении тоже.
А вот на клиент его правильно закэшировать чуть сложнее. По-хорошему для этого надо использовать функцию клиентского общего модуля с повторным использованием возвращаемых значений, в котором параметр сеанса получается через общий модуль с вызовом сервера. В этом случае при первом получении текущего пользователя будет серверный вызов (к параметру сеанса), в последующем серверных вызовов уже не будет. Для прозрачности использования делается общий модуль, который компилируется везде. Чтобы однообразно получать пользователя независимо от места вызова. А внутри директивами компиляции определяется место вызова - если тонкий клиент, то дергается клиентский кэш, а иначе - напрямую из параметра сеанса берется. |
|||
15
sapphire
21.04.15
✎
13:58
|
(3) Пользователя в параметры сеанса поместите.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |