Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Модуль сеанса

Модуль сеанса
Я
   Mikhail Volkov
 
11.10.17 - 10:12
В модуле сеанса кроме как Процедура УстановкаПараметровСеанса() допускается добавлять свои функции?
Все работают в основном в терминале, но возникла необходимость определять с какого компа зашел пользователь. Нашел функцию http://expert.chistov.pro/public/392980/ вставил ее в свой модуль, в модуль сеанса ее вызов. В файловой копии работает нормально. В sql рабочей - кучу ошибок вываливает на глобальные переменные (их инициализация в модуле приложении). Ладно, перенес функцию в сам модуль сеанса - та же хрень!? Комментирую ее вызов - нормально!
 
 
   silent person
 
1 - 11.10.17 - 10:18
в каком режиме работает конфигурация ? управляемое или обычное приложение ?
   Mikhail Volkov
 
2 - 11.10.17 - 10:23
(1) В обычном Альфа-Авто 4.1
   Ненавижу 1С
 
3 - 11.10.17 - 10:26
Добавьте параметр сеанса
   Mikhail Volkov
 
4 - 11.10.17 - 10:35
(3) Какой?
//Устанавливает параметры сеанса. Запускается перед началом работы системы до вызова остальных стандартных обработчиков

Процедура УстановкаПараметровСеанса()
    
    Пользователь = обОпределитьТекущегоПользователя();
    
    // Пользователь

    ПараметрыСеанса.Пользователь = Пользователь;
    // Организация

    ПараметрыСеанса.Организация = Пользователь.Организация;
    // ПодразделениеКомпании

    ПараметрыСеанса.ПодразделениеКомпании = Пользователь.Подразделение;
    // Компьютер

//    Имя = ПолучитьИмяКомпьютераТО();    //+МВ 10.10.2017 вместо

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

    // РежимРаботыОборудования

    РежимРаботыОборудования = Строка(Комп.НеВключатьОборудованиеПриВходе);
    РежимРаботыОборудования = РежимРаботыОборудования+Строка(Пользователь.РежимИспользованияОборудования);
    ПараметрыСеанса.РежимРаботы = РежимРаботыОборудования;
   Mikhail Volkov
 
5 - 11.10.17 - 10:40
Может рано в модуле сеанса использовать?:
        WSS = Новый COMОбъект("WScript.Shell");
        WSSE = WSS.Environment("Process");

        мИмяКомпьютера = ВРег(WSSE.Item("ClientName"));
   Mikhail Volkov
 
6 - 11.10.17 - 10:42
+ Не, используют же вызов:
Пользователь = обОпределитьТекущегоПользователя();!?
   Тихий омут
 
7 - 11.10.17 - 10:46
(0) Имхается мне, что модуль сеанса выполняется на сервере, поэтому получать ты будешь имя сервера, а не компа, к которого заходят, сам в (4) об этом говоришь.
Тут надо "заходить" с того места, в котором по условиям задачи тебе это имя компа нужно.
   Филиал-msk
 
8 - 11.10.17 - 10:48
(0) > В sql рабочей - кучу ошибок вываливает на глобальные переменные (их инициализация в модуле приложении)

Модуль сеанса про модуль приложения ничего не знает. Вообще. В том числе и про глобальные переменные глобальные переменные типа мИмяКомпьютера.

Больше того, модуль сеанса выполняется на сервере приложений, а не на терминальном сервере. Поэтому верни все обратно в модуль приложения и не парь никому ничего.
   Mikhail Volkov
 
9 - 11.10.17 - 10:54
(7) По условиям задачи пользователь должен зайти по сети, тогда правильно определится его комп, и подключится его локальное оборудование. А пользователь заходит в терминале. Как быть?
   Тихий омут
 
10 - 11.10.17 - 10:58
(9) т.е. тебе надо определить, с какого компа 1сный юзер в терминал зашёл? дак это совсем другая пестня. тут духа смахарба бы вызвать, он может чего и подсказал бы
 
 Рекламное место пустует
   Mikhail Volkov
 
11 - 11.10.17 - 10:59
(9) мИмяКомпьютера - не глобальная, а переменная функции ПолучитьИмяКомпьютераТО(), которую перенес в модуль сеанса
   Mikhail Volkov
 
