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