Как создать ярлык для запуска только внешнего отчета 1С без доступа пользователя к остальному интерфейсу?

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

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

В данной статье мы подробно разберем, как решить эту задачу с помощью создания специального ярлыка запуска, bat-файла, программирования логики работы самого внешнего отчета и обеспечения безопасности учетных данных.

---

Вариант 1. Запуск внешней обработки через командную строку (параметр /Execute)

Платформа «1С:Предприятие» обладает мощным механизмом управления через параметры командной строки. Мы можем создать ярлык или исполняемый файл (с расширением .bat или .cmd), который автоматически запустит систему, авторизуется под нужным пользователем и сразу откроет внешний отчет.

Рассмотрим структуру команды для запуска файловой информационной базы:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\Bases\ZUP" /N "ReportUser" /P "Password123" /Execute "C:\ExternalReports\EmployeeReport.epf" /DisableStartupMessages

Если ваша база данных развернута на сервере (клиент-серверный вариант), синтаксис команды немного изменится. Проанализируем этот пример:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /S "Server1C\ZUP_Production" /N "ReportUser" /P "Password123" /Execute "D:\1C_Upload\EmployeeReport.epf" /DisableStartupMessages

Разберем детально каждый параметр, который мы использовали в этих командах:

  1. "C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" — это путь к исполняемому файлу платформы 1С. Рекомендуется указывать путь к конкретной версии платформы либо к общему загрузчику 1cestart.exe, однако для надежности работы скриптов автоматизации часто выбирают прямой путь к конкретному релизу 1cv8.exe.
  2. ENTERPRISE — указывает системе, что запуск необходимо произвести в режиме «Предприятие» (пользовательский режим).
  3. /F "ПутьКБазе" (или /S "ИмяСервера\ИмяБазы") — указывает путь к файловой базе данных либо адрес серверной базы.
  4. /N "ИмяПользователя" — имя учетной записи (логин) в 1С, под которой будет осуществлен вход. Настоятельно рекомендуется завести для этого процесса отдельного пользователя с минимально необходимыми правами для формирования данного отчета.
  5. /P "Пароль" — пароль пользователя. Если у пользователя нет пароля, этот ключ можно опустить, но в целях безопасности у четной записи всегда должен быть надежный пароль.
  6. /Execute "ПутьКОбработке" — ключевой параметр нашей задачи. Он указывает платформе, что сразу после успешной авторизации необходимо запустить на выполнение внешний отчет или обработку по указанному пути.
  7. /DisableStartupMessages — этот ключ подавляет появление различных системных всплывающих сообщений при запуске (например, советы дня, сообщения об обновлении и другие неинформативные для пользователя окна).

Альтернативно, мы можем прописать эти параметры прямо в конфигурационный файл списка баз ibases.v8i. Найдем описание нашей базы в этом файле и добавим строку дополнительных параметров:


[Имя_Вашей_Базы]
Connect=File="C:\Bases\ZUP";
ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
OrderInList=16384
Folder=/
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3
AdditionalParameters=/Execute "C:\ExternalReports\EmployeeReport.epf"

---

Вариант 2. Ограничение интерфейса и завершение работы 1С при закрытии отчета

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

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

Для этого откроем наш внешний отчет в конфигураторе, перейдем в свойства основной формы и создадим обработчик события ПриЗакрытии. Напишем в модуле формы следующий код:


&НаКлиенте
Процедура ПриЗакрытии(Отказ)
    // Параметр Ложь отключает стандартный запрос системы "Подтверждаете выход?"
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Теперь, как только пользователь нажмет на крестик в окне отчета или на кнопку «Закрыть», сеанс работы 1С будет принудительно завершен.

Однако остается еще одна лазейка: пользователь может не закрывать форму отчета, а просто отодвинуть ее в сторону и переключиться на главное окно 1С. Чтобы исключить такую возможность, настроим режим открытия окна формы отчета.

В свойствах формы найдем параметр РежимОткрытияОкнаФормы (в англоязычной версии WindowOpeningMode) и установим для него значение Блокировать весь интерфейс (BlockWholeInterface). Это приведет к тому, что форма отчета откроется как модальное окно поверх всей системы 1С. Пользователь физически не сможет кликнуть ни на один элемент главного интерфейса программы, пока не закроет данную форму.

---

Вариант 3. Повышение безопасности и скрытие учетных данных

