Рабочее место в 1С 8.3: откуда программа знает, какой это компьютер
Содержание
Идентификатор рабочего места в 1С 8.3 хранится в двух местах. На стороне клиента — в профиле пользователя Windows: платформа генерирует уникальный ИдентификаторКлиента (UUID) и держит его в каталоге настроек 1С. На стороне базы данных — в справочнике «Рабочие места» типовой конфигурации, где этому UUID сопоставлены имя компьютера и подключённое оборудование.
Типичная ситуация: кассир пересел за тот же компьютер под другой учётной записью Windows, и фискальный регистратор «пропал» из настроек. Оборудование никуда не делось: программа просто увидела новое рабочее место. Ниже разобрано, где лежит каждая часть этой связки, как её проверить и что делать, когда она рвётся.
Что такое «рабочее место» с точки зрения платформы и конфигурации
Слово «рабочее место» в 1С означает две разные вещи, и их полезно не путать.
- 🖥 Рабочее место в конфигурации. Элемент справочника
РабочиеМестав типовых решениях на БСП и библиотеке подключаемого оборудования (БП 3.0, УТ 11, Розница, УНФ, КА, ERP). К нему привязаны кассы, сканеры, весы, эквайринговые терминалы. - 🔑 Рабочее место в лицензировании. Компьютер (или терминальный сеанс), на котором запущен клиент 1С. Платформа считает по ним клиентские лицензии.
Первое — запись в базе данных, у неё есть ссылка, код и реквизиты. Второе — понятие платформы, отдельной записи «рабочее место» в базе для него нет. Связывает их одно: обе вещи определяются на клиенте, при запуске сеанса.
Как конфигурация узнаёт своё рабочее место при старте:
- Клиент получает системную информацию: имя компьютера и
ИдентификаторКлиента. - Конфигурация ищет в справочнике «Рабочие места» элемент с таким идентификатором.
- Если элемент найден — он становится текущим рабочим местом сеанса (в БСП это параметр сеанса
РабочееМестоКлиента). - Если нет — создаётся новый элемент, обычно с наименованием по имени компьютера.
Отсюда главная практическая мысль: рабочее место конфигурации определяется не именем компьютера, а идентификатором клиента. Имя компьютера — лишь подпись для человека.
Идентификатор клиента на компьютере: профиль, реестр и каталоги 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С его не видит. Или в списке рабочих мест накопилось пять элементов с одним и тем же именем компьютера.
Порядок разбора дублей:
- Откройте справочник «Рабочие места» через «Все функции».
- Включите в списке видимость колонок с идентификатором клиента и именем компьютера (через настройку формы списка).
- На проблемном компьютере, под нужным пользователем Windows, получите текущий
ИдентификаторКлиента. - Найдите элемент с этим идентификатором — это живое рабочее место. Переименуйте его понятно: «Касса 2, Петрова».
- Откройте каждое подключаемое оборудование этого компьютера и укажите в нём живое рабочее место.
- Остальные элементы с тем же именем компьютера пометьте на удаление, а удаление выполните через
Администрирование → Обслуживание → Удаление помеченных объектов(в БП 3.0; в других решениях раздел обслуживания называется похоже).
Перед удалением помеченных объектов платформа проверит ссылки. Если на старое рабочее место ещё ссылается оборудование, удаление не пройдёт — это удобная проверка, что вы ничего не забыли перепривязать.
Как не терять рабочие места в будущем
Привязка ломается от одних и тех же действий. Их немного, и почти все управляемы.
- 🛡 Свой профиль Windows на каждого кассира. Общая учётная запись на смену удобна, но смешивает настройки разных людей.
- 🛡 Чистить кэш
выборочно. При проблемах с интерфейсом удаляйте подкаталог конкретной базы в
%LOCALAPPDATA%\1C\1cv8, а не весь каталог настроек. - 🛡 Переносимые профили на терминальном сервере. Если профиль пересоздаётся при каждом входе, идентификатор будет меняться, а дубли расти каждый день.
- 🛡 Понятные наименования. Имя «DESKTOP-7K2LQ» через полгода никому ничего не скажет. «Склад, весы, Иванов» — скажет.
- 🛡 Учёт лицензий отдельно. Перед заменой железа или переустановкой Windows проверьте, где хранятся пин-коды и регистрационные данные лицензии.
Частые вопросы
Можно ли вручную задать идентификатор клиента, чтобы сохранить рабочее место?
Есть ли рабочие места в веб-клиенте?
Влияет ли переименование компьютера на рабочее место?
Связан ли справочник «Рабочие места» с количеством лицензий?
Где хранится идентификатор самой информационной базы?
ibases.v8i у каждой строки есть свой ID — это идентификатор записи в списке на этом компьютере. По нему названы подкаталоги кэша в профиле пользователя.