Рассмотрим распространенную проблему, с которой часто сталкиваются администраторы торговых систем и кассиры при работе в программе «1С:Управление торговлей 11» (а также в «1С:Розница» и «1С:ERP»). В процессе работы из-за внезапного сбоя компьютера, отключения питания или некорректного завершения терминальной сессии программа 1С перестает «видеть» подключенное торговое оборудование (фискальный регистратор, ККТ) и автоматически создает новое рабочее место кассира (РМК). При этом старая касса остается привязанной к прежнему рабочему месту, и кассир не может пробивать чеки.
Выясним причину такого поведения системы и разберем по шагам несколько эффективных способов восстановления нормальной работы торговой точки.
Для начала проанализируем ситуацию изнутри платформы «1С:Предприятие 8». Привязка подключаемого оборудования к конкретному физическому компьютеру осуществляется через справочник РабочиеМеста. Чтобы идентифицировать конкретный ПК, программа ориентируется на уникальный идентификатор клиента — GUID (ClientID).
Этот идентификатор генерируется платформой при первом запуске и сохраняется в файловой системе операционной системы Windows в специальном файле настроек платформы 1cv8u.pfl (в некоторых версиях — 1cv8.pfl). Обычно этот файл располагается по следующему пути:
%userprofile%\AppData\Local\1C\1cv8\1cv8u.pfl
Во время аварийного завершения работы системы, сброса кэша 1С или обновления платформы данный файл может повредиться, перезаписаться или удалиться. При следующем запуске 1С не находит старый GUID в файле настроек, генерирует новый уникальный идентификатор и автоматически создает в базе данных новую запись в справочнике РабочиеМеста. Поскольку к этому новому месту оборудование еще не привязано, кассир видит ошибку подключения ККТ.
Рассмотрим подробнее три основных способа решения этой проблемы.
Если на старом рабочем месте кассовая смена была успешно закрыта, и у вас нет жесткой необходимости сохранять именно старую карточку рабочего места, самым простым и безопасным решением будет перепривязка фискального регистратора к новому рабочему месту.
Выполним следующие действия по шагам:
После этого оборудование начнет функционировать на текущем рабочем месте кассира. Старую дублирующуюся карточку РМК в справочнике рекомендуется пометить на удаление, чтобы она не мешала пользователям в дальнейшем.
Этот способ необходим в тех случаях, когда на старом рабочем месте осталась открытой кассовая смена, или к нему жестко привязаны другие настройки, которые нельзя терять. В таком случае нам нужно «заставить» 1С считать текущий компьютер старым рабочим местом. Для этого нужно поменять местами уникальные идентификаторы текущего (нового) и старого рабочих мест.
Сделать это можно с помощью внешней обработки или написав небольшую процедуру. Посмотрим на пример кода, который выполняет замену GUID непосредственно в базе данных 1С:
// Процедура производит обмен GUID между старым и новым рабочими местами
Процедура ОбменятьИдентификаторамиРМ(СтароеРМСсылка, НовоеРМСсылка) Экспорт
// Получаем объекты для записи изменений
СтароеРМОбъект = СтароеРМСсылка.ПолучитьОбъект();
НовоеРМОбъект = НовоеРМСсылка.ПолучитьОбъект();
// Считываем текущие значения идентификаторов клиента (GUID)
ВременныйGUID_Старый = СтароеРМОбъект.ИдентификаторКлиента;
ВременныйGUID_Новый = НовоеРМОбъект.ИдентификаторКлиента;
// Меняем идентификаторы местами
СтароеРМОбъект.ИдентификаторКлиента = ВременныйGUID_Новый;
НовоеРМОбъект.ИдентификаторКлиента = ВременныйGUID_Старый;
// Записываем измененные объекты в базу данных
СтароеРМОбъект.Записать();
НовоеРМОбъект.Записать();
Сообщить("Обмен идентификаторами рабочих мест успешно завершен!");
КонецПроцедуры
После выполнения данного кода и перезапуска сеанса 1С программа мгновенно распознает ваш компьютер как старое («правильное») рабочее место, и касса снова будет готова к работе под старой открытой сменой.
Если вы не хотите вносить изменения в базу данных программным путем, можно отредактировать конфигурационный файл на самом компьютере кассира, вернув ему старый идентификатор.
Разберем этот процесс по шагам:
РабочиеМеста в 1С под администратором и найдем карточку старого (нужного нам) рабочего места. Нам необходимо скопировать значение поля Идентификатор клиента (это длинная строка формата aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee).%localappdata%\1C\1cv8\ и нажмем Enter.1cv8u.pfl (или 1cv8.pfl) и откроем его с помощью обычного текстового редактора (например, Блокнота).ClientID. Строка будет иметь следующий вид:
{"Universal", {"ClientID", {"#", ffffffff-0000-0000-0000-000000000002, aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}}}
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee) на скопированный ранее идентификатор вашего старого рабочего места.Запустим программу 1С. Платформа считает измененный файл настроек, определит компьютер как прежнее рабочее место и автоматически подключит всё ранее настроенное торговое оборудование.
Если ваши кассиры работают на терминальном сервере, проблема со «слетанием» РМК может повторяться регулярно из-за того, что при выходе пользователя из системы очищается его временный профиль ОС вместе с файлом 1cv8u.pfl.
Чтобы решить эту проблему кардинально, системному администратору рекомендуется настроить специальный скрипт автозапуска (PowerShell или обычный .bat / .cmd файл). Этот скрипт при каждом входе пользователя в терминал должен принудительно копировать заранее сохраненный эталонный файл 1cv8u.pfl с прописанным верным GUID в локальную папку профиля пользователя 1С. Это гарантирует стабильную работу ККТ без постоянных сбоев.