Имя: Пароль:
1C
1С v8
Модуль сеанса
0 Mikhail Volkov
 
11.10.17
10:12
В модуле сеанса кроме как Процедура УстановкаПараметровСеанса() допускается добавлять свои функции?
Все работают в основном в терминале, но возникла необходимость определять с какого компа зашел пользователь. Нашел функцию http://expert.chistov.pro/public/392980/ вставил ее в свой модуль, в модуль сеанса ее вызов. В файловой копии работает нормально. В sql рабочей - кучу ошибок вываливает на глобальные переменные (их инициализация в модуле приложении). Ладно, перенес функцию в сам модуль сеанса - та же хрень!? Комментирую ее вызов - нормально!
1 silent person
 
11.10.17
10:18
в каком режиме работает конфигурация ? управляемое или обычное приложение ?
2 Mikhail Volkov
 
11.10.17
10:23
(1) В обычном Альфа-Авто 4.1
3 Ненавижу 1С
 
гуру
11.10.17
10:26
Добавьте параметр сеанса
4 Mikhail Volkov
 
11.10.17
10:35
(3) Какой?
//Устанавливает параметры сеанса. Запускается перед началом работы системы до вызова остальных стандартных обработчиков
Процедура УстановкаПараметровСеанса()
    
    Пользователь = обОпределитьТекущегоПользователя();
    
    // Пользователь
    ПараметрыСеанса.Пользователь = Пользователь;
    // Организация
    ПараметрыСеанса.Организация = Пользователь.Организация;
    // ПодразделениеКомпании
    ПараметрыСеанса.ПодразделениеКомпании = Пользователь.Подразделение;
    // Компьютер
//    Имя = ПолучитьИмяКомпьютераТО();    //+МВ 10.10.2017 вместо
    Имя = ИмяКомпьютера();
    Комп = Справочники.Компьютеры.НайтиПоНаименованию(Имя,Истина);
    Если Комп.Пустая() Тогда
        Комп = Справочники.Компьютеры.СоздатьЭлемент();
        Комп.УстановитьНовыйКод("");
        Комп.Наименование = Имя;
        Комп.Записать();
    КонецЕсли;
    ПараметрыСеанса.Компьютер = Комп.Ссылка; // Т.к. этот модуль отрабатывает на сервере, то это будет неверным для клиентской сессии, так что в ней переопределим позже
    // РежимРаботыОборудования
    РежимРаботыОборудования = Строка(Комп.НеВключатьОборудованиеПриВходе);
    РежимРаботыОборудования = РежимРаботыОборудования+Строка(Пользователь.РежимИспользованияОборудования);
    ПараметрыСеанса.РежимРаботы = РежимРаботыОборудования;
5 Mikhail Volkov
 
11.10.17
10:40
Может рано в модуле сеанса использовать?:
        WSS = Новый COMОбъект("WScript.Shell");
        WSSE = WSS.Environment("Process");

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

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

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

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

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

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