Перейти к основному содержимому

Публикация базы 1С:Предприятие

к сведению

Доступно только по подписке.

Обзор​

Команда tuna 1c публикует базу 1С:Предприятие и открывает к ней доступ из интернета: через веб-клиент в браузере или тонкий клиент 1С. Ставить и настраивать веб-сервер, пробрасывать порты и получать «белый» IP не нужно.

У 1С нет собственного HTTP-сервера: веб-клиент и тонкий клиент по HTTP обслуживает модуль расширения веб-сервера, который загружается в Apache или IIS. tuna 1c делает всю эту работу сама:

  1. находит установленную платформу 1С и её модуль расширения веб-сервера;
  2. при первом запуске скачивает Apache httpd с releases.tuna.am в кэш (%LocalAppData%\tuna);
  3. запускает его на 127.0.0.1 и публикует в нём базу;
  4. открывает HTTP-туннель к этому веб-серверу.

База доступна по адресу <адрес туннеля>/1c/, корень адреса перенаправляет туда же.

Требования​

  • Подписка tuna. На бесплатном тарифе команда не запустится: сервер ответит 1C unavailable for free plan.
  • Windows x64. Команда есть только в сборке tuna для Windows x64. Платформа 1С при этом может быть и 32-, и 64-битной. В сборках для Linux, macOS и Windows ARM64 команды нет.
  • Компонент «Модули расширения веб-сервера» в установке 1С. Без него tuna сообщит, что модуль не найден. Как его установить.
  • Лицензия 1С, допускающая подключение через веб-сервер. Учебная версия не подходит.

При первом запуске tuna также установит Microsoft Visual C++ Redistributable, если его нет в системе: без него Apache не запускается. Windows может запросить подтверждение (UAC).

Установка модулей расширения веб-сервера​

Компонент входит в дистрибутив платформы, но по умолчанию может быть не отмечен. Добавить его в уже установленную 1С:

  1. Откройте «Параметры» → «Приложения» → «Установленные приложения», найдите «1С:Предприятие 8» и в меню «…» нажмите «Изменить». В Windows 10 и старше то же самое делается через «Панель управления» → «Программы и компоненты».

    1С:Предприятие 8 в списке установленных приложений Windows, пункт «Изменить»
  2. В установщике выберите режим «Изменить» и нажмите «Далее».

    Режим «И�зменить» в установщике 1С
  3. В списке компонентов нажмите на значок у «Модулей расширения веб-сервера» и выберите «Данный компонент будет установлен на локальный жесткий диск».

    Включение компонента «Модули расширения веб-сервера» в установщике 1С
  4. Нажмите «Далее» и дождитесь окончания установки.

Проверить результат можно командой tuna 1c discover: рядом с установкой появится путь к wsap24.dll.

Быстрый старт​

Один раз выберите установку 1С и базу в мастере:

tuna 1c setup

Мастер спросит установку 1С, базу, локальный порт и место сохранения. Шаг с единственным вариантом он пропускает.

Опубликуйте базу и сразу закройте её паролем:

tuna 1c --basic-auth="login:password"

В шапке интерфейса в терминале будут:

СтрокаЧто в ней
ForwardingПубличный адрес туннеля
LocalЛокальный адрес публикации, по нему базу можно открыть с этого же компьютера
1C clientГотовый параметр /WS"…" для запуска тонкого клиента
PlatformКаталог и разрядность используемой платформы 1С
WarningПредупреждения: база открыта без защиты, используется учебная версия

Откройте адрес из строки Forwarding в браузере или подключите тонкий клиент. Если мастер не нашёл 1С или базу, загляните в раздел Диагностика.

Примеры​

примечание

Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:

tuna 1c --help

Почти для всех флагов есть аналогичные переменные окружения.

Какую базу публиковать​

Базу можно указать тремя способами:

tuna 1c "Моя база"
tuna 1c "C:\Bases\MyBase"
tuna 1c "Srvr=localhost;Ref=MyBase"
  1. Имя базы из списка стартера 1С — того же, что вы видите в окне запуска 1С.
  2. Каталог файловой базы.
  3. Строка подключения к серверной базе.

