В практической работе с конфигурацией «1С:Комплексная автоматизация 2» (а также в соплатформенных решениях «1С:ERP Управление предприятием» и «1С:Управление торговлей 11») часто возникает задача разграничения видимости печатных форм. Типичный пример: для пользователей с полными правами по кнопке «Печать» доступны абсолютно все варианты, включая специализированные офисные формы (например, в формате Microsoft Word), а обычные менеджеры видят лишь ограниченный базовый набор документов.
В этой статье мы подробно разберем, почему разработчики фирмы «1С» закладывают такие ограничения в типовые конфигурации, как обойти их программным путем с помощью механизма расширений и как решить эту задачу исключительно штатными интерактивными средствами системы без программирования.
Прежде чем переходить к настройкам, важно понять логику работы платформы и прикладного решения. Формирование печатных форм в формате Microsoft Word (файлы формата DOCX) силами встроенной Библиотеки стандартных подсистем (БСП) — это ресурсоемкая операция. Особенно остро эта проблема проявляется при работе пользователей в терминальном режиме (RDP) или на сервере приложений. Генерация документов задействует тяжелые механизмы распаковки zip-архивов шаблонов на стороне сервера и инициализацию COM-объектов.
Если предоставить доступ к массовой печати договоров или актов в формате Word десяткам рядовых менеджеров одновременно, это неизбежно вызовет критическую нагрузку на аппаратные ресурсы сервера, что приведет к замедлению работы всей информационной базы. Именно поэтому разработчики «1С» на уровне программного кода жестко ограничивают видимость таких команд печати, проверяя наличие у текущего пользователя роли системного администратора или полных прав с помощью функции Пользователи.ЭтоПолноправныйПользователь().
Если перед нами стоит задача дать доступ конкретной группе пользователей именно к стандартной встроенной печатной форме Microsoft Word (например, «Акт выполненных услуг (Microsoft Word)» в документе «Акт выполненных работ»), самым быстрым техническим решением будет использование механизма расширений.
Проанализируем ситуацию: команды печати регистрируются в модуле менеджера конкретного документа в экспортной процедуре ДобавитьКомандыПечати(КомандыПечати). Чтобы переопределить это поведение без изменения типовой конфигурации, выполним следующие шаги:
АктВыполненныхРабот).ДобавитьКомандыПечати в расширение с помощью аннотации &Перед.Рассмотрим пример программной реализации такого расширения:
&Перед("ДобавитьКомандыПечати")
Процедура Расш1_ДобавитьКомандыПечати(КомандыПечати)
// Проверяем, если текущий пользователь не является полноправным администратором
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
// Принудительно регистрируем команду печати Акта в формате MS Word
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьАктВыполненныхРаботMicrosoftWord";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "АктMicrosoftWord";
КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ (Microsoft Word)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;
КонецЕсли;
КонецПроцедуры
Этот метод решает задачу мгновенно, однако он увеличивает технический долг. При очередном обновлении релиза «1С:Комплексная автоматизация» структура модуля менеджера или состав параметров процедуры ДобавитьКомандыПечати могут измениться, что потребует адаптации кода расширения.
Чтобы избежать написания кода и сохранить полную обновляемость конфигурации, воспользуемся штатным и наиболее безопасным механизмом БСП — Дополнительными отчетами и обработками.
Разберем этот процесс по шагам:
Этот подход гарантирует стабильность системы при обновлениях и позволяет гибко управлять правами доступа силами администратора базы данных без привлечения программистов.
Если перед менеджерами стоит задача регулярной печати определенного индивидуального пакета документов (например, Акт выполненных работ + Счет-фактура + Договор в Word), в ERP-решениях предусмотрен мощный интерактивный инструмент.
Рассмотрим, как настроить работу с комплектами:
Подводя итог, можно сказать следующее: хотя написание программного кода в расширении (Решение 1) кажется наиболее простым программисту, в долгосрочной перспективе это создает дополнительные риски при поддержке системы. Перевод тяжелых или специфических печатных форм в разряд внешних обработок (ВПФ) с разграничением прав через «Быстрый доступ» (Решение 2) — это рекомендуемый и наиболее безопасный стандарт проектирования в экосистеме «1С».