12 - 11.10.17 - 11:04
(11) -> (8)
(10) Нужно определить зашел ли в базу компьютер кассира с ФР, можно ли чеки бить по ПКО/РКО!?
   Mikhail Volkov
 
13 - 11.10.17 - 12:14
(8) Да, подсказка в самом модуле сеанса:
// Т.к. этот модуль отрабатывает на сервере, то это будет неверным для клиентской сессии, так что в ней переопределим позже
Нашел это место, туда вставил (перенес из модуля сеанса):
Функция ПервоначальнаяИнициализация(ЕстьПраваАдминистратора,ОбнаруженПервыйЗапуск,НеобходимоОбновлениеБазыДанных) Экспорт
    
    Пользователь = ПараметрыСеанса.Пользователь;
    ИмяПользователя = ИмяПользователя();
    ПолноеИмяПользователя = ПолноеИмяПользователя();
    
    // Переопределим текущий компьютер (в клиентской сессии пользователя он может

    // отличным от того что был определен в УстановкаПараметровСеанса)

    Состояние("Обновляем информацию о компьютере ...");
    Имя = мвДоработки.ПолучитьИмяКомпьютераТО();    //+МВ 10.10.2017

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


заработало!
   Тихий омут
 
14 - 11.10.17 - 12:39
(13) мвДоработки.ПолучитьИмяКомпьютераТО() - в этой ф-ции код из (5)?
   Тихий омут
 
15 - 11.10.17 - 12:41
(14) ага, уже нашёл, записал на подкорку
   Mikhail Volkov
 
16 - 11.10.17 - 14:18
(14) Да, от Павла Чистова http://expert.chistov.pro/public/392980/
   Cyberhawk
 
17 - 11.10.17 - 14:19
(16) Тролль? Какого Чистова, если это зеркало ИС? :)
   Mikhail Volkov
 
18 - 11.10.17 - 14:25
(17) На счет авторства не знаю, но работает нормально.
> зеркало ИС - это что?
   Cyberhawk
 
19 - 11.10.17 - 14:33
(18) http://catalog.mista.ru/profile/partner/web/about/
Пролистать можешь до какого-то стремного словосочетания "Аффилиатская витрина"
   Mikhail Volkov
 
20 - 12.10.17 - 16:54
То что комп подключился к базе еще не все. Он может и отвалиться... Как убедиться, что он на месте, подключен, и можно пользоваться его оборудованием?
   Mikhail Volkov
 
21 - 14.10.17 - 05:01
+ (20) Убедиться, что комп на месте, его можно пропинговать. А как проверить что порт не отвалился на сервере, какой командой?
   МимохожийОднако
 
22 - 14.10.17 - 07:41
Попробуй telnet
   Mikhail Volkov
 
23 - 14.10.17 - 08:09
(22) А как ее правильно вставить в 1С, типа как (5)?
   Mikhail Volkov
 
24 - 14.10.17 - 08:13
+ а лучше сделать автоматический мапинг com портов на терминальном сервере http://forum.ru-board.com/topic.cgi?forum=8&topic=27329#13, но не знаю как это вставить в 1С!?
   МимохожийОднако
 
25 - 14.10.17 - 08:37
попробуй Выполнить()
   Mikhail Volkov
 
26 - 16.10.17 - 06:10
(25) Она ничего не возвращает. Мне нужно типа этого:
// Возвращает Истина, если пингуется IP-адрес

//
Функция PingIP_Адреса(IP_Адрес = "", Wss = Неопределено) Экспорт

    Если ПустаяСтрока(IP_Адрес) Тогда
        Возврат Ложь;
    КонецЕсли;
    Если Wss = Неопределено Тогда 
        Wss = Новый COMОбъект("WScript.Shell");
    КонецЕсли;
    Возврат Wss.Run("ping -w 1500 -n 1 " + IP_Адрес, 0, Истина);

КонецФункции// PingIP_Адреса()


Проверил, что комп с ФР не отвалился, далее маппинг порта...
   Mikhail Volkov
 
