РБ-Софт

Содержание

УТ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С старые настройки оборудования будут применены к новому имени компьютера (т.е. RDP_ИмяТерминальногоСеанса ).

Наши решения:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

семнадцать − пятнадцать =

Авторизация
*
*

1 × 2 =

Регистрация
*
*
*

16 + десять =

Генерация пароля

11 − четыре =