Рабочее место в 1С 8.3: откуда программа знает, какой это компьютер

· 9 мин

Содержание

Идентификатор рабочего места в 1С 8.3 хранится в двух местах. На стороне клиента — в профиле пользователя Windows: платформа генерирует уникальный ИдентификаторКлиента (UUID) и держит его в каталоге настроек 1С. На стороне базы данных — в справочнике «Рабочие места» типовой конфигурации, где этому UUID сопоставлены имя компьютера и подключённое оборудование.

Типичная ситуация: кассир пересел за тот же компьютер под другой учётной записью Windows, и фискальный регистратор «пропал» из настроек. Оборудование никуда не делось: программа просто увидела новое рабочее место. Ниже разобрано, где лежит каждая часть этой связки, как её проверить и что делать, когда она рвётся.

Что такое «рабочее место» с точки зрения платформы и конфигурации

Слово «рабочее место» в 1С означает две разные вещи, и их полезно не путать.

  • 🖥 Рабочее место в конфигурации. Элемент справочника РабочиеМеста в типовых решениях на БСП и библиотеке подключаемого оборудования (БП 3.0, УТ 11, Розница, УНФ, КА, ERP). К нему привязаны кассы, сканеры, весы, эквайринговые терминалы.
  • 🔑 Рабочее место в лицензировании. Компьютер (или терминальный сеанс), на котором запущен клиент 1С. Платформа считает по ним клиентские лицензии.

Первое — запись в базе данных, у неё есть ссылка, код и реквизиты. Второе — понятие платформы, отдельной записи «рабочее место» в базе для него нет. Связывает их одно: обе вещи определяются на клиенте, при запуске сеанса.

Как конфигурация узнаёт своё рабочее место при старте:

  1. Клиент получает системную информацию: имя компьютера и ИдентификаторКлиента.
  2. Конфигурация ищет в справочнике «Рабочие места» элемент с таким идентификатором.
  3. Если элемент найден — он становится текущим рабочим местом сеанса (в БСП это параметр сеанса РабочееМестоКлиента).
  4. Если нет — создаётся новый элемент, обычно с наименованием по имени компьютера.

Отсюда главная практическая мысль: рабочее место конфигурации определяется не именем компьютера, а идентификатором клиента. Имя компьютера — лишь подпись для человека.

Идентификатор клиента на компьютере: профиль, реестр и каталоги 1С

ИдентификаторКлиента создаётся платформой при первом запуске клиента под конкретной учётной записью Windows и сохраняется в профиле этого пользователя. Реестр Windows для этого платформа не использует: настройки клиента 1С 8.3 живут в файлах.

Каталоги, которые относятся к профилю 1С:

КаталогЧто там лежит
%APPDATA%\1C\1CEStart\ibases.v8i — список баз, 1CEStart.cfg — настройки стартера
%APPDATA%\1C\1cv8\пользовательские настройки клиента, подкаталоги по идентификаторам баз
%LOCALAPPDATA%\1C\1cv8\кэш конфигураций, подкаталоги с именами-UUID баз
C:\ProgramData\1C\licenses\файлы программных лицензий .lic, общие для всех пользователей

Чтобы посмотреть сам идентификатор, проще всего выполнить код на клиенте — например, во внешней обработке или в режиме отладки:

&НаКлиенте
Процедура ПоказатьИдентификатор(Команда)
	Инфо = Новый СистемнаяИнформация;
	Сообщить("Компьютер: " + ИмяКомпьютера());
	Сообщить("Идентификатор клиента: " + Инфо.ИдентификаторКлиента);
	Сообщить("Платформа: " + Инфо.ВерсияПриложения);
КонецПроцедуры

Запустите эту процедуру под двумя разными пользователями Windows на одном компьютере — идентификаторы будут разными. Это и объясняет историю с кассиром из вступления.

Очистка каталогов %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8 — частый совет при «глюках» интерфейса. Делайте её при закрытой 1С. После этого платформа может выдать клиенту новый идентификатор, и конфигурация заведёт новое рабочее место без настроек оборудования.

Каталог C:\ProgramData\1C\licenses к рабочим местам конфигурации отношения не имеет. Его трогают только при работе с лицензиями, и удалять оттуда файлы без резервной копии нельзя: активированную лицензию потом придётся восстанавливать резервным пин-кодом.

