УТ10, КА1 в RDP-сеансе. Подключение торгового оборудования к терминальным сеансам

Проблема

В конфигурациях «1С:Управление торговлей 10.x» и «1С:Комплексная автоматизация 1.» при работе в терминальном сеансе Windows Server нет возможности привязать торговое оборудование к имени сеанса.

Привязка в типовом коде происходит только к имени компьютера, на котором запущен клиент 1С. В данном случае — это имя терминального сервера.

В результате этого драйверы торгового оборудование всех пользователей загружаются у всех сеансов. Это обычно приводит к конфликтам в работе оборудования. Все пользователи, кроме кассиров будут наблюдать периодически сообщения об ошибках при попытке открыть кассовые документы, поскольку при открытии документов происходит безуспешная попытка подключения к ККМ.

Пример:

В базе 1С работает 10 менеджеров, 3 бухгалтера и 2 кассира, то есть 15 пользователей.

У кассиров подключены по одному ККМ. В результате запуска 1С у любого из пользователей будет подгружаться по 2 драйвера ККМ. И при этом только у кассиров будет удачная попытка подключения, поскольку только у них есть оборудование. У остальных пользователей будет выводиться ошибка подключения к ККМ, но драйверы будут все время загружены в память сервера.

Давайте подсчитаем:

15 пользователей загрузят по 2 драйвера ККМ — это 30 экземпляров драйвера ККМ в памяти сервера, из которых только 2 экземпляра реально работают.

При работе с продуктом «РБ-Софт: Сервер ККМ» кассир может ошибочно отправить печать чека на чужую кассу. Поэтому при использовании «Сервера ККМ» в условиях терминальных сеансов такая доработка является обязательной.

Решение

Решение очень простое. Надо изменить всего лишь одну функцию ПолучитьИмяКомпьютераТО() в модуле обработки ТОСервер.

ПолучитьИмяКомпьютераТО() Типовой код

// Функция возвращает строку c именем компьютера для нужд торгового оборудования. // // Возвращаемое значение: // Строка - имя компьютера для торгового оборудования. // Функция ПолучитьИмяКомпьютераТО() Экспорт
 Если мИмяКомпьютера = Неопределено Тогда
   мИмяКомпьютера = ВРег(ИмяКомпьютера());
 КонецЕсли;
 Возврат мИмяКомпьютера;
 КонецФункции // ПолучитьИмяКомпьютераТО()

ПолучитьИмяКомпьютераТО() Новый код

 Функция ПолучитьИмяКомпьютераТО() Экспорт
 Если мИмяКомпьютера = Неопределено Тогда 
   WshShell = Новый COMОбъект("WScript.Shell"); 
   ИмяКомпьютераКлиента = WshShell.expandEnvironmentStrings("%CLIENTNAME%"); 
   ИмяСессии = WshShell.expandEnvironmentStrings("%SESSIONNAME%"); 
   Если ИмяСессии="Console" Тогда 
                     //Имя Компьютера будет равно имени терминального сервера
                     //или имени рабочей станции, если запускали 1С не в терминальном сеансе
          мИмяКомпьютера = ВРег(ИмяКомпьютера());  //Получили имя сервера
   Иначе //Терминальный клиент 
     мИмяКомпьютера = "RDP_"+ИмяКомпьютераКлиента; 
   КонецЕсли; 
 КонецЕсли; 

 Возврат мИмяКомпьютера;
КонецФункции В результате в настройке торгового оборудования увидим примерно такую картину.

1

Перенастройка торгового оборудования

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

Для быстрой перенастройки торгового оборудования рекомендуем открыть на редактирование форму списка регистра сведений «Торговое оборудование». В поле «ИмяКомпьютера» записать новое значение имени компьютера. После запуска 1С старые настройки оборудования будут применены к новому имени компьютера (т.е. RDP_ИмяТерминальногоСеанса ).

Совпадений по запросу " "

    Совпадений по запросу "" не найдено