Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 13:55

Автор документа

Автор Smokez, 31 мая 2015, 18:33

0 Пользователей и 1 гость просматривают эту тему.

Smokez

Доброго времени суток.
Интересует такой вопрос. Требуется чтобы при создании документа в реквизит "Автор" подставлялось имя пользователя создавшего документ.
Создал справочник "Пользователи",  параметр сеанса "ТекущийПользователь", в модуль сеанса поместил код:

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя());
Если ТекПользователь.Пустая() Тогда
НовПользователь = Справочники.Пользователи.СоздатьЭлемент();
НовПользователь.Наименование = ИмяПользователя();
НовПользователь.Записать();
ТекПользователь = НовПользователь.Ссылка;
КонецЕсли;
ПараметрыСеанса.ТекущийПользователь = ТекПользователь;
КонецПроцедуры


В документе "Приходная накладная" код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.Автор = ПараметрыСеанса.ТекущийПользователь();
КонецПроцедуры


ошибок не выдает, но и реквизит "автор" пуст
Подскажите в чем проблема??

дфтын

ПараметрыСеанса.ТекущийПользователь();
на
ПараметрыСеанса.ТекущийПользователь;

Smokez

Цитата: дфтын от 31 мая 2015, 18:35
ПараметрыСеанса.ТекущийПользователь();
на
ПараметрыСеанса.ТекущийПользователь;


Тогда пишет что переменная "ПараметрСеанса" не определена
Добавлено: 31 мая 2015, 19:19


Ошибся... Сделал как вы посоветовали, но реквизит все равно пустой

дфтын

Эм
ок
а что такое по вашему ТекущийПользователь ?
Вы его где сделали?
Добавлено: 31 мая 2015, 19:54


Вы точно уверены что оно в параметре сеанса? мне даже интересно стало. давайте доступ гляну. все равно скучно

cska-fanat-kz

значит типы у Автора и параметры сеанса - не совпадают...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

AnnaSnova

Цитата: Smokez от 31 мая 2015, 18:33&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Объект.Автор = ПараметрыСеанса.ТекущийПользователь; КонецПроцедуры

Доброе время суток!
Воспользовалась кодом. Мне нужно, чтобы на форме отображался автор бизнес-процесса. На деле выходит, автор1 создает процесс, я его открываю-вижу себя автором, другой чел открывает-он отображается как автор процесса,хотя в списке процессов отображается автор1.

Конфа Управление торговлей для Казахстана 3.0
Что делаю не так? Может есть другой вариант?

vitasw

Для начала предлагаю сначала думать, потом делать, потом спрашивать. У вас с первым пунктом пока не складывается.
ПриСозданииНаСервере (почитайте хотя бы в СП в каких случаях этот обработчик вызывается) - вызывается при создании формы, не объекта - а формы. Поэтому у вас всегда при открытии формы, как вы и прописали, значится в качестве автора пользователь который открыл форму.
Нужно в том же обработчике анализировать объект на предмет новый/не новый и прописывать автора только в случае нового объекта.

AnnaSnova

Вопрос решился таким путем.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   Если НЕ ЗначениеЗаполнено(Объект.Автор) Тогда
      Объект.Автор=Пользователи.ТекущийПользователь();
   КонецЕсли;

КонецПроцедуры

cska-fanat-kz

можно и так но обычно проверяют
    Если Параметры.Ключ.Пустая() Тогда
    ...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Цитата: cska-fanat-kz от 04 дек 2015, 09:40можно и так но обычно проверяют
    Если Параметры.Ключ.Пустая() Тогда
    ...

Однозначно.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск