При работе с распределенными информационными базами (РИБ) в 1С:Розница или 1С:УНФ администраторы часто сталкиваются со специфической архитектурной особенностью: жесткой привязкой пользователя к конкретному магазину. Это создает существенные неудобства, когда один человек (например, владелец бизнеса или мобильный кассир) перемещается между торговыми точками. В этой статье мы подробно разберем, почему возникает эта проблема и какими способами можно реализовать механизм «единого кассира».
В типовых конфигурациях 1С для корректного запуска Рабочего места кассира (РМК) система должна однозначно определить контекст: какой это Магазин, какой Склад и какая КассаККМ будут использоваться при пробитии чека. Обычно эти данные хранятся в справочнике НастройкиПользователей или непосредственно в карточке пользователя.
Когда данные синхронизируются через РИБ, настройки пользователя «мигрируют» между узлами. Если в центральном узле за пользователем закреплен «Магазин №1», то при попытке зайти под этой же учетной записью в «Магазине №2», система выдаст ошибку или попытается открыть интерфейс первого магазина, что приведет к невозможности совершить продажу. Давайте проанализируем ситуацию и найдем оптимальные пути решения.
Это самый простой и эффективный штатный метод, не требующий программирования. Разберем его по шагам:
ФизическиеЛица или Сотрудники.Теперь процесс работы будет выглядеть так: программа запущена под общей учетной записью, но перед началом каждой продажи система требует отсканировать бейдж или ввести код. Проанализируем преимущество: в чеке будет указана фамилия именно того человека, который авторизовался кодом, при этом системные настройки магазина останутся привязанными к конкретному рабочему месту. Это полностью решает задачу учета личных продаж владельца в любой точке сети.
Если нам принципиально важно заходить под именной учетной записью, мы можем изменить логику синхронизации настроек. Рассмотрим подробнее, как это сделать:
В каждом периферийном узле (в каждом магазине) администратор может вручную скорректировать настройки пользователя. Для этого перейдем в Администрирование — Настройки пользователей и прав — Персональные настройки. Здесь мы укажем основной магазин и склад, актуальные именно для текущей базы.
Чтобы эти настройки не затирались при следующем обмене данными из центрального узла, необходимо настроить правила регистрации объектов. В плане обмена ПоМагазину можно исключить регистры сведений, отвечающие за персональные настройки пользователей (например, НастройкиПользователей), чтобы они оставались уникальными для каждой базы. Таким образом, один и тот же логин в Магазине №1 будет «смотреть» на Склад №1, а в Магазине №2 — на Склад №2.
Для тех, кто готов к небольшой доработке системы, оптимальным решением станет использование расширения. Выясним причину, по которой это удобно: мы можем заставить программу игнорировать настройки в карточке пользователя и брать данные из Рабочего места (компьютера).
Проанализируем пример логики, которую можно внедрить в процедуру при запуске РМК:
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Определяем текущее рабочее место (компьютер)
ТекущееРМ = МенеджерОборудованияВызовСервера.ПолучитьРабочееМестоКлиента();
// Получаем магазин, закрепленный за этим рабочим местом
МагазинРМ = ПолучитьМагазинПоРабочемуМесту(ТекущееРМ);
Если ЗначениеЗаполнено(МагазинРМ) Тогда
// Подставляем параметры в структуру настроек РМК
ПараметрыКассира.Магазин = МагазинРМ;
ПараметрыКассира.Склад = МагазинРМ.СкладПоУмолчанию;
КонецЕсли;
КонецПроцедуры
Такой подход позволяет пользователю вообще не думать о переключениях. Где бы он ни авторизовался, программа сама определит его местоположение по ID компьютера и подставит нужную кассу и склад.
В современных версиях «1С:Розница 3.0» и «1С:УНФ» разработчики добавили штатный механизм переключения. Рассмотрим, как им пользоваться:
Программа автоматически пересчитает цены (если используются разные виды цен для магазинов) и переподключит соответствующее торговое оборудование. Это идеальный вариант для владельца, который приехал в магазин с проверкой и хочет лично пробить несколько чеков, не меняя глобальных настроек системы.
Для обеспечения безопасности и корректности учета, особенно когда владельцу приходится часто отлучаться от кассы, рекомендуется использовать настройку «Завершать сеанс после каждой продажи». Разберем, как это работает вместе с «единым пользователем»:
После пробития чека и выхода слип-чека, система автоматически сбрасывает авторизацию текущего продавца и возвращается к экрану выбора пользователя или ожидания штрихкода. Это позволяет владельцу быстро подойти, авторизоваться, совершить операцию и уйти, не оставляя кассу открытой под своим именем. В условиях РИБ это гарантирует, что следующий кассир, который начнет работу, будет использовать свои локальные настройки, и данные в центральную базу уйдут без ошибок.
Важный совет: При использовании любого из вышеперечисленных методов всегда проверяйте заполнение аналитики в документах ЧекККМ. Даже если вы используете «единого пользователя», в поле Ответственный или Продавец должен попадать конкретный сотрудник, чтобы отчеты о продажах и расчет премий (если они есть) работали корректно во всей сети магазинов.