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