Файловый вариант базы: где искать рабочие места внутри данных

В файловой базе всё содержимое лежит в одном файле 1Cv8.1CD. Справочник «Рабочие места» там — обычная таблица, но открывать её внешними утилитами нет смысла: смотреть и править её нужно из самой 1С.

Где открыть список рабочих мест в типовых конфигурациях:

КонфигурацияГде искать
БП 3.0Администрирование → Подключаемое оборудование, ссылка на список рабочих мест в форме
УТ 11, КА, ERPраздел НСИ и администрирование, группа настроек «РМК и оборудование» → «Подключаемое оборудование»
Любая конфигурацияВсе функции → Справочники → Рабочие места (команда «Все функции» включается в параметрах: Сервис и настройки → Параметры, флажок «Отображать команду “Все функции”»)

В меню «Все функции» справочник открывается всегда, даже если в разделах интерфейса ссылки на него нет. Это самый надёжный способ.

В форме «Подключаемое оборудование» обычно есть отбор по рабочему месту, и по умолчанию в нём стоит текущее. Если список оборудования вдруг пуст, первым делом снимите этот отбор: часто выясняется, что всё оборудование на месте, просто привязано к другому, старому рабочему месту этого же компьютера.

Что хранит элемент справочника:

  • 📌 Наименование — обычно имя компьютера, его можно переименовать вручную, на работу это не влияет;
  • 📌 Идентификатор клиента — тот самый UUID с клиента;
  • 📌 Имя компьютера — для справки;
  • 📌 связанное оборудование — на рабочее место ссылаются элементы справочника «Подключаемое оборудование».

Подключаемое оборудование хранит ссылку на рабочее место у себя, а не наоборот. Поэтому при «потере» кассы правится карточка оборудования, а не карточка рабочего места.

Клиент-серверный вариант: SQL-таблицы и данные кластера

В клиент-серверной базе справочник «Рабочие места» лежит в СУБД (MS SQL Server или PostgreSQL) в таблице с техническим именем вида _Reference123. Цифры у каждой базы свои. Узнать точное имя можно кодом на сервере:

&НаСервере
Процедура НайтиТаблицуРабочихМест()
	Структура = ПолучитьСтруктуруХраненияБазыДанных(
		ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве("Справочник.РабочиеМеста"));
	Для Каждого Строка Из Структура Цикл
		Сообщить(Строка.Метаданные + " → " + Строка.ИмяТаблицыХранения);
	КонецЦикла;
КонецПроцедуры

Функция ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве есть в конфигурациях на БСП. В других решениях передайте массив вручную: Массив = Новый Массив; Массив.Добавить("Справочник.РабочиеМеста").

Таблицу из SQL можно читать для отчётов и аудита. Не редактируйте её запросами UPDATE/DELETE в обход 1С: платформа не узнает об изменениях, а ссылки из справочника оборудования останутся битыми.

Помимо справочника, в базе есть служебные таблицы платформы с пользовательскими настройками: _CommonSettings, _SystemSettings, _FrmDtSettings, _RepSettings. Это хранилища настроек форм и отчётов по пользователям. Рабочих мест конфигурации в них нет, но в них оседают настройки интерфейса, которые пользователь иногда путает с «настройками своего компьютера».

На сервере 1С сведения о текущих сеансах видны в консоли кластера. Для каждого сеанса указан компьютер, с которого он открыт, и приложение (тонкий клиент, конфигуратор, веб-клиент). Данные о кластере хранятся в каталоге службы srvinfo (файл реестра кластера 1CV8Clst.lst), но рабочих мест конфигурации там тоже нет — только сеансы, соединения и списки баз.

Лицензии и привязка к оборудованию компьютера

Программная лицензия 1С при активации привязывается к параметрам компьютера: составу оборудования и сведениям об операционной системе. Файл активированной лицензии сохраняется в C:\ProgramData\1C\licenses\ на компьютере, где её активировали — на клиенте или на сервере 1С.

Как платформа считает рабочие места для лицензий:

  • 💻 несколько сеансов, запущенных с одного компьютера, занимают одну клиентскую лицензию;
  • 🖧 на терминальном сервере каждый терминальный сеанс — отдельное рабочее место, и лицензии нужны на каждого одновременно подключённого пользователя;
  • 🌐 веб-клиент и тонкий клиент через веб-сервер тоже занимают лицензии, они получаются на сервере 1С или веб-сервере.

