При работе в программе 1С:Комплексная автоматизация 2.4 (или 1С:ERP) администраторы и программисты иногда сталкиваются с загадочным поведением интерфейса: один конкретный пользователь в форме подбора товаров не видит определенную позицию номенклатуры. При этом у других сотрудников с точно такими же правами доступа и на тех же компьютерах эта позиция отображается без проблем. Обычный сброс настроек формы кнопкой «Установить стандартные настройки» в таких случаях не помогает.
Давайте подробно разберем эту ситуацию, проанализируем возможные причины и выработаем пошаговый алгоритм локализации и устранения этой проблемы.
Если номенклатура переносилась из более ранних версий программ (например, из 1С:КА 1.1 или 1С:УПП 1.3) либо создавалась программно сторонними обработками, велика вероятность нарушения целостности данных. В карточке могут отсутствовать или быть неверно заполнены системные реквизиты, которые не выводятся на форму, но участвуют в построении динамического списка подбора.
Для диагностики этой проблемы воспользуемся консолью запросов. Наша задача — выбрать одну позицию, которую видят все пользователи (правильную), и ту, которую проблемный пользователь не видит (неправильную), после чего сравнить абсолютно все их поля, включая скрытые и системные.
Выполним следующий запрос в консоли:
ВЫБРАТЬ
*
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В (&ПравильнаяНоменклатура, &ПроблемнаяНоменклатура)
Давайте проанализируем результаты выполнения запроса. Особое внимание уделим следующим реквизитам:
ТипНоменклатуры — если этот реквизит оказался не заполнен (имеет значение ПустаяСсылка), то при построении динамического списка подбора, где накладываются ограничения прав RLS (Restriction at Record Level) или внутренние соединения с регистрами сведений, эта позиция будет гарантированно отсекаться.ИспользоватьХарактеристики и связанные настройки вида номенклатуры — некорректно перенесенные флаги использования характеристик могут ломать левые соединения в запросе динамического списка.Статус — убедимся, что у проблемной позиции не установлен статус «В разработке» или «Закрыта». Пользователи с ограниченными правами по умолчанию не видят в подборе номенклатуру с такими статусами, в то время как администраторы имеют к ней доступ.Недействителен — проверьте, не установлена ли эта системная галочка, которая скрывает карточку из стандартных списков выбора.Если в ходе сравнения обнаружены расхождения или незаполненные реквизиты, их необходимо исправить. Сделать это можно с помощью типовой обработки «Групповое изменение реквизитов» или написав небольшую одноразовую обработку.
Стандартный интерактивный сброс настроек формы подбора через меню «Еще» -> «Изменить форму» -> «Установить стандартные настройки» сбрасывает только визуальное отображение колонок и кнопок. Настройки отборов динамического списка при этом могут оставаться сохраненными глубоко в системных таблицах базы данных.
Для полной очистки параметров подбора у конкретного пользователя выполним следующие действия в режиме 1С:Предприятие:
Документ.РеализацияТоваровУслуг.Форма.ФормаПодбораТоваров или общую форму подбора номенклатуры).Этот метод гарантированно удаляет все пользовательские «мусорные» отборы, которые могли записаться в системное ХранилищеНастроек.
В форме подбора 1С:Комплексная автоматизация 2.4 реализован сложный механизм фильтрации, настройки которого визуально не отображаются в стандартной панели отборов динамического списка. Пользователи часто случайно активируют их, даже не осознавая этого.
Давайте проверим наличие следующих установленных флагов в форме подбора у проблемного пользователя:
Даже если у пользователей назначен одинаковый профиль групп доступа, их персональные ограничения могут существенно отличаться. Ограничения прав (RLS) в 1С работают как неявные условия ГДЕ, добавляемые к каждому запросу к базе данных.
Проанализируем следующие параметры безопасности:
В комплексных конфигурациях 1С выбор номенклатуры жестко завязан на контекст создаваемого документа. Если у проблемного пользователя в силу его настроек по умолчанию или особенностей работы с клиентом в документ «Реализация товаров и услуг» подставляется определенное Соглашение с клиентом, в нем могут быть заданы ограничения:
Если все предыдущие шаги не принесли результата, придется прибегнуть к помощи конфигуратора и отладчика. Нам необходимо перехватить текст запроса динамического списка в момент его формирования.
Рассмотрим порядок действий для разработчика:
ПриСозданииНаСервере или в обработчиках, связанных с динамическим списком (например, ПриПолученииДанныхНаСервере).СписокНоменклатура.КомпоновщикНастроек.ПолучитьНастройки().Отбор. Именно там мы сможем увидеть программно наложенные фильтры, которые не отображаются в пользовательском интерфейсе, но отсекают нужную позицию.Используя этот комплексный подход, мы сможем быстро локализовать проблему: дело в некорректно перенесенных данных, скрытых настройках соглашений или же в ограничениях прав доступа RLS.