Если мы оставим параметры авторизации (логин и пароль) в обычном ярлыке Windows или в текстовом .bat-файле, любой мало-мальски грамотный пользователь сможет открыть свойства ярлыка или изменить bat-файл через «Блокнот» и узнать пароль пользователя с расширенными правами.

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

Способ А. Компиляция BAT-скрипта в формат EXE.
Мы можем написать классический bat-файл запуска, а затем скомпилировать его в бинарный исполняемый файл .exe с помощью специализированных бесплатных утилит (например, Bat To Exe Converter). После компиляции исходный текст скрипта с паролями зашифровывается внутри бинарного файла, и обычный пользователь не сможет прочитать учетные данные простым просмотром файла.

Способ Б. Использование Windows-аутентификации.
Это наиболее надежный и профессиональный метод. В конфигураторе 1С для пользователя, под которым запускается отчет, настраивается связь с его учетной записью Windows (Active Directory). При этом в ярлыке запуска нам больше не потребуется указывать ключи /N и /P. Достаточно будет использовать ключ Windows-авторизации:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\Bases\ZUP" /WA+ /Execute "C:\ExternalReports\EmployeeReport.epf"

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

---

Вариант 4. Сценарий с автоматической выгрузкой отчета во внешний файл

Рассмотрим еще более радикальный, но крайне удобный для конечного пользователя сценарий. Что если пользователю вообще не нужно видеть интерфейс 1С? Он нажимает на ярлык, система в фоновом режиме формирует отчет, сохраняет его на диск в формате PDF или Excel (XLSX), открывает этот файл на экране средствами операционной системы и тут же закрывает 1С.

Для реализации этого сценария откроем модуль формы нашего отчета и в обработчике события ПриОткрытии (или в обработчике ожидания, запущенном сразу после открытия) пропишем логику автоформирования:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Запускаем формирование отчета
    СформироватьОтчетНаСервере();
КонецПроцедуры

&НаСервере
Процедура СформироватьОтчетНаСервере()
    // Предположим, что результат отчета выводится в ТабличныйДокумент на форме
    ПутьКФайлу = КаталогВременныхФайлов() + "Сотрудники_ИНН_Адреса.pdf";
    
    // Записываем сформированный табличный документ в файл PDF
    ЭтотОбъект.Результат.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);
    
    // Передаем управление на клиент для открытия файла и закрытия программы
    ПодключитьОбработчикОжидания("ОткрытьФайлИВыйти", 0.1, Истина);
КонецПроцедуры

В модуле формы на клиенте опишем процедуру открытия готового файла и немедленного выхода из 1С:


&НаКлиенте
Процедура ОткрытьФайлИВыйти() Экспорт
    ПутьКФайлу = КаталогВременныхФайлов() + "Сотрудники_ИНН_Адреса.pdf";
    
    // Запускаем просмотр файла средствами Windows (откроется системный PDF-ридер)
    ЗапуститьПриложение(ПутьКФайлу);
    
    // Закрываем 1С без лишних вопросов
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

В результате пользователь увидит лишь кратковременное появление заставки 1С, после чего перед ним откроется готовый и красиво сверстанный документ PDF. Сама программа 1С к этому моменту уже будет закрыта, что полностью исключает несанкционированный доступ к базе данных.

---

Вариант 5. Использование возможностей БСП (Библиотеки стандартных подсистем)

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

В таком случае правильным и легитимным решением будет передача вашего разработанного отчета администратору 1С для его регистрации в справочнике «Дополнительные отчеты и обработки». Администратор сможет сделать это за пару минут:

  1. Зайти в раздел НСИ и администрирование -> Печатные формы, отчеты и обработки.
  2. Загрузить ваш отчет в список дополнительных обработок.
  3. В настройках указать быстрый доступ к отчету только для определенного пользователя или группы пользователей.
  4. Получить навигационную ссылку на этот отчет в базе данных (клавиши Ctrl + F11 в окне открытого отчета). Навигационная ссылка имеет вид типа e1cib/app/Справочник.ДополнительныеОтчетыИОбработки....

После этого на рабочем столе пользователя создается стандартный ярлык запуска 1С, но в параметрах запуска вместо ключа /Execute мы передаем ключ навигационной ссылки /URL:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\Bases\ZUP" /URL "e1cib/data/Справочник.ДополнительныеОтчетыИОбработки?ref=80eb00155d043b0111e3b5e406"

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

← На главную