Как отобразить суммы в отчете «Остатки товаров» для менеджеров в 1С:Бухгалтерия 3.0?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет Торговля и дистрибуция
← На главную

Часто в типовой конфигурации «1С:Бухгалтерия предприятия 3.0» возникает ситуация, когда пользователи с ограниченными правами (например, менеджеры по продажам) видят в отчете «Остатки товаров» только количество, в то время как колонка с суммой отсутствует. Это связано с жестко прописанной логикой в программном коде конфигурации, которая ограничивает доступ к финансовым показателям, если у пользователя нет полных бухгалтерских прав. Рассмотрим подробнее, как решить эту проблему несколькими способами: от программной доработки до настройки прав доступа.

Анализ причины скрытия суммовых показателей

Для начала разберем, почему колонка «Сумма» исчезает из отчета. В системе компоновки данных (СКД) этого отчета поле «Сумма» присутствует, однако при формировании отчета срабатывает процедура проверки прав. Типовой механизм обращается к функции УправлениеДоступомБПВызовСервера.ПравоДоступаКДаннымБухгалтерии(). Если у пользователя нет ролей, позволяющих просматривать данные бухгалтерского регистра Хозрасчетный, система принудительно удаляет поле «Сумма» из списка выбранных полей компоновщика настроек.

Проблема заключается в том, что простое добавление роли «Чтение данных бухгалтерии» открывает менеджеру доступ ко всем первичным документам, журналам и проводкам, что часто недопустимо с точки зрения безопасности данных предприятия. Наша задача — дать возможность видеть себестоимость остатков без предоставления избыточных прав.

Способ 1: Использование расширения конфигурации

Это наиболее эффективный метод, позволяющий сохранить конфигурацию на поддержке. Мы можем вмешаться в процесс формирования отчета и принудительно добавить поле «Сумма» обратно, даже если типовая проверка его удалила. Проанализируем пример кода, который можно внедрить через расширение в форму отчета ОстаткиТоваров.

Нам необходимо переопределить функцию СформироватьОтчетНаСервере. Рассмотрим по шагам, как это сделать:


&НаСервере
&Вместо("СформироватьОтчетНаСервере")
Функция Расш1_СформироватьОтчетНаСервере() Экспорт
    // Проверяем заполнение обязательных реквизитов перед формированием
    Если Не ПроверитьЗаполнение() Тогда
        Возврат Новый Структура("ЗаданиеВыполнено, ОтказПроверкиЗаполнения", Истина, Истина);
    КонецЕсли;

    // Отменяем предыдущие длительные операции, если они были
    ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания);
    ИдентификаторЗадания = Неопределено;
    
    // Устанавливаем состояние табличного документа
    ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "НеИспользовать");
    
    // Передаем дополнительные свойства для вывода заголовков
    Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ВыводитьЗаголовок", ВыводитьЗаголовок);
    Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ВыводитьПодвал", ВыводитьПодвал);

    // Подготавливаем параметры отчета
    ПараметрыОтчета = ПодготовитьПараметрыОтчетаНаСервере();

    // ВОТ ОН КЛЮЧЕВОЙ МОМЕНТ:
    // Принудительно добавляем поле "Сумма" в выбранные поля компоновки данных
    БухгалтерскиеОтчетыКлиентСервер.ДобавитьВыбранноеПоле(ПараметрыОтчета.НастройкиКомпоновкиДанных.Выбор, "Сумма");

    // Далее следует стандартный блок выполнения отчета
    Если ИнформационнаяБазаФайловая() Тогда
        // Логика для файловой базы
    Иначе
        // Логика для клиент-серверного варианта (запуск фонового задания)
    КонецЕсли;
    
    Возврат РезультатВыполнения;
КонецФункции

Важное примечание: Использование метода Вместо требует копирования значительной части типового кода. Более «чистым» вариантом будет использование метода ПриКомпоновкеРезультата в модуле объекта отчета через расширение. Там можно программно установить параметр ВыводитьСумму = Истина, если логика отчета это предусматривает.

Способ 2: Настройка минимально необходимых ролей

Если вы не хотите прибегать к программированию, можно попробовать решить задачу через профили групп доступа. Выясним, какие именно права требуются системе для прохождения проверки ПравоДоступаКДаннымБухгалтерии.

Обычно для отображения сумм системе требуются права «Чтение» на регистр бухгалтерии Хозрасчетный. Чтобы ограничить менеджера, создадим новый профиль доступа и включим в него следующие возможности:

  1. Роль Чтение остатков товаров.
  2. Роль Чтение цен номенклатуры.
  3. Специально созданная роль в расширении, которая дает право только на «Чтение» (но НЕ «Просмотр») регистра бухгалтерии Хозрасчетный.

Разберем разницу между «Чтением» и «Просмотром». Если у пользователя есть право на Чтение, программные запросы к этому объекту будут возвращать данные, и проверка прав в коде отчета вернет Истина. Но отсутствие права на Просмотр не позволит пользователю увидеть этот регистр в интерфейсе, открыть его через «Все функции» или увидеть проводки в документах.

Способ 3: Использование «Универсального отчета»

Рассмотрим ситуацию, когда отчет «Остатки товаров» слишком жестко ограничен, а времени на разработку расширения нет. В этом случае на помощь приходит Универсальный отчет (раздел «Отчеты» — «Стандартные отчеты»).

Выполним настройку вместе:

  1. В поле «Тип объекта» выберем Регистр накопления.
  2. В поле «Имя объекта» выберем Товары на складах (если ведется упрощенный складской учет) или выберем тип объекта Регистр бухгалтерии и счет 41.01.
  3. Нажмем кнопку «Настройки», перейдем на вкладку «Поля и сортировки».
  4. Здесь, в отличие от специализированного отчета, поля суммы (СуммаОстаток) будут доступны для выбора, если у пользователя есть базовые права на чтение регистра.

Универсальный отчет не содержит встроенных «заглушек» для менеджеров, которые есть в специализированном отчете «Остатки товаров», поэтому он часто является самым быстрым решением проблемы.

Проверка настроек параметров учета

Иногда причина отсутствия сумм кроется не в правах доступа, а в настройках самой программы. Проанализируем настройки триггеров складского учета. Если в программе не ведется суммовой учет по складам, то и суммы в отчетах по складам не появятся даже у администратора.

Перейдем в раздел «Администрирование» — «Параметры учета» — «Настройки триггера складского учета». Убедимся, что установлен флаг По количеству и сумме. Если установлен только флаг «По количеству», бухгалтерский учет не будет фиксировать стоимость в разрезе складов, и отчет «Остатки товаров» закономерно не покажет суммы.

Резюме

Мы рассмотрели три основных пути решения задачи. Если вы обладаете навыками программирования, лучшим решением будет создание расширения с программным добавлением поля Сумма. Это позволит менеджерам пользоваться привычным интерфейсом без открытия доступа к конфиденциальной бухгалтерии. Если правки кода нежелательны — используйте Универсальный отчет или тонкую настройку ролей с разделением прав на Чтение и Просмотр.

← На главную