Почему в 1С:Комплексная автоматизация 2 отсутствует кнопка Создать в журнале документов

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

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

Анализируем права доступа и RLS

Первым делом проанализируем ситуацию, с которой столкнулся автор темы. Часто разработчики смотрят на шаблоны ограничений доступа, такие как #ПоЗначениямРасширенный. Однако важно понимать, что ограничения на Чтение не имеют прямого отношения к возможности создания нового документа. Если пользователю разрешено чтение, он увидит список, но кнопка создания управляется правами на Добавление и, что критически важно, Интерактивное добавление.

Рассмотрим подробнее: право Добавление позволяет создавать объект программно (из кода), а право Интерактивное добавление отвечает именно за наличие кнопки в интерфейсе и возможность ручного ввода пользователем. Если в роли установлен флаг на добавление, но снят на интерактивное добавление — кнопка "Создать" исчезнет. Для анализа того, какие роли и профили определяют права доступа к проблемному объекту, можно использовать инструмент для управления правами доступа.

Проверяем функциональные опции системы

В современных конфигурациях 1С интерфейс строится динамически в зависимости от настроек программы. Разберем ситуацию: если в разделе НСИ и администрирование отключена опция, отвечающая за использование конкретного типа документа (например, Заказы на перемещение), система автоматически скроет все команды создания этого документа во всех формах и журналах.

Для диагностики проверим значение константы, связанной с функциональной опцией. Это можно сделать через Функции для технического специалиста. Если опция выключена, никакие настройки ролей не заставят кнопку появиться. Проанализируем также метаданные: в свойствах документа ЗаказНаПеремещение в поле Функциональные опции может быть указано несколько параметров. Только при истинности каждого из них команда создания будет доступна в интерфейсе.

Влияние расширений конфигурации

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

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

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Ошибочная логика, блокирующая создание
    Элементы.ФормаСоздать.Доступность = Ложь;
    // Или установка всей формы в режим просмотра
    ТолькоПросмотр = Истина;
КонецПроцедуры

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

Механизм Реестра документов

В конфигурациях КА 2 и ERP списки документов часто строятся не на основной таблице документов, а на основе регистра сведений РеестрДокументов. Это сделано для повышения производительности при отображении сводных журналов. Проанализируем, как это влияет на кнопку создания:

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

Диагностика через программный код

Если визуальный осмотр не помогает, проанализируем ситуацию с помощью отладки. Мы можем проверить доступность права на создание непосредственно в коде формы. Рассмотрим полезный фрагмент кода для проверки прав:


// Проверка права на интерактивное добавление конкретного типа документа
Если ПравоДоступа("ИнтерактивноеДобавление", Метаданные.Документы.ЗаказНаПеремещение) Тогда
    Сообщить("Право на создание есть");
Иначе
    Сообщить("Право на создание отсутствует у текущего пользователя");
КонецЕсли;

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

Итоги и рекомендации

Разберем краткий чек-лист, который поможет быстро решить проблему в будущем:

Совместный анализ подобных проблем показывает, что в 90% случаев причина кроется либо в специфических механизмах БСП (как реестр документов), либо в побочных эффектах от использования расширений конфигурации, которые перекрывают стандартную логику платформы.

← На главную