POWERED BY RBSOFT

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

> 1С: Предприятие
Дата обновления: 6 сентября 2024 г. Дата публикации: 23 мая 2024 г.

Проблема

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

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

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

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

Решение

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

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

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

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

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

  Возврат мИмяКомпьютера; 
КонецФункции

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

1

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

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

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