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

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

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

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

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

В системе 1С:Предприятие 8.3, особенно на управляемых формах, реализована гибкая система управления правами. Эти права могут регулировать не только общий доступ к объектам (документам, справочникам), но и видимость отдельных реквизитов (полей) динамического списка. Таким образом, для корректного отображения полей "Дата" и "Ссылка" могут требоваться специфические права доступа, которые не были включены в роль пользователя.

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

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

Первичные шаги по диагностике (общие рекомендации)

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

  1. Очистка кэша: Иногда некорректное отображение форм или списков может быть вызвано поврежденными или устаревшими данными в кэше клиентского приложения. Мы можем попробовать очистить кэш, чтобы исключить эту вероятность.
  2. Сброс пользовательских настроек списка: Пользовательские настройки могут быть сохранены таким образом, что поле "Дата" окажется скрытым. Мы можем попробовать сбросить настройки списка к стандартным. Для этого в форме списка найдем кнопку "Еще", затем выберем "Установить стандартные настройки" или "Настроить список" и проверим видимость полей.

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

Детальный анализ прав доступа: поиск отсутствующего звена

Раз проблема кроется в правах, давайте рассмотрим, как мы можем провести более глубокий анализ, чтобы найти то самое отсутствующее право:

  1. Сравнение эффективных прав: В конфигураторе мы можем воспользоваться инструментом для анализа эффективных прав доступа. Сравним права пользователя, у которого все работает корректно (например, администратора), с правами проблемного пользователя. Особое внимание уделим правам на чтение, просмотр, редактирование для объектов Документ.ПриходныйКассовыйОрдер, Документ.РасходныйКассовыйОрдер, а также на их реквизиты, связанные с датой и ссылкой.
  2. Постепенное добавление прав: Создадим копию проблемной роли и будем постепенно добавлять в нее права из роли с полным доступом, каждый раз проверяя, появилось ли поле "Дата". Это трудоемкий процесс, но он может помочь точно определить, какое именно право влияет на видимость поля.

Эффективное решение: использование расширения для корректировки динамического списка

Когда стандартные методы не помогают, а изменение типовой конфигурации нежелательно, мы можем применить более гибкий подход — использование расширений. Этот метод позволяет внести точечные изменения в логику работы формы, не затрагивая при этом исходную конфигурацию. Именно такой подход был предложен в одном из сообщений форума и является весьма эффективным обходным путем, если проблема действительно в том, как поля запрашиваются или связываются с элементами формы для данного пользователя.

Рассмотрим шаги по реализации этого решения:

1. Создание расширения

Первым шагом нам необходимо создать новое расширение конфигурации. Это делается в режиме "Конфигуратор" через меню "Конфигурация" -> "Расширения конфигурации" -> "Добавить". Присвоим расширению понятное имя, например, "ИсправлениеСпискаПКО".

2. Добавление формы списка документов в расширение

Далее нам потребуется добавить в наше расширение ту форму списка, в которой отсутствует поле "Дата".

  1. В дереве объектов конфигурации найдем необходимый документ, например, Документ.ПриходныйКассовыйОрдер.
  2. Раскроем его ветку и найдем форму списка (например, ФормаСписка или ФормаСпискаДокументов, как в сообщении форума).
  3. Выделим эту форму и добавим ее в расширение. Для этого обычно используется контекстное меню (правая кнопка мыши) с пунктом "Добавить в расширение".
  4. Убедимся, что в расширении появилось наше добавление.

3. Изменение запроса динамического списка

Динамический список в 1С формируется на основе запроса, который использует Систему Компоновки Данных (СКД). Нам необходимо скорректировать этот запрос, чтобы поля "Дата" и "Номер" явно выбирались и были доступны.

  1. В расширении откроем добавленную форму списка.
  2. На форме найдем элемент "Динамический список" (обычно он имеет тип Таблица и имя, схожее с Список).
  3. В свойствах динамического списка найдем свойство "Основная таблица" или "Запрос". Если используется произвольный запрос, нам нужно будет изменить именно его.
  4. Откроем текст запроса. В нем мы найдем выборку полей из таблицы документа.
  5. Добавим или скорректируем выбор полей Дата и Номер, присвоив им новые псевдонимы (алиасы). Это поможет обойти потенциальные проблемы с правами на стандартные имена полей. Например, если в запросе есть строка ПриходныеКассовыеОрдера.Дата, мы изменим ее на ПриходныеКассовыеОрдера.Дата КАК ДатаПКО. Аналогично для номера: ПриходныеКассовыеОрдера.Номер КАК НомерПКО.

Пример фрагмента запроса (предполагая, что основная таблица документа называется ПриходныеКассовыеОрдера):


ВЫБРАТЬ
    ПриходныеКассовыеОрдера.Ссылка,
    ПриходныеКассовыеОрдера.ВерсияДанных,
    ПриходныеКассовыеОрдера.ПометкаУдаления,
    ПриходныеКассовыеОрдера.Номер КАК НомерПКО, // Изменено
    ПриходныеКассовыеОрдера.Дата КАК ДатаПКО,   // Изменено
    ПриходныеКассовыеОрдера.Проведен,
    ... // Другие поля
ИЗ
    Документ.ПриходныйКассовыйОрдер КАК ПриходныеКассовыеОрдера

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

4. Корректировка ПутиКДанным для колонок формы

После изменения запроса динамического списка нам необходимо связать элементы формы (колонки) с новыми именами полей, которые мы определили в запросе.

  1. В той же форме списка, открытой в расширении, перейдем на вкладку "Элементы".
  2. Найдем элементы формы, соответствующие колонкам "Дата" и "Номер". Если их нет, мы можем их добавить.
  3. Для каждого такого элемента (колонки) в его свойствах найдем свойство ПутьКДанным (DataPath).
  4. Изменим значение этого свойства на новые псевдонимы, которые мы использовали в запросе. Например, для колонки "Дата" установим ПутьКДанным = ПриходныеКассовыеОрдера.ДатаПКО, а для колонки "Номер" — ПутьКДанным = ПриходныеКассовыеОрдера.НомерПКО.

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

5. Публикация и тестирование расширения

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

Резюмируем и выбираем оптимальный путь

Мы выяснили, что отсутствие поля "Дата" в списках документов для пользователя при его наличии у администратора в 1С:Предприятии 8.3 практически всегда является следствием некорректно настроенных прав доступа. Несмотря на то, что это может быть вызвано точечными ограничениями на реквизиты, найти это конкретное право бывает чрезвычайно сложно и трудоемко.

Именно поэтому предложенное решение с использованием расширения конфигурации является оптимальным. Оно позволяет нам:

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

← На главную