Как убрать команду создания на основании из формы документа в 1С, сохранив ее в форме списка?

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

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

Выясним причину, почему эту задачу нельзя решить только на уровне модуля объекта. Процедура-обработчик ОбработкаЗаполнения, расположенная в модуле создаваемого объекта, принимает в качестве параметра ДанныеЗаполнения только ссылку на документ-источник. Этот метод срабатывает одинаково вне зависимости от того, откуда была вызвана команда — из формы списка или из формы самого документа. Следовательно, ограничение или разделение логики должно выполняться исключительно на уровне пользовательского интерфейса управляемых форм.

Способ 1. Настройка интерфейса в режиме «1С:Предприятие» и тиражирование настроек

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

Разберем по шагам порядок действий:

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

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

  1. Переходим в раздел Администрирование → Настройки пользователей и прав.
  2. Открываем пункт Очистка и копирование настроек (или обработку «Копирование настроек пользователей»).
  3. Выбираем пользователя-образца, у которого уже настроена форма, отмечаем настройку нужного документа и копируем ее выбранным пользователям или всем пользователям информационной базы сразу.

Важно: Данный способ скрывает элемент интерфейса, но пользователи с правами на изменение настроек форм могут вернуть стандартный вид через пункт Еще → Изменить форму... → Установить стандартные настройки.

Способ 2. Отключение видимости команды в Конфигураторе или расширении

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

Посмотрим на варианты реализации в режиме разработки:

1. Статическое отключение через свойства элементов формы:

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

2. Программное управление видимостью в модуле формы:

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Скрытие конкретной команды создания на основании
    ЭлементКоманды = Элементы.Найти("ФормаДокументРеализацияТоваровУслугСоздатьНаОсновании");
    Если ЭлементКоманды <> Неопределено Тогда
        ЭлементКоманды.Видимость = Ложь;
    КонецЕсли;
    
КонецПроцедуры

Способ 3. Особенности конфигураций на базе Библиотеки стандартных подсистем (БСП)

В современных типовых конфигурациях (1С:Управление торговлей, 1С:ERP, 1С:Комплексная автоматизация, 1С:УНФ) платформенные команды создания на основании часто переопределяются механизмом подключаемых команд БСП.

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


// В модуле менеджера документа
Процедура ПриОпределенииКомандСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
    
    // Регистрация команды создания на основании
    Команда = КомандыСозданияНаОсновании.Добавить();
    Команда.Менеджер = "Документ.ПриходныйКассовыйОрдер";
    Команда.Представление = НСтр("ru = 'Приходный кассовый ордер'");
    
    // Если требуется исключить появление команды в форме объекта:
    // Настраиваем видимость и контекст размещения в зависимости от формы
    
КонецПроцедуры

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

← На главную