При работе с оборудование стандартные конфигурации используют справочник рабочих мест. В нем есть "имя компьютера", "идентификатор клиента" (наименование обычно строится из имении пользователя и имени компьютера), но текущее рабочее место ищется по идентификатору (это строка с ГУИД, простите, статистически уникальный идентификатор).
Ищется он в профиле пользователя по пути %userprofile%\AppData\Local\1C\1cv8\1cv8u.pfl
Сам файл выглядит как-то так:
{
{""},
{
{"Universal",
{"ClientID",
{"#",ffffffff-0000-0000-0000-000000000002,aaaaaaaa-0000-0000-0000-000000000002},""},
{
{""}
}
},
{""}
}
}
Тут aaaaaaaa-0000-0000-0000-000000000002 - это и есть наш идентификатор.
Иногда по невыясненным мной причинам файл 1С-ом перегенерируется - несколько раз сталкивался (или, например, был случай, что админ для пользователя виртуальной машины не сохранял профиль почему-то и этот файл каждый раз заново создавался). В общем, исчезновение этого файла ведет к тому, что оборудование приходится перевешивать на новое рабочее место (а бывает, что у продавца доступ только в РМК, например).
Как добраться до этой информации из 1С? Папка профиля пользователя в 1С как-то недоставаема, я, по крайней мере, не нашел, как вычислить переменную окружения штатными методами 1С (если кто знает, подскажите в комментариях).
Однако, это решаемая проблема (я говорю про системы Windows - работал пока только с ними)
Shell = Новый COMОбъект("WScript.Shell");
Каталог = Shell.ExpandEnvironmentStrings("%userprofile%");
ИмяФайла = Каталог+"\AppData\Local\1C\1cv8\1cv8u.pfl";
Ну и далее, уже дело техники, загрузить файл в текст, например, найти строку с этом тексте, препарировать и достать на гуид. Типа такого (код на коленке сверстал, не судите строго ))):
Текст = новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайла);
Строка = Текст.ПолучитьСтроку(6);
Для Ин = 1 по 2 Цикл
Строка = Сред(Строка, СтрНайти(Строка, ",") + 1);
КонецЦикла;
Строка = Лев(Строка, 36);
Стоит еще обратить внимание, что в файле все приведено к нижнему регистру, а в справочнике - к верхнему.