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