Когда меняется оборудование компьютера (замена материнской платы, переустановка Windows, перенос виртуальной машины на другой хост), программная лицензия может перестать подходить. Платформа тогда сообщает, что лицензия не найдена, и предлагает активацию. Восстановление делают через тот же мастер получения лицензии с резервным пин-кодом из комплекта.

Без действующей лицензии платформа не запустит базу, «демо-режима» у коммерческой версии нет. Исключение — учебная версия платформы.

На сервере посмотреть, какие лицензии заняли сеансы, можно в консоли кластера или командой утилиты администрирования:

rac session list --cluster=<UUID кластера> --licenses

UUID кластера выдаёт rac cluster list. По остальным параметрам смотрите справку rac help session.

Связь с рабочим местом конфигурации здесь одна: оба понятия зависят от того, какой компьютер и какой профиль запустили клиент. Лицензия при этом не знает про справочник «Рабочие места», а справочник — про лицензии.

Поиск дублей и сломанной привязки рабочих мест

Сбой почти всегда выглядит одинаково: оборудование подключено, но на конкретном компьютере 1С его не видит. Или в списке рабочих мест накопилось пять элементов с одним и тем же именем компьютера.

Диагностика: выберите симптом

Порядок разбора дублей:

  1. Откройте справочник «Рабочие места» через «Все функции».
  2. Включите в списке видимость колонок с идентификатором клиента и именем компьютера (через настройку формы списка).
  3. На проблемном компьютере, под нужным пользователем Windows, получите текущий ИдентификаторКлиента.
  4. Найдите элемент с этим идентификатором — это живое рабочее место. Переименуйте его понятно: «Касса 2, Петрова».
  5. Откройте каждое подключаемое оборудование этого компьютера и укажите в нём живое рабочее место.
  6. Остальные элементы с тем же именем компьютера пометьте на удаление, а удаление выполните через Администрирование → Обслуживание → Удаление помеченных объектов (в БП 3.0; в других решениях раздел обслуживания называется похоже).

Перед удалением помеченных объектов платформа проверит ссылки. Если на старое рабочее место ещё ссылается оборудование, удаление не пройдёт — это удобная проверка, что вы ничего не забыли перепривязать.

Как не терять рабочие места в будущем

Привязка ломается от одних и тех же действий. Их немного, и почти все управляемы.

  • 🛡 Свой профиль Windows на каждого кассира. Общая учётная запись на смену удобна, но смешивает настройки разных людей.
  • 🛡 Чистить кэш выборочно. При проблемах с интерфейсом удаляйте подкаталог конкретной базы в %LOCALAPPDATA%\1C\1cv8, а не весь каталог настроек.
  • 🛡 Переносимые профили на терминальном сервере. Если профиль пересоздаётся при каждом входе, идентификатор будет меняться, а дубли расти каждый день.
  • 🛡 Понятные наименования. Имя «DESKTOP-7K2LQ» через полгода никому ничего не скажет. «Склад, весы, Иванов» — скажет.
  • 🛡 Учёт лицензий отдельно. Перед заменой железа или переустановкой Windows проверьте, где хранятся пин-коды и регистрационные данные лицензии.
Перед переустановкой Windows на рабочем месте с оборудованием
Выполнено: 0 / 5

Частые вопросы

Можно ли вручную задать идентификатор клиента, чтобы сохранить рабочее место?
Штатной настройки для этого нет. Проще перепривязать оборудование к новому рабочему месту, это занимает пару минут.
Есть ли рабочие места в веб-клиенте?
Да. У веб-клиента тоже есть идентификатор клиента, он связан с браузером. Смена браузера или очистка его данных может дать новое рабочее место.
Влияет ли переименование компьютера на рабочее место?
На поиск — нет, конфигурация ищет по идентификатору клиента. Изменится только справочная информация об имени компьютера.
Связан ли справочник «Рабочие места» с количеством лицензий?
Нет. Лицензии платформа считает по компьютерам и сеансам, а справочник нужен конфигурации для настроек оборудования. Удаление элементов справочника лицензий не освободит.
Где хранится идентификатор самой информационной базы?
В списке баз ibases.v8i у каждой строки есть свой ID — это идентификатор записи в списке на этом компьютере. По нему названы подкаталоги кэша в профиле пользователя.