Без аргумента tuna берёт базу из сохранённых настроек. Если их нет и в списке стартера одна база — публикует её, если несколько — предложит выбрать.

предупреждение

Публикация серверных баз (Srvr=…;Ref=…) поддерживается, но на рабочем кластере 1С мы её пока не проверяли. Если столкнётесь с проблемой, напишите нам.

Сохранённые настройки​

tuna 1c setup записывает выбор в секцию 1c конфигурационного файла — общего tuna.yml или .tuna.yml в текущем каталоге:

1c:
home: 'C:\Program Files (x86)\1cv8'
platform: 'x86'
name: 'Моя база'
infobase: 'File="C:\Bases\MyBase";'
port: 8314

Аргумент и флаги командной строки важнее настроек из файла, а .tuna.yml в текущем каталоге перекрывает общий tuna.yml. Чтобы изменить настройки, запустите мастер ещё раз или поправьте файл вручную.

Установка 1С в нестандартном каталоге​

tuna ищет платформу в C:\Program Files\1cv8 и C:\Program Files (x86)\1cv8. Если 1С установлена в другое место или нужно выбрать одну из нескольких установок, укажите каталог и разрядность:

tuna 1c "C:\Bases\MyBase" --1c-home="D:\1cv8" --1c-platform=x86

Локальный порт​

По умолчанию веб-сервер занимает случайный свободный порт на 127.0.0.1. Зафиксировать порт:

tuna 1c "C:\Bases\MyBase" --1c-port=8314

Постоянный адрес​

Адрес туннеля задаётся так же, как у HTTP-туннеля: поддоменом или своим доменом. С постоянным адресом пользователям не придётся менять ссылку и параметр /WS после перезапуска.

tuna 1c "Моя база" --subdomain=my-1c
tuna 1c "Моя база" --domain=1c.example.com

С указанием токена​

Можно указать специфичный токен через флаг --token или переменную окружения TUNA_TOKEN. Переопределение происходит в соответствии с политикой очерёдности конфигурации.

tuna 1c "Моя база" --token=tt_***

С указанием региона для подключения​

Можно указать специфичный регион через флаг --location/-l или переменную окружения TUNA_LOCATION. Переопределение происходит в соответствии с политикой очерёдности конфигурации.

tuna 1c "Моя база" --location=ru

Подключение клиентов​

Веб-клиент​

Откройте адрес туннеля в браузере, tuna перенаправит на /1c/:

https://<адрес туннеля>/1c/
Веб-клиент 1С, открытый по адресу туннеля

Тонкий клиент​

Скопируйте параметр из строки 1C client в шапке и запустите тонкий клиент:

1cv8c.exe ENTERPRISE /WS"https://<адрес туннеля>/1c"

Тот же адрес можно добавить в список баз стартера: «Добавить» → «Добавление в список существующей информационной базы» → «На веб-сервере».

Безопасность​

осторожно

tuna 1c открывает базу всему интернету: адрес туннеля может подобрать или найти кто угодно. Между посторонним и вашими данными остаётся только окно входа 1С.

Если запустить команду без --basic-auth и --key-auth, tuna покажет предупреждение. Что стоит сделать:

  • Закрыть публикацию паролем — tuna спросит его раньше, чем запрос дойдёт до 1С:

    tuna 1c "Моя база" --basic-auth="login:password"
  • Задать надёжные пароли всем пользователям базы. Пользователь без пароля или с простым паролем — это открытая дверь в базу. Особенно проверьте учётные записи с правами администратора.

  • Ограничить доступ по IP, если адреса пользователей известны:

    tuna 1c "Моя база" --cidr-allow="203.0.113.0/24"

Работают и остальные способы защиты доступа HTTP-туннеля: --key-auth, --cidr-deny, --rate-limit. Запросы к базе видны в инспекторе, отключить его можно флагом --inspect=false.

Лицензии 1С​

tuna публикует базу, но не меняет правила лицензирования 1С: сколько пользователей могут работать через веб-сервер одновременно, определяет ваша лицензия.

Учебная версия не подходит​

Учебная версия платформы (каталог 1cv8t) допускает одно подключение к базе, и его занимает сама публикация. Войти в базу не получится ни веб-клиентом, ни тонким. tuna предупредит об этом в шапке и в выводе tuna 1c discover.

Лицензия для разработчиков​

Для пробы не обязательно покупать лицензию 1С: подойдёт бесплатная лицензия для разработчиков, её выдаёт developer.1c.ru. С ней мы и проверяли команду. Это лицензия 1С, она не заменяет подписку tuna. Условия и ограничения лицензии смотрите на сайте 1С. В нашей проверке одновременно работал один веб-клиент: пока вкладка с базой не закрыта или сеанс не завершился по тайм-ауту, войти из другого браузера не получится.

Файлы публикации​

Для каждой базы tuna создаёт каталог публикации в %LocalAppData%\tuna\1c\. В нём лежат:

ФайлНазначение
default.vrdОписание публикации 1С
httpd.confКонфигурация Apache, создаётся заново при каждом запуске
access.log, error.logЖурналы веб-сервера

Существующий default.vrd tuna не перезаписывает, поэтому его можно править вручную — например, включить OData или HTTP-сервисы. Вернуть исходный файл:

tuna 1c "Моя база" --reset-vrd

Свой каталог публикации задаётся флагом --1c-publish-dir:

tuna 1c "Моя база" --1c-publish-dir="C:\tuna-1c\my-base"

Диагностика​

Команда tuna 1c discover показывает, что tuna нашла на компьютере: установки 1С, путь к модулю расширения веб-сервера в каждой из них и базы из списка стартера.

tuna 1c discover
Что в выводеЧто делать
У установки написано web server extension module is not installedУстановите компонент
У модуля пометка training edition, single connectionЭто учебная версия, войти в базу через неё не получится
Установок нетУкажите каталог флагом --1c-home
Баз нетПередайте каталог базы или строку подключения аргументом

Если база опубликовалась, но не открывается, посмотрите error.log в каталоге публикации.

Справочник флагов​

ФлагПеременная окруженияОписание
--1c-homeTUNA_1C_HOMEКаталог установки 1С:Предприятие
--1c-platformTUNA_1C_PLATFORMРазрядность платформы: x64 или x86
--1c-portTUNA_1C_PORTЛокальный порт веб-сервера, по умолчанию случайный свободный
--1c-publish-dirTUNA_1C_PUBLISH_DIRКаталог с файлами публикации
--reset-vrdСоздать default.vrd заново, даже если он есть
--basic-authTUNA_BASIC_AUTHЛогин и пароль для доступа к публикации
--key-authTUNA_KEY_AUTHКлюч в заголовке X-Token
--cidr-allow, --cidr-denyTUNA_CIDR_ALLOW, TUNA_CIDR_DENYДоступ по подсетям IP
--rate-limitTUNA_RATE_LIMITОграничение частоты запросов
--subdomain, -sTUNA_SUBDOMAINПоддомен
--domain, -dTUNA_DOMAINСобственный домен
--location, -lTUNA_LOCATIONРегион подключения
--inspectTUNA_INSPECTВключить или отключить инспектор запросов
--qrTUNA_QR_CODEПоказать QR-код с адресом
--tokenTUNA_TOKENТокен

Ограничения​

Команда новая. Мы проверяли её на Windows 11 с 32-битной платформой 1С 8.3.27 и файловой базой: вход веб-клиентом и тонким клиентом по публичному адресу, запуск по имени базы и без аргументов после tuna 1c setup, --1c-port, --basic-auth в браузере. Пока не проверены:

  • тонкий клиент вместе с --basic-auth;
  • 64-битная платформа 1С и 1С 8.5;
  • серверные базы на рабочем кластере 1С;
  • каталоги баз с кириллицей и пробелами в пути;
  • отчёты и печатные формы в веб-клиенте;
  • запуск сервисом.

Если что-то из этого не работает у вас, напишите нам — поможем разобраться.