27 - 16.10.17 - 13:58
Как пинговать еще варианты есть v8: Как средствами 1C проверить ping (Ping monitor)?, а как порты маппить?
   МимохожийОднако
 
28 - 16.10.17 - 14:02
Возможно, есть подсказка в типовых конфигурациях по команде Проверить соединение с торговым оборудованием.
   Mikhail Volkov
 
29 - 16.10.17 - 15:50
(28) В типовых конфигурациях возможно есть, но глубоко их не копал. Кто бы подсказал где именно смотреть!? У меня Альфа-Авто, а в ней все эти дела в черном ящике "Компонента_Рарус"...
   Mikhail Volkov
 
30 - 24.10.17 - 07:32
Перенес установку ПараметрыСеанса.Компьютер по ПолучитьИмяКомпьютераТО() в функцию ПервоначальнаяИнициализация() (13). Далее идет ИнициализацияФункцийВнешнихКомпонент(), подключение ТО. А там опять ПараметрыСеанса.Компьютер по ИмяКомпьютера()!? И в списке активных пользователей у всех компьютер - сервер!?
Это Альфа-Авто где-то переставляет, или на уровне платформы так сделано?
   Тихий омут
 
31 - 24.10.17 - 07:40
(30) точно не платформа, конфа это делает
   МимохожийОднако
 
32 - 24.10.17 - 07:50
(30) Добавь в параметры к имени компьютера имя пользователя. Посмотреть можно в библиотеке подключаемого оборудования. Лучше всего найти толкового системного администратора, который может настроить нормальную переброску портов без участия 1С.
   Mikhail Volkov
 
33 - 24.10.17 - 11:07
(32) Как раз пользователь-главнюк с разных компов входит (а то и вовсе из дома) - не показатель. Мне именно нужен комп, на котором установлен ФР, только с него разрешать подключение ТО. В Альфа-Авто специально сделан справочник Компьютеры, к котором указывается где, что установлено. Но это для сетевого варианта, в RDP похоже не работает!?
В ПервоначальнаяИнициализация() правильно ставлю ПараметрыСеанса.Компьютер, а в ИнициализацияФункцийВнешнихКомпонент() уже сбрасывается в ИмяКомпьютера().
Значит не платформа сбрасывает...
 
 
   Mikhail Volkov
 
34 - 25.10.17 - 10:58
+ А не, ничего не сбрасывает ПараметрыСеанса.Компьютер - верно отладчик показывает. Это в списке активных пользователей у всех компьютер - сервер - неверно показывает. Почему так?
   SSSSS_AAAAA
 
35 - 25.10.17 - 11:11
(34) Имя компа, который подключился по RDP к терминалу, лежит в переменной окружения ClientName и оно при этом отлично от имени компа с терминалом.
   Mikhail Volkov
 
36 - 25.10.17 - 11:18
(35) Эту переменную ClientName в 1С можно посмотреть, или где?
   SSSSS_AAAAA
 
37 - 25.10.17 - 11:40
(36) Решение а в лоб: КомандаСистемы("set > c:\sets.txt") и дальше анализ полученного set.txt
   Шаман
 
38 - 25.10.17 - 11:48
модуль сеанса для запуска 1с . свои функции там не допустимы .

сделай общий модуль , зачем тебе модуль сеанса?
   Mikhail Volkov
 
39 - 25.10.17 - 11:52
(38) Так и сделал см. (13)
Сейчас ПараметрыСеанса.Компьютер - верно отладчик показывает. Но окно активные пользователи - врет!?
   Mikhail Volkov
 
40 - 25.10.17 - 11:59
А еще вопрос: при наличии оборудования на компьютере в Альфа-Авто Сервис/Параметры добавляется вкладка Свойства, на которой есть возможность посмотреть "Параметры оборудования", сделать проверку связи... В типовых конфигурациях так же?
По какому признаку определяется добавлять эту вкладку или нет?
   Mikhail Volkov
 
41 - 25.10.17 - 16:50
Даже 7.7 добавляет эту вкладку http://catalog.mista.ru/public/628914/
   Mikhail Volkov
 
42 - 26.10.17 - 10:04
Этот вопрос в отдельную тему вынес Контроль наличия подключенных устройств


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует