Почему не скрываются печатные формы в подменю «Печать» в 1С:ERP и как это исправить?

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

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

Принцип работы подсистемы подключаемых команд печати

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

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

Причины, по которым команды не скрываются

Выясним основные причины, приводящие к некорректной работе механизма:

  1. Ошибки в релизах конфигурации и БСП: В некоторых промежуточных релизах конфигураций (в частности, в ветке 1С:ERP 2.4.1.211) разработчиками была допущена ошибка в общих модулях УправлениеПечатью или ПодключаемыеКоманды. При формировании командной панели сохраненные настройки фильтрации игнорировались, и меню генерировалось по полному списку.
  2. Кэширование настроек клиента: Если пользователь уже работал с документом, настройки командной панели могли зафиксироваться во временных данных тонкого клиента.
  3. Статические кнопки в форме: Если кнопка печати добавлена в дерево элементов формы вручную в конфигураторе, а не формируется динамически через БСП, глобальная настройка подменю на нее влиять не будет.

Способы решения проблемы

Рассмотрим по шагам варианты устранения неисправности.

Способ 1. Обновление релиза конфигурации (основное решение)

Если проблема вызвана внутренней ошибкой релиза (как в случае с ERP 2.4.1.211), самым правильным решением является обновление базы на стабильный релиз. Например, в версии 1С:ERP 2.4.1.240 данный дефект был полностью устранен вендором, и механизм скрытия команд работает штатно.

Способ 2. Очистка пользовательского кэша

Если обновление уже установлено или база работает на корректном релизе, но у пользователей меню не обновилось, выполним очистку кэша:

  1. Закроем все сеансы пользователя в базе данных.
  2. Выполним запуск тонкого клиента с ключом /ClearCache.
  3. В пользовательском режиме проверим настройки через меню Главное меню → Настройки → Очистить настройки для проблемной формы.

Способ 3. Переопределение состава команд через расширение конфигурации

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

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


&После("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
	
	// Найдем и удалим ненужную команду печати по ее идентификатору
	КоличествоЭлементов = КомандыПечати.Количество();
	Для Индекс = 1 По КоличествоЭлементов Цикл
		ОбратныйИндекс = КоличествоЭлементов - Индекс;
		СтрокаКоманды = КомандыПечати[ОбратныйИндекс];
		
		Если СтрокаКоманды.Идентификатор = "АктОбОказанииУслуг" Тогда
			КомандыПечати.Удалить(ОбратныйИндекс);
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

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

Способ 4. Пользовательская настройка формы

Если требуется скрыть команду у конкретных пользователей без вмешательства в код:

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