Почему один и тот же отчет в 1С показывает разные данные под разными пользователями? Разбираем проблему настроек и пустых отборов в СКД

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Каждый администратор и программист 1С рано или поздно сталкивается с мистической ситуацией: один и тот же отчет (например, оборотно-сальдовая ведомость или ведомость по товарам на складах) с абсолютно идентичными настройками под одним пользователем показывает верные данные, а под другим — пустые строки или некорректные остатки. Первая реакция в такой ситуации — погрешить на некорректный пересчет итогов базы данных или на локальный кэш пользователя. Однако на практике корни проблемы чаще всего кроются в механизмах работы Системы компоновки данных (СКД) и особенностях хранения пользовательских настроек.

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

---

Почему очистка кэша и простой сброс настроек на форме не работают?

Давайте проанализируем ситуацию: пользователь выполняет стандартную очистку локального кэша (удаляет файлы из каталогов AppData\Local\1C и AppData\Roaming\1C), но это не решает проблему. Почему? Дело в том, что СКД хранит пользовательские настройки отчетов вовсе не на локальном компьютере.

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

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

---

Ловушка «пустого отбора» в СКД

Рассмотрим подробнее одну из самых неочевидных проблем — влияние пустого отбора. В СКД незаполненное поле отбора может обрабатываться платформой по-разному в зависимости от активности флага «Использование». Пользователь может не видеть отбор визуально на форме, но система будет учитывать его при генерации запроса к СУБД.

Выделим два состояния пустого отбора:

  1. Флаг «Использование» включен, но значение не выбрано. Если в настройках отбора добавлено поле (например, Номенклатура или Склад), галочка активности напротив него установлена, а само поле значения оставлено пустым, СКД транслирует это в SQL-запрос как жесткое условие. В СУБД отправляется запрос следующего вида:

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.ВНаличииОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Номенклатура = &ПустаяСсылка)

В результате такой отчет вернет пустые строки или остатки только по незаполненным («пустым») позициям номенклатуры, что пользователь воспримет как жесткий глюк отчета.

  1. Флаг «Использование» выключен. Только в этом случае компоновщик макета СКД полностью исключает данное поле из условий запроса ГДЕ, и отчет формируется корректно по всем данным информационной базы.

У разных пользователей из-за индивидуальной истории открытия и изменения отчета этот скрытый флаг Использование для пустых полей может находиться в разном состоянии. Визуально на форме настройки выглядят одинаково (значения пустые), но результат выборки получается принципиально разным.

---

Влияние функциональных опций и прав доступа (без использования RLS)

Даже если в информационной базе полностью отключен механизм RLS (ограничение доступа на уровне записей), права пользователя и настройки системы могут неявно влиять на компоновку запроса в СКД. Проанализируем два важных фактора:

---

Разберем по шагам методы решения проблемы

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

Шаг 1. Полное удаление настроек пользователя через администрирование

Вместо неэффективной очистки локального кэша на ПК выполните гарантированное удаление настроек формы из базы данных. Для этого пройдем по следующему пути в интерфейсе:

  1. Перейдите в раздел Администрирование -> Настройки пользователей и прав.
  2. Откройте ссылку Персональные настройки пользователей и выберите пункт Очистка настроек.
  3. В появившемся окне выберите проблемного пользователя.
  4. Найдите в списке настроек нужный отчет (например, ОборотноСальдоваяВедомость) и удалите сохраненные настройки.

Это действие полностью сотрет записи из таблицы хранилища настроек БД, и при следующем открытии отчет сформируется по умолчанию.

Шаг 2. Проверка скрытых отборов через «Изменить вариант отчета»

Если сброс не помог, необходимо проверить структуру СКД изнутри под учетной записью проблемного пользователя:

  1. Откройте отчет и нажмите кнопку Еще -> Прочие -> Изменить вариант....
  2. В открывшемся окне настройки компоновки перейдите на вкладку Отбор.
  3. Внимательно просмотрите весь список. Если вы найдете пустые строки отборов (даже со снятыми флажками использования), полностью удалите их, нажав на кнопку с красным крестиком (Удалить элемент).
  4. Нажмите Завершить редактирование и сформируйте отчет заново.

Шаг 3. Тестирование и исправление информационной базы

В редких случаях проблема действительно может быть связана с рассинхронизацией таблиц итогов СУБД. Если предыдущие шаги не дали результата, запустите конфигуратор и выполните процедуру Тестирование и исправление:

  1. Обязательно сделайте резервную копию базы данных.
  2. Перейдите в меню Администрирование -> Тестирование и исправление....
  3. Установите флаги напротив пунктов Реиндексация таблиц информационной базы и Пересчет итогов.
  4. Нажмите кнопку Выполнить и дождитесь окончания процесса.

Выполнение этих шагов гарантированно устранит проблему расхождения данных в отчетах СКД и вернет стабильность работы пользователей в программе 1С.

← На главную