Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Управление торговым оборудованием при размещении базы на сервере терминалов          
Vofka Подменю пользователя
сообщение 04.08.12, 10:05
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

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

Как известно, стандартная подсистема торгового обрудования в УТ10 регистрирует оборудование "на компьютер". В УТ11 сделано лучше, но на УТ10 работает еще достаточное количество организаций.

Такой подход, отчасти, логичен, так как на одном компе могут работать несколько смен кассиров, каждый из которых работает под своим пользователем 1С - и все решается одной настройкой.

Но если же база целиком и полностью крутится на серваке (пользователи через Цитрикс/удаленный рабочий стол подключаются к серверу и работают там) - то возникают проблемы. Причем, порты пробрасываются без проблем, и у кого оборудование реально подключенно - у них проблем нет. Но у остальных - при входе в систему начинается ругань на тему невозможности открыть порт и т.п.

Хорошо, что все проблемы разруливаются с эффективностью и качеством хорошего хирурга - одним выверенным движением. Главное - знать где резать.

Итак, приступим:

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

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

Меньше слов, больше дела:

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

Если мИмяКомпьютера = Неопределено Тогда
  ДопИмя = "";
  
  // получим имя клиентского компа
  Попытка
  objShell = Новый COMОбъект("WScript.Shell");
  ДопИмя = ДопИмя + ":" + objShell.RegRead("HKEY_CURRENT_USER\Volatile Environment\CLIENTNAME");
  Исключение
  КонецПопытки;
  
  //получим параметры сервера
  Попытка
  objNet = Новый COMОбъект("WScript.NetWork");
  ИмяСервераТерминалов = objNet.ComputerName;
  ИмяПользователяWindows = objNet.UserName;
  
  ДопИмя = ДопИмя + "@" + ИмяСервераТерминалов + "\" + ИмяПользователяWindows;
  Исключение
  КонецПопытки;
  
  мИмяКомпьютера = ВРЕГ(ИмяКомпьютера() + ДопИмя);
КонецЕсли;


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

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


Пример излишне брутален, зато отлично показывает что откуда получать.

Все, что нужно - иметь Windows Script Host (что это такое и с чем его едят - можно прочитать, например, здесь: [необходимо зарегистрироваться для просмотра ссылки], который уже давно идет в винде"по дефолту".

Upd В Win7 ключ реестра HKCU\Volatile Environment:CLIENTNAME нужно смотреть как HKCU\Volatile Environment\xx:CLIENTNAME, где xx - номер терминальной сессии. В качестве решения можно использовать переменную среды:

objShell = Новый COMОбъект("WScript.Shell");
ДопИмя = ДопИмя + ":" + objShell.Environment("Process").Item("CLIENTNAME");


[необходимо зарегистрироваться для просмотра ссылки]

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 8:03
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!