Имя: Пароль:
1C
 
УТ 10.3 Работа с оборудованием в терминальном режиме
0 ilyich
 
08.04.11
11:35
в 2010 году подобный вопрос рассматривался, но как-то четкого ответа я не вижу на форуме, поэтому пришлось капать самому.
Проблема в том что, при подключении оборудования, в регистр сведений "Торговое оборудование" в измерение "Компьютер" пишется имя компьютера
и далее все отборы происходят по имени компьютера. Если мы работаем в терминальном режиме то имя компьютера может быть одно и тоже, а "пользователь 1С" разный, тут то и возникают проблемы.

В итоге решил сделать так:

Выполнить глобальный поиск строки:
ПолучитьСерверТО().ПолучитьИмяКомпьютераТО()
заменить везде эту строку на строку:
СокрЛП(ПараметрыСеанса.ТекущийПользователь.Наименование)

Пример:
нашли строку
Запрос.УстановитьПараметр("Компьютер", ПолучитьСерверТО().ПолучитьИмяКомпьютераТО());
нужно исправить на
Запрос.УстановитьПараметр("Компьютер", СокрЛП(ПараметрыСеанса.ТекущийПользователь.Наименование));

Заметка:
Имена пользователей не должны превышать 100 символов т.к. поле "Компьютер" в регистре сведений ТорговоеОборудование имеет длину 100.
а то мало ли что )).

Вопрос, какие ваши предложения по решению проблемы? Кто сталкивался с этим?
1 vis_tmp
 
08.04.11
11:40
Удобнее заменить не на имя пользователя, а на имя локального компьютера
2 vis_tmp
 
08.04.11
11:41
P.S. Намёк: его можно получить в терминальной сессии.
3 simol
 
08.04.11
11:45
Может не "заменить везде", а поправить функцию ПолучитьСерверТО().ПолучитьИмяКомпьютераТО() ?
4 ilyich
 
08.04.11
12:18
(2) пожалуйста напиши как это сделать и как потом отличать терминальную сессию от обычной.
(3) согласен, я погорячился ))))) Правка функции  ПолучитьИмяКомпьютераТО() в модуле обработке "ТОСервер"

Есть еще один касяк, например драйвер сканера шк похоже также просит параметр имякомпьютера, т.к. сейчаз попробовали сделать с подстановкой имени пользователя вместо компьютера, не пашет.
5 vis_tmp
 
08.04.11
12:41
(4) Вот так:

мИмяКомпьютера = Неопределено;
       
WSS = Новый COMОбъект("WScript.Shell");
WSSE = WSS.Environment("Process");

мИмяКомпьютера = ВРег(WSSE.Item("ClientName"));
6 ilyich
 
08.04.11
13:15
Всем спасибо, общими стараниями все получилось, в итоге что нужно для работы например сканера ШК в терминале:
Зайти в обработку "ТОСервер", найти функцию ПолучитьИмяКомпьютераТО()
и заменить ее на это:

Функция ПолучитьИмяКомпьютераТО() Экспорт

   //Если мИмяКомпьютера = Неопределено Тогда
   //    мИмяКомпьютера = ВРег(ИмяКомпьютера());
   //КонецЕсли;

   //Возврат мИмяКомпьютера;

   мИмяКомпьютера = Неопределено;
           
   WSS = Новый COMОбъект("WScript.Shell");
   WSSE = WSS.Environment("Process");

   мИмяКомпьютера = ВРег(WSSE.Item("ClientName"));    
   
   Возврат мИмяКомпьютера;
   
КонецФункции // ПолучитьИмяКомпьютераТО()
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.