В процессе разработки часто возникает необходимость обеспечить бесшовный переход пользователя из одной информационной базы в другую. Это может быть полезно при разделении учета на управленческий и регламентированный, при работе с архивами или в распределенных системах. Главная сложность здесь заключается не просто в запуске приложения, а в автоматической передаче учетных данных (логина и пароля), чтобы пользователю не приходилось вводить их повторно. Рассмотрим подробно, как реализовать этот функционал для различных типов клиентов 1С.
Для запуска исполняемого файла 1С с конкретными параметрами в платформе предусмотрены функции ЗапуститьПриложение() и КомандаСистемы(). Основное различие между ними заключается в том, что ЗапуститьПриложение() работает более гибко и позволяет не дожидаться завершения работы вызванной программы.
Разберем основные ключи командной строки, которые нам понадобятся:
ИмяСервера\ИмяБазы.Проанализируем пример кода, который формирует строку запуска динамически. Важно не прописывать путь к программе жестко (например, C:\Program Files\1cv8...), так как при обновлении платформы путь изменится. Используем функцию КаталогПрограммы().
// Определяем путь к текущему исполняемому файлу (тонкий клиент)
ПутьКЗапуску = КаталогПрограммы() + "1cv8c.exe";
// Формируем параметры подключения
Сервер = "Server1C";
ИмяБазы = "Trade_Base";
Логин = "Ivanov";
Пароль = "SuperPassword123";
// Важно: параметры, содержащие пробелы или спецсимволы, заключаем в кавычки
// Используем три кавычки для вставки одной кавычки внутрь строки 1С
СтрокаЗапуска = """" + ПутьКЗапуску + """"
+ " ENTERPRISE /S " + Сервер + "\" + ИмяБазы
+ " /N """ + Логин + """"
+ " /P """ + Пароль + """";
ЗапуститьПриложение(СтрокаЗапуска);
Обратим внимание на важный нюанс: если в имени сервера или базы используются обратные косые черты, их иногда требуется экранировать (использовать \\ вместо \), особенно при работе в среде Linux или при передаче строки через промежуточные скрипты. В операционной системе Windows для ключа /S обычно достаточно одной наклонной черты.
Если ваши пользователи работают через веб-клиент, метод с запуском .exe файла не подойдет из-за ограничений безопасности браузера. В этом случае мы будем использовать формирование прямой URL-ссылки. Платформа 1С позволяет передавать параметры авторизации прямо в строке адреса.
Рассмотрим структуру такой ссылки:
http://[АдресСервера]/[ИмяПубликации]/ru_RU/?N=[Логин]&P=[Пароль]
Для реализации перехода в коде используем метод ПерейтиПоСсылке(). Этот метод универсален и работает как в тонком, так и в веб-клиенте.
Процедура ОткрытьБазуВБраузере(Команда)
Адрес = "http://192.168.1.10/my_base";
Логин = "Admin";
Пароль = "12345";
// Формируем итоговый URL
ПолнаяСсылка = Адрес + "/ru_RU/?N=" + Логин + "&P=" + Пароль;
// Выполняем переход
ПерейтиПоСсылке(ПолнаяСсылка);
КонецПроцедуры
Важный момент: передача пароля в открытом виде в URL-строке является небезопасной, так как ссылка сохраняется в истории браузера. Используйте этот метод только в защищенных локальных сетях или при использовании временных паролей.
Современные версии платформы регистрируют в операционной системе собственный протокол. Это позволяет запускать тонкий клиент, не зная точного пути к исполняемому файлу на диске пользователя. Система сама определит установленную версию 1С и запустит её.
Синтаксис выглядит следующим образом:
// Для клиент-серверной базы
ЗапуститьПриложение("1c://server/base_name /N""Логин"" /P""Пароль""");
// Для файловой базы
ЗапуститьПриложение("1c://file/C:/Bases/MyBase /N""Логин"" /P""Пароль""");
Выясним преимущества этого метода: он наиболее устойчив к обновлениям платформы и разрядности системы (x86/x64), так как делегирует поиск нужного 1cv8c.exe самой операционной системе.
Если параметров запуска слишком много (например, нужно указать дополнительные ключи /ClearCache или специфические настройки подключения), можно программно создать временный файл с расширением .v8i. Это текстовый файл формата ini, который понимает стартер 1С.
Пример структуры такого файла:
[Название базы]
Connect=Srvr="Server";Ref="Base";
ID=...
OrderInList=1
Folder=/
После создания такого файла на диске достаточно вызвать ЗапуститьПриложение("ПутьКФайлу.v8i"). Однако стоит помнить, что параметры пользователя (логин и пароль) в самом .v8i файле обычно не хранятся в открытом виде, поэтому для автоматического входа их все равно придется добавлять в строку запуска как ключи /N и /P.
Проанализируем ситуацию с безопасностью. Использование ключа /P передает пароль в открытом виде. Его можно увидеть в диспетчере задач в списке запущенных процессов. Если требования безопасности в вашей организации высоки, рассмотрите следующие альтернативы:
/N и /P вообще не понадобятся. Система сама авторизует пользователя под текущей сессией Windows.Новый COMОбъект("V83.Application"). Это позволит работать с данными программно "в фоне".Рассмотрим, почему код может не срабатывать:
exe или в логине есть пробел, вся подстрока обязательно должна быть в кавычках. В 1С это пишется как """Строка""".КаталогПрограммы() убедитесь, что на компьютере установлена именно та версия тонкого клиента, которая совместима с вызываемой базой.Подводя итог, наиболее надежным и простым методом для Тонкого клиента является использование протокола 1c://, а для Веб-клиента — формирование URL с параметрами и метод ПерейтиПоСсылке().