При работе в 1С:Предприятие 3.0 через терминальный сервер (RDP) часто возникает ситуация, когда программа перестает различать физические рабочие места пользователей. В справочнике Рабочие места создается одна запись (например, «Программист» или имя сервера), к которой «привязываются» все подключаемые устройства: сканеры штрихкода, ККТ, эквайринговые терминалы. В результате настройки оборудования одного пользователя начинают влиять на другого, порты блокируются, а работа склада или кассы останавливается.
Рассмотрим подробно, почему это происходит и как правильно настроить систему, чтобы каждое терминальное соединение имело свое уникальное рабочее место.
Для начала проанализируем механизм идентификации. По умолчанию 1С идентифицирует рабочее место по связке «Имя пользователя ОС + Имя компьютера». Когда пользователи заходят на терминальный сервер, для системы «именем компьютера» становится сетевое имя самого сервера (например, SERVER-SRV). Если несколько человек зашли под разными учетными записями, но 1С не настроена на работу в RDP, она может ошибочно привязать их к одному идентификатору, особенно если первый зашедший пользователь обладал правами администратора или настраивал оборудование.
Выясним причину такого поведения: без специальной настройки 1С не запрашивает у операционной системы имя удаленного клиента (физического ПК, с которого пришел пользователь). В итоге срабатывает принцип «кто первый встал, того и тапки» — создается одна запись в справочнике РабочиеМеста, и все последующие сессии используют её же.
Самое важное решение заключается в изменении логики формирования идентификатора рабочего места. Разберем по шагам, где находится нужная настройка:
Что это дает? При включении этой опции БиблиотекаПодключаемогоОборудования (БПО) начинает запрашивать переменную окружения CLIENTNAME. Теперь рабочее место будет формироваться по шаблону: ИмяПользователя_ИмяЛокальногоПК. Это гарантирует, что даже если пользователь Иванов зайдет с компьютера SKLAD-1, а затем с компьютера HOME-PC, 1С создаст для него два разных рабочих места, что позволит корректно разделить проброшенные порты.
После включения флажка «Использовать RDP» старые, «неправильные» записи в справочнике никуда не исчезнут сами собой. Нам необходимо выполнить «генеральную уборку», чтобы система создала новые связи.
Проанализируем алгоритм очистки:
Рабочие места.CLIENTNAME нет, и создаст новое, корректное рабочее место.К сожалению, после разделения рабочих мест настройки оборудования (например, номер COM-порта сканера) придется задать заново для каждого нового рабочего места — для этой задачи подойдёт система фискализации на онлайн-кассах с очередью печати. Это происходит потому, что настройки в справочнике ПодключаемоеОборудование жестко привязаны к ссылке на конкретное РабочееМесто.
Рассмотрим пример настройки сканера для нового РМ:
Ivanov (PC-OFFICE-1)).COM3).Поскольку теперь у каждого пользователя свое РМ, настройки портов не будут перетирать друг друга, даже если физически у всех сканеры «сидят» на одном и том же номере порта в их локальных сессиях.
Иногда даже включение галочки RDP не помогает. Разберем ситуацию: если в диспетчере задач на сервере в колонке «Имя клиента» пусто, 1С не сможет получить данные для разделения. Это может быть связано с настройками безопасности терминального сервера или использованием специфических тонких клиентов (Linux/на базе браузеров).
Проверить текущее значение можно через простую команду в терминале Windows:
set CLIENTNAME
Если система возвращает «Console» или пустоту, необходимо обратиться к системному администратору для настройки передачи имен клиентов в RDP-сессию. В самой 1С программно это выглядит примерно так (упрощенный пример логики БПО):
Функция ПолучитьИмяТекущегоРабочегоМеста()
ИмяКомпьютера = ПолучитьИмяКомпьютера();
Если НастройкаИспользоватьRDP Тогда
ИмяКлиентаRDP = ПолучитьПеременнуюОкружения("CLIENTNAME");
Если ЗначениеЗаполнено(ИмяКлиентаRDP) Тогда
Возврат ИмяПользователя() + " (" + ИмяКлиентаRDP + ")";
КонецЕсли;
КонецЕсли;
Возврат ИмяПользователя() + " (" + ИмяКомпьютера + ")";
КонецФункции
При использовании RDP крайне важно использовать современные драйверы оборудования с поддержкой Native Api — для стабильности подойдёт обработка подключения и обслуживания онлайн-касс в RDP. Старые компоненты, требующие регистрации через regsvr32, часто работают нестабильно в многопользовательской среде.
Если у вас несколько пользователей работают с одной физической кассой (ККТ), рассмотрите возможность использования сетевого драйвера (TCP/IP). В этом случае касса подключается к сети организации напрямую, и в 1С на каждом рабочем месте указывается её IP-адрес — есть готовое решение для сетевой печати чеков через RDP. Это полностью снимает проблему «проброса» портов через RDP и делает работу системы значительно надежнее.
Таким образом, правильная настройка идентификации рабочих мест — это фундамент стабильной работы торгового оборудования в терминальной среде. Не пренебрегайте опцией «Использовать RDP», чтобы избежать хаоса в настройках и конфликтов оборудования.