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

27.03.14

Разработка - Универсальные функции

Видел много вариантов реализации функции для получения имени компьютера для работы с торговым оборудованием в терминальной сессии. Данный вариант интересен на мой взгляд тем что нет необходимости перенастраивать привязки ТО при переключении между терминальной и локальной сессией запуска 1С. По русски говоря, как бы вы не запустили 1С: локально с доступом к базе на общем сетевом ресурсе или в терминальной сессии ваши привязки не "рухнут"

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Пример работы функции
.epf 6,19Kb
6 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой
// Функция возвращает строку c именем компьютера для нужд торгового оборудования.
//
// Возвращаемое значение:
// Строка - имя компьютера для торгового оборудования.
//
Функция ПолучитьИмяКомпьютераТО() Экспорт
	// Попытка получения имени компьютера из терминальной сессии
	WshShell = Новый COMОбъект("WScript.Shell"); 
	WshSysEnv = WshShell.Environment("Process"); 
	ИмяКомпьютераТО = ВРег(WshSysEnv.Item("ClientName"));
	
	Если ПустаяСтрока(ИмяКомпьютераТО) Тогда
		// Скорее всего локальный запуск т.к. переменная "ClientName" не определена
		// просто берем имя компьютера стандартной ф-цией платформы
		ИмяКомпьютераТО = ВРег(ИмяКомпьютера());
	КонецЕсли;
	
	Возврат ИмяКомпьютераТО;
КонецФункции // ПолучитьИмяКомпьютераТО()

Вступайте в нашу телеграмм-группу Инфостарт

торговое оборудование

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4064    Abysswalker    10    

46

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    7606    DeerCven    15    

61

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    52423    dimanich70    84    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7647    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    66789    atdonya    31    

72

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9558    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Re:аниматор 337 28.03.14 03:24 Сейчас в теме
Видел много вариантов реализации функции для получения имени компьютера для работы с торговым оборудованием в терминальной сессии.


Не знаю про какие "много вариантов", но лично я уже 5 лет назад такое сделал :-) привязку настроек ТО в терминальной сессии к локальному компьютеру, т.к. 3 терминальных сервера с 1 локального компа ...
2. Berrimor 198 28.03.14 05:05 Сейчас в теме
видел на этом форуме такие варианты:

1. мИмяКомпьютера = ВРег(ИмяКомпьютера()+"\\"+ИмяПользователя())
2. WshShell = Новый COMОбъект("WScript.Network"); мИмяКомпьютера = ВРег(ИмяКомпьютера()+"\\"+WshShell.UserName)

считаю их менее удачными
3. CheBurator 3233 02.04.14 04:33 Сейчас в теме
осталось уточнить - возвращается имя компа, ПРИКОННЕКТИВШЕГОСЯ к сессии (например оборванной день назад)..?
4. Berrimor 198 02.04.14 04:56 Сейчас в теме
(3) похоже именно так :) не проверял, но подобные ситуации (незакрытая терминальная сессия) решаются другими способами, обычно на уровне администрирования терминального сервера, например установкой предельного времени жизни неактивной сессии
5. Berrimor 198 02.04.14 05:02 Сейчас в теме
Да, еще один момент: обнаружил что на некоторых компах локально выдает не пустое значение WshSysEnv.Item("ClientName") а "CONSOLE". Причинно следственной связи между настройками ОС, ее версией и прочим не уловил :), одним словом для корректной работы в тексте приведенной ф-ции необходимо изменить:

ПустаяСтрока(ИмяКомпьютераТО) на ПустаяСтрока(ИмяКомпьютераТО) ИЛИ ВРег(ИмяКомпьютераТО) = "CONSOLE"
6. PlatonStepan 38 09.06.14 10:58 Сейчас в теме
у меня взлетел такой вариант:
///////Имя клиента и компьютера запустившего сеанс
всШелл = Новый COMОбъект("WScript.Shell");
ИмяСеанса = всШелл.ExpandEnvironmentStrings("%SESSIONNAME%");
ИмяКлиента = всШелл.ExpandEnvironmentStrings("%CLIENTNAME%");
Сообщить(?(нрег(ИмяСеанса) = "console", ИмяКомпьютера(), ИмяКлиента));
Для отправки сообщения требуется регистрация/авторизация