По мотивам публикации № 1127951.
Сделано на версиях: УТ 11.4.13 - 11.4.14, КА 2.4.13 - 2.4.14, Розница 2.3.10. Скорее всего, будет работать и на других версиях, т.к. механизм консервативный.
В данной публикации рассказано где хранится привязка настроек подключаемого оборудования к локальному компьютеру. Предложено решение с помощью корректировки файла, в котором содержится информация об идентификаторе текущего рабочего места.
Возникло желание решить это другим способом - корректировкой данных в 1С. И, плюс к этому, хранить в 1С значение идентификатора настроенного рабочего места.
Для начала важно понять как определяется соответсвие настроек РМК (в УТ 11 или КА 2 или Розница 2) с пользователем виндоус (или сеансом 1С). В Рознице 2 данные хранятся немного иначе чем в УТ или КА. Но принцип тот же. В УТ и КА настройки хранятся в отдельном справочнике. А в Рознице 2 такого справочника нет. Но и там и там определяющую роль играет идентификатор рабочего места. Это реквизит справочника "Рабочие места". В конфигураторе это реквизит "Код". Для пользователя определен синоним "Идентификатор". Но это - одно и то же. Так же там есть реквизит "Имя компьютера". Но, по тестам он никак не влияет на определение рабочего места, возможно, сделан "прозапас" или для понимания к какому компьютеру относится это рабочее место.
В файл %LocalAppData%\1C\1cv8\1cv8u.pfl записывается и хранится идентификатор текущего рабочего места в виде параметра.
При запуске сеанса 1С происходит считывание этого параметра и запись его в объект параметров сеанса "РабочееМестоКлиента".
Иногда, по каким то причинам, системе не удается считать или установить этот параметр в сеансе 1С. В этом случае создается новый элемент в справочнике "рабочие места". Ему присваивается новый идентификатор, он записывается в файл как идентификатор текущего рабочего места. Соответственно, рабочий и настроенный ранее элемент "рабочее место" никуда не исчезает. Но его идентификатор перестает соответствовать текущему рабочему месту. А вновь созданный элемент рабочего места не привязан ни к одной настройке подключаемого оборудования.
В программе предусмотрен выбор текущего рабочего места сеанса. Но этот выбор не записывается в файл. При каждом входе в программу придется повторять это действие.
В данной обработке решение реализовано следующим образом.
Цель: определить идентификатор текущего рабочего места и присвоить его рабочему месту, на котором сделаны рабочие настройки оборудования.
1. Ручной выбор настроенного рабочего места:
При открытии обработки считывается значение параметра сеанса "РабочееМестоКлиента". Если этот параметр установлен и считался, то текущее место заполнится автоматически.
Если он не определился, то его можно выбрать вручную.
Затем аналогично нужно выбрать то рабочее место, которое вы хотите "восстановить", т.е. сделать текущим.
Для этого предварительно его следует назвать так, чтобы по названию было понятно, что оно является текущим для данного пользователя 1С/компьютера.
Далее выполнить команду "Установить". Результат: Идентификаторы перезапишутся (поменяются местами), поле выбранного текущего места очистится, "неправильное" рабочее место пометится на удаление (для того чтобы оно больше не рассматривалось в качестве текущего). Гипотетически у рабочих мест могут быть одинаковые идентификаторы, тогда "текущим" устанавливается первое по списку. Чтобы это исключить, ненужное помечается на удаление (оно больше не может участвовать в автоматическом выборе системой).
Результат:
В результате идентификаторы выбранных рабочих мест "поменяются местами".
(!!) Вместе с этим обработка установит в параметр системы "РабочееМестоКлиента" выбранное значение.
Перезапускать сеанс 1С не нужно.
2. Сохранение идентификатора настроенного рабочего места в базе. Восстановление автоматически без ручного выбора. (только для УТ и КА, т.к. в рознице нет доп. реквизитов для Касс ККМ или других подходящих справочников).
Можно сохранить идентификатор настроенного рабочего места в базе 1С. Для этого необходимо создать дополнительный реквизит в справочнике "Кассы ККМ". Т.к. там не предусмотрен выбор типа "Рабочие места", для сохранения выбран идентификатор (строка) рабочего места. На рисунках ниже показано, как это сделано.
(!!!) Обязательно правильно заполнить "Имя" в разделе "Для разработчиков" "КодРабочегоМеста".
В настроенном рабочем месте необходимо скопировать идентификатор и вставить его в доп. реквизит той кассы ККМ, для которой настроено торговое оборудование для этого рабочего места.
Вставить в карточку кассы ККМ.
Т.о. в карточке кассы ККМ можно хранить данные о рабочем месте подключенного оборудования.
Для восстановления текущего рабочего места в обработке необходимо установить галочку в реквизите "Идентификатор хранится в карточке кассы ККМ":
Затем выбрать нужную кассу (Текущая касса ККМ), для которой необходимо восстановить настройки.
По сохраненному значению идентификатора подберутся все кассы с таким идентификатором (если их несколько).
Если найдется только одно рабочее место, то оно автоматически подставится в поле "Установить текущим рабочее место".
Если их будет несколько, то нужно будет выбрать нужное, поставив галочку в колонке "нужное", ориентируясь на название рабочего места и имя компьютера.
После выбора нужного, поле с выбранным рабочим местом заполнится и можно будет выполнить команду "Установить".
Результат:
(!!) Вместе с этим обработка установит в параметр системы "РабочееМестоКлиента" выбранное значение.
Перезапускать сеанс 1С не нужно.