Пользователю не выдали право на одно поле - СКД молча выкинула его из отчёта, и отчёт вышел пустым. Без единой ошибки

18.08.26

Администрирование - Роли и права

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

Пользователь пишет: отчёт не работает. Открываю у себя, под полными правами, всё считается. Захожу под ним: отчёт формируется, закрывается, ноль строк. Ошибки нет.

У того же файла есть и вторая манера поведения. Под другим пользователем он падает с сообщением про ненайденное поле. Один отчёт, две разные жалобы.

Первая версия, которую называют все, почти всегда неверна. Снимается она одним запросом.

Дальше механизм, три его разновидности и способ узнать длину пути до того, как по нему пошли.

 

Первая версия и почему она отпала

Пустой отчёт под ограниченным пользователем, и все идут смотреть ограничение доступа на уровне записей (RLS, record level security). Логика безупречна: раз данных не видно, значит их отфильтровали по правам.

Проверяется это дёшево. Заходим под целевым пользователем и считаем строки в источниках отчёта напрямую, запросом, без всякой компоновки.

Результат: тысячи сотрудников, десятки тысяч начислений. Данные на месте, все источники видны.

Ограничение записей ни при чём. И заметьте форму проверки: мы посчитали то, что при популярной гипотезе обязано быть нулём, и получили тысячи. Одно число закрыло версию, на которой иначе застряли бы надолго.

 

Настоящая причина: право на просмотр поля

Записи в порядке. Ломаются поля.

Система компоновки данных (СКД) при сборке макета молча выбрасывает поля, на которые у пользователя нет права просмотра. Ни сообщения, ни строчки в журнале. Поле исчезает из схемы, сборка продолжается с тем, что осталось.

Дальше всё решает то, где именно в структуре стояло выброшенное поле. Отсюда два непохожих симптома у одного дефекта.

Почему СКД про это молчит, в документации я не нашёл. Дальше моё объяснение, документального подтверждения у него нет. Сообщение вида «поле такое-то от вас скрыто» само по себе утечка: оно рассказывает пользователю состав схемы, до которого его не допустили. Механизм выбран в пользу безопасности и против диагностируемости. Жить с этим придётся, но знать причину полезно, чтобы не искать несуществующую настройку «включить подробные сообщения».

Разновидность первая: пусто и без ошибки

Если недоступное поле стояло в строках или колонках таблицы, компоновка выбрасывает его, и вместе с ним схлопывается вся структура. Наборов данных остаётся ноль.

Отчёт формируется. Успешно. Пустой.

Компоновка не отфильтровала строки, она удалила структуру. Поэтому диагностика «почему нет данных» уводит совсем не туда: вы начинаете проверять периоды, отборы, движения регистров, а ломается всё этажом выше.

Разновидность вторая: жёсткая ошибка при выводе

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

Здесь же спрятана ловушка, на которой теряют больше всего времени. При составном типе право нужно на все типы сразу. У поля два возможных типа, просмотр есть на один: падает так же, как если бы не было ни одного. При этом в сообщении вы увидите имя поля. Имя недостающего типа там не появится, искать его придётся самому, перебирая состав типа.

Отсюда практический ход: увидели ошибку по ссылочному полю - открывайте состав типов. В живых конфигурациях они бывают длинными, глазами такой состав не охватывается.

Разновидность третья: не то право

Третий вариант проще и коварнее.

«Чтение» и «Просмотр» это разные права. Первое определяет, может ли объект вообще участвовать в запросе. Второе определяет, может ли поле быть выведено.

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

Признак Нет права «Чтение» Нет права «Просмотр»
Где ломается разбор текста запроса сборка макета компоновки
Что видит пользователь ошибка про неизвестный объект или реквизит пустой отчёт либо ошибка про поле
Сообщение есть, и оно честное сообщения нет вообще

Симптомы разные, лечение разное, а звучат оба одинаково: «нет прав».

Настройка роли, которая меняет всё

Одна галочка, про которую стоит знать до того, как начнёте перечислять поля руками.

У роли есть признак «права для новых реквизитов по умолчанию». Когда он включён, право просмотра, выданное на объект, автоматически распространяется на все его поля, включая те, что появятся в будущих обновлениях.

С этим признаком поля перечислять не нужно вовсе. Без него нужно каждое, и каждый новый реквизит после обновления конфигурации становится новой невидимой миной.

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

У признака есть обратная сторона, и о ней стоит думать до того, как включать. Он выдаёт право вперёд, на реквизиты, которых ещё не существует. После очередного обновления конфигурации пользователь получит просмотр на всё новое автоматически, включая поля, которые вы бы ему сознательно не дали. Для ролей, где ограничение носит организационный характер, это неприемлемо. Для технических ролей это снимает целый класс регулярной работы после каждого обновления.

Как воспроизвести это у себя

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

  1. Заведите роль с чтением на один справочник и снимите просмотр с одного его реквизита.
  2. Постройте отчёт, где этот реквизит стоит в строках таблицы. Запустите под тестовым пользователем: отчёт отработает и будет пустым.
  3. Переставьте тот же реквизит из строк в вывод детальных записей. Запустите ещё раз: вы получите ошибку про ненайденное поле.

Ничего не поменялось, кроме позиции одного поля в структуре. Симптом поменялся полностью.

 

Почему это выматывает

Ошибки вылезают по одной. Запустил, поймал сообщение про поле, выдал право, запустил снова, поймал следующее. И так столько раз, сколько недоступных полей в отчёте.

Каждая итерация это не только время выполнения, но и переключение контекста: зайти в роль, найти объект, найти поле, поставить галочку, выйти, перезайти пользователем. Раздражает это сильнее, чем длится, потому что конца не видно.

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

Что именно сравнивать

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

  • поля наборов данных, включая те, что участвуют только в связях;
  • поля, которые встречаются в вычисляемых полях и в выражениях ресурсов;
  • поля, зашитые в отборы и параметры настроек по умолчанию;
  • поля структуры вариантов отчёта, то есть строки, колонки и группировки.

Последний пункт самый важный, потому что именно он даёт молчаливый симптом.

Найденное делится на две группы: поля в структуре таблицы схлопнут отчёт молча, поля в выводе назовут себя ошибкой. Первая опаснее, она не жалуется.

И ещё одно наблюдение, которое экономит время на повторных случаях. Недоступные поля почти никогда не разбросаны случайно, они группируются вокруг одного объекта или одного смыслового блока: суммы, персональные данные. Нашли одно, сразу смотрите его соседей по тому же объекту, ещё до следующего запуска отчёта.

 

Четыре вещи, которые мешают диагностике

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

Нельзя штатно выяснить, какая именно роль даёт право. Функция проверки суммирует все роли пользователя и роль параметром не принимает. Ответ на вопрос «откуда у него это право» ищется только поиском по выгрузке прав конфигурации. Для пользователя, у которого профилей несколько, это отдельная работа, и закладывать её надо заранее.

Выгрузку прав по ролям мы вынесли в отдельную обработку: Матрица прав доступа 1С для нейросети.

Отчёт формируется в фоновом задании. Точка останова в отладчике не сработает, пока явно не включена отладка фоновых заданий, и это первое, обо что спотыкаются при попытке посмотреть изнутри.

Собрать отчёт руками для анализа не получится. Выражения обращаются к функциям, которые регистрируются только при штатном запуске через форму. Анализировать надо через список доступных полей компоновки.

 

Когда пустой отчёт это работающее правило

Без этого раздела статья была бы вредной.

Роли вида «чтение без просмотра» существуют намеренно. Они дают чтение для расчётов и запрещают вывод сумм: расчётчик может считать, но не может увидеть чужую зарплату в отчёте.

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

Правильный порядок здесь такой. Сначала выясняем, недоступность поля это упущение при настройке роли или сознательное правило. Если правило, то дальше разговор идёт про вариант отчёта без этой колонки, и права тут обсуждать бесполезно.

Проверять это надо до того, как вы начали выдавать права. Потом уже поздно, право выдано. Обратный порядок выглядит на бумаге безобидно: разработчик поставил галочку, закрыл заявку, все довольны. По факту в этот момент кто-то получил доступ к чужим зарплатам, и обнаружится это на ближайшей проверке, когда объяснять придётся уже не техникой.

Скажу честно: в разобранном случае чем всё закончилось по существу, не зафиксировано. Дали права на суммы или сделали урезанный вариант отчёта, я не знаю, это решение оставалось за бизнесом. Материал доводит до развилки и на ней обрывается.
 

Другие наши инструменты по правам и метаданным:

Как я перестал разбирать права руками, разобрано отдельно: статья про матрицу прав.

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

Вступайте в нашу телеграмм-группу Инфостарт

СКД пустой отчёт права на поля право Просмотр право Чтение RLS ограничение на уровне записей профиль группы доступа составной тип компоновка данных отчёт под ограниченными правами роли 1С

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    272930    1509    422    

1182

Зарплата Роли и права Системный администратор Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

9675 руб.

27.05.2021    58485    509    129    

360

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27064    99    46    

104

SALE! 20%

Роли и права 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Универсальная обработка по настройке прав доступа пользователей в 1СЗУП, КА, УТ, ЕРП, ERP, УНФ, Розница, Управление холдингом) и разграничений позволяет в несколько кликов настроить даже самые нестандартные права.

5750 4600 руб.

22.12.2021    37637    206    78    

238

Логистика, склад и ТМЦ Роли и права Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение для 1С:Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

5084 руб.

21.05.2019    1703109    604    197    

151

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 руб.

06.12.2023    24169    82    14    

115

Ценообразование, анализ цен Роли и права Системный администратор 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С:УНФ 1.6 и 3.0. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

5100 руб.

23.02.2018    68485    181    264    

169

Роли и права Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Получение необходимой информации по правам доступа в разрезе групп доступа, профилей групп доступа, пользователей / групп пользователей, объектов конфигурации и ролей. Легко можно настроить состав и порядок вывода информации по правам, настроить необходимые фильтры и получить более детальную расшифровку по группировкам отчета.

5000 руб.

16.11.2015    54309    101    46    

163
Для отправки сообщения требуется регистрация/авторизация