В типовых конфигурациях 1С на базе Библиотеки стандартных подсистем (БСП), включая 1С:ERP Управление предприятием, предусмотрен встроенный пользовательский механизм управления составом печатных форм. Администратор может зайти в раздел администрирования печатных форм и снять флажки с тех печатных документов, которые не должны отображаться у конечных пользователей в меню командной панели документов. Однако на практике иногда возникает ситуация, когда флажки в настройках сняты, а команды печати продолжают отображаться в документах и журналах. Разберем, почему это происходит и как решить данную проблему.
Чтобы понять источник проблемы, проанализируем, как устроен механизм вывода команд печати в управляемом приложении:
ДобавитьКомандыПечати. В ней формируется список всех доступных для объекта печатных форм с их параметрами и идентификаторами.ПодключаемыеКоманды считывает сохраненные настройки и динамически отсекает отключенные команды перед генерацией кнопок на командной панели.Выясним основные причины, приводящие к некорректной работе механизма:
УправлениеПечатью или ПодключаемыеКоманды. При формировании командной панели сохраненные настройки фильтрации игнорировались, и меню генерировалось по полному списку.Рассмотрим по шагам варианты устранения неисправности.
Если проблема вызвана внутренней ошибкой релиза (как в случае с ERP 2.4.1.211), самым правильным решением является обновление базы на стабильный релиз. Например, в версии 1С:ERP 2.4.1.240 данный дефект был полностью устранен вендором, и механизм скрытия команд работает штатно.
Если обновление уже установлено или база работает на корректном релизе, но у пользователей меню не обновилось, выполним очистку кэша:
/ClearCache.Если оперативно обновить релиз всей информационной базы невозможно, но требуется срочно убрать лишние печатные формы, применим механизм расширений. Мы можем перехватить процедуру формирования команд печати в модуле менеджера нужного документа.
Посмотрим на пример кода в расширении, где мы удаляем ненужную печатную форму из таблицы команд:
&После("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
// Найдем и удалим ненужную команду печати по ее идентификатору
КоличествоЭлементов = КомандыПечати.Количество();
Для Индекс = 1 По КоличествоЭлементов Цикл
ОбратныйИндекс = КоличествоЭлементов - Индекс;
СтрокаКоманды = КомандыПечати[ОбратныйИндекс];
Если СтрокаКоманды.Идентификатор = "АктОбОказанииУслуг" Тогда
КомандыПечати.Удалить(ОбратныйИндекс);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Такой подход позволяет гарантированно исключить команду из подменю печати без снятия конфигурации с типовой поддержки.
Если требуется скрыть команду у конкретных пользователей без вмешательства в код: