При подключении торгового оборудования (например, популярной онлайн-кассы Атол 30Ф) в конфигурации 1С:Управление торговлей 11.4 пользователи часто сталкиваются с крайне неприятной проблемой. С одной стороны, рабочее место кассира (РМК) успешно функционирует, и чеки пробиваются. С другой стороны, при попытке пробить чек из документа «Приходный кассовый ордер» (ПКО) система выдает критическую ошибку: «Нет подключенного оборудования». Для автоматического заполнения параметров в таких документах на основе настроек РМК можно использовать расширение для определения кассы в ПКО и терминала по настройкам рабочего места.
Попытки исправить ситуацию вручную через создание нового рабочего места в настройках программы приводят к очередной ошибке: «Такой идентификатор уже есть». В этой статье мы подробно разберем, почему возникает этот сбой, как устроена архитектура привязки торгового оборудования в 1С и как пошагово решить эту проблему.
Для начала проанализируем внутренние механизмы платформы 1С:Предприятие 8.3 и Библиотеки стандартных подсистем (БСП), на базе которой построена «1С:Управление торговлей 11.4».
Идентификация рабочих мест в системе происходит не по имени компьютера или пользователя, а по уникальному глобальному идентификатору (GUID / Client ID).
1cv8u.pfl и располагается по пути: %LocalAppData%\1C\1cv8\ (локальный кэш пользователя).РабочиеМеста.Разберем разницу в механизмах поиска подключенного оборудования программным кодом 1С в различных интерфейсах:
ПараметрыСеанса.РабочееМестоКлиента. Программа ищет оборудование, привязанное именно к текущему активному рабочему месту текущего пользователя. Поскольку ваше текущее рабочее место в базе создалось заново (оно «пустое» и к нему не привязана касса), а ККМ осталась привязанной к старому «призрачному» рабочему месту, ПКО выдает ошибку отсутствия оборудования.Для восстановления корректной работы торгового оборудования нам не нужно создавать новые элементы. Наша задача — правильно связать уже существующие настройки оборудования с текущим активным рабочим местом. Разберем этот процесс по шагам.
Прежде всего нам необходимо увидеть полную картину рабочих мест в базе данных:
Теперь свяжем нашу онлайн-кассу с актуальным рабочим местом сеанса:
Чтобы избежать путаницы в будущем, необходимо навести порядок в справочнике рабочих мест:
Последний штрих — проверка правильности аналитики торговой точки:
Если ваша компания использует работу в 1С через удаленные рабочие столы (RDP), описанная проблема может повторяться регулярно при каждом новом входе пользователя в терминал. Выясним причину этого поведения.
На многих терминальных серверах настроено автоматическое удаление временных профилей пользователей Windows при закрытии сессии (разлогинивании) для экономии дискового пространства. Вместе с профилем безвозвратно удаляется папка AppData и хранящийся в ней файл настроек платформы 1cv8u.pfl. При следующем входе пользователя сервер создает абсолютно новый профиль, 1С генерирует новый Client ID, и вся цепочка дублирования рабочих мест запускается заново.
Для решения этой проблемы системному администратору сервера необходимо выполнить одно из следующих действий:
%LocalAppData%\1C\ сохранялась между сессиями.1cv8u.pfl в персональную сетевую папку пользователя при завершении работы и копировать его обратно при авторизации.Если вы являетесь разработчиком или администратором базы данных, вы можете быстро проанализировать масштаб проблемы с дублированием рабочих мест с помощью простого запроса в консоли запросов. Рассмотрим пример кода для поиска активных рабочих мест и их уникальных идентификаторов:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РабочиеМеста.Ссылка КАК РабочееМесто,
| РабочиеМеста.Код КАК Код,
| РабочиеМеста.ИмяКомпьютера КАК ИмяКомпьютера,
| РабочиеМеста.ИдентификаторКлиента КАК GUID_Клиента,
| РабочиеМеста.ПометкаУдаления КАК ПометкаУдаления
|ИЗ
| Справочник.РабочиеМеста КАК РабочиеМеста
|УПОРЯДОЧИТЬ ПО
| ИмяКомпьютера";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Здесь мы можем программно оценить количество дубликатов на один ПК
Если ПустаяСтрока(Выборка.GUID_Клиента) Тогда
Продолжить;
КонецЕсли;
КонецЦикла;
Этот несложный алгоритм и понимание внутренней структуры хранения уникальных идентификаторов в 1С позволят вам оперативно решать любые проблемы с подключением ККМ и гарантировать бесперебойную печать чеков как из интерфейса кассира, так и из классических бухгалтерских документов. При необходимости организовать работу нескольких пользователей с одним устройством можно воспользоваться расширением для использования одной физической кассы на нескольких компьютерах.