Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ЗАвершение работы в программе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
kosalex
Добрый день. В модуле сеанса пишу:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
    ТекПользователь = Справочники.Сотрудники.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь().Имя);
    Если ЗначениеЗаполнено(ТекПользователь) Тогда
        ПараметрыСеанса.ТекущийПользователь = ТекПользователь;
    Иначе
        Если НЕ РольДоступна("Директор") Тогда
              Модуль.ЗакрытьПрограмму(); // ОШИБКА
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры



Ошибка:
{МодульСеанса(7)}: Метод объекта не обнаружен (ЗакрытьПрограмму)
Модуль.ЗакрытьПрограмму();

ОбщийМодуль - Модуль: Клиент,Сервер.
&НаКлиенте
Процедура ЗакрытьПрограмму() Экспорт
ЗавершитьРаботуСистемы();    
КонецПроцедуры


Как завершить работу программы если не найден пользователь в справочнике?
Vofka
Просто напишите ЗавершитьРаботуСистемы();
kosalex
Цитата(Vofka @ 21.03.14, 16:56) необходимо зарегистрироваться для просмотра ссылки
Просто напишите ЗавершитьРаботуСистемы();

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


ОШИБКА:
{МодульСеанса(7,6)}: Процедура или функция с указанным именем не определена (ЗавершитьРаботуСистемы)
<<?>>ЗавершитьРаботуСистемы(); (Проверка: Сервер)
alex040269
Это нужно сделать в ПередНачаломРаботыСистемы в модуле приложения
kosalex
Цитата(alex040269 @ 21.03.14, 17:04) необходимо зарегистрироваться для просмотра ссылки
Это нужно сделать в ПередНачаломРаботыСистемы в модуле приложения

Это сделать,что это? Проверку найден ли пользователь в справочнике?

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


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

&НаСервере
Функция ПроверитьРоль() Экспорт
    Если РольДоступна("Директор") Тогда
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции



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



ОШИБКА:{МодульУправляемогоПриложения(2)}: Метод объекта не обнаружен (ПолучитьТекущегоПользователя)
ТекущийПользователь = МойМодуль.ПолучитьТекущегоПользователя();


Убрал галку "Клиент" с общего модуля,заработало.

Скажите, почему с галкой "Клиент" не работало? ведь директивы стоят!
logist
А Вы не пробовали открыть типовое решение, и посмотреть как там это реализовано.

Сначала отрабатывает модуль управляемого приложения, а затем модуль сеанса. Поэтому искать пользователя надо из управляемого приложения - найден - тогда устанавливать параметр сеанса, не найден тогда завершать работу.
kosalex
Цитата(logist @ 21.03.14, 17:26) необходимо зарегистрироваться для просмотра ссылки
А Вы не пробовали открыть типовое решение, и посмотреть как там это реализовано.

Сначала отрабатывает модуль управляемого приложения, а затем модуль сеанса. Поэтому искать пользователя надо из управляемого приложения - найден - тогда устанавливать параметр сеанса, не найден тогда завершать работу.



при трассировке, сначала отрабатывает модуль сеанса, а потом модуль управляемого приложения, по моему так.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.