Удалённая работа с 1С за 7 шагов: облако и боты

Почему удалённый доступ к 1С — это уже не роскошь, а необходимость
Пандемия, санкционные ограничения, распределённые команды и растущий спрос на гибкий формат занятости — всё это превратило удалённую работу с корпоративными системами из экзотики в стандартную практику. По данным исследований, более 60% российских компаний, использующих 1С, столкнулись с необходимостью организовать доступ к базам данных вне офиса. При этом многие до сих пор решают задачу «в лоб» — через небезопасный RDP или VPN без должной настройки, создавая серьёзные риски для бизнеса.
В этой статье мы разберём системный подход: как за 7 чётких шагов выстроить полноценную инфраструктуру удалённой работы с 1С, используя мобильный клиент, облачные технологии и Telegram-ботов для автоматизации рутинных операций. Каждый шаг сопровождается практическими примерами кода и конкретными рекомендациями.
Если вы только начинаете изучать возможности автоматизации или хотите найти специалиста для реализации проекта, обратите внимание на найти разработчика 1С — на платформе собраны проверенные эксперты по всем направлениям.
Шаг 1. Аудит текущей инфраструктуры и выбор архитектуры
Прежде чем что-то менять, необходимо понять, с чем вы работаете. Аудит включает три ключевых блока: анализ текущей схемы доступа, оценку нагрузки и определение требований к безопасности.
Что нужно проверить перед началом
- Версия платформы 1С: для мобильного клиента требуется не ниже 8.3.14, для полноценной работы через веб-клиент — 8.3.18+.
- Тип лицензирования: клиентские лицензии, серверные лицензии, наличие лицензий на веб-сервер и мобильный клиент.
- Текущая нагрузка на сервер: количество одновременных пользователей, объём базы данных, производительность сервера СУБД.
- Конфигурация: типовая или доработанная — это критично для выбора способа публикации.
- Требования регуляторов: если компания работает с персональными данными, необходимо соблюдать 152-ФЗ.
Три архитектурных варианта
| Вариант | Описание | Подходит для | Стоимость |
|---|---|---|---|
| Публикация на веб-сервере | 1С публикуется через IIS или Apache, доступ через браузер | До 50 пользователей | Низкая |
| Облачный сервис (1С:Fresh, Яндекс.Облако) | База в облаке, доступ через интернет | Любой масштаб | Средняя (подписка) |
| Терминальный сервер + VPN | Пользователи подключаются к RDS/Citrix | Сложные конфигурации с доработками | Высокая |
Для большинства компаний малого и среднего бизнеса оптимальным является комбинированный подход: публикация базы через веб-сервер для основной работы плюс Telegram-бот для быстрых операций (согласования, уведомления, отчёты).
Шаг 2. Публикация базы 1С на веб-сервере
Публикация информационной базы — это фундамент для работы через веб-клиент и мобильное приложение. Процедура выполняется через конфигуратор или утилиту командной строки.
Публикация через конфигуратор
Откройте конфигуратор, перейдите в меню Администрирование → Публикация на веб-сервере. Укажите имя публикации (латиницей, без пробелов), выберите веб-сервер (IIS или Apache), задайте каталог публикации. Убедитесь, что установлены флажки «Веб-клиент» и «Мобильный клиент».
Публикация через командную строку
// Пример публикации через webinst.exe (выполняется в командной строке Windows)
// webinst -publish -iis -wsdir "erp" -dir "C:\inetpub\wwwroot\erp"
// -connstr "Srvr=server1С;Ref=erp_base;"
// Проверка публикации из 1С (встроенный язык)
Процедура ПроверитьДоступностьВебСервера()
Попытка
// Формируем строку подключения для проверки
СтрокаПодключения = "ws=http://myserver/erp;Usr=Администратор;Pwd=;";
// Создаём объект для тестового соединения
Соединение = Новый COMОбъект("V83.COMConnector");
Соединение.Connect(СтрокаПодключения);
Сообщить("Веб-сервер доступен. Публикация выполнена успешно.");
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Настройка файла default.vrd
После публикации в каталоге появится файл default.vrd. Важно проверить и при необходимости скорректировать его содержимое — особенно параметры ib (строка подключения к базе) и enableStandardOData (для REST-интеграции).
Важно: При использовании нестандартного порта (не 80/443) необходимо открыть его в брандмауэре Windows и на сетевом оборудовании. Для продуктивной среды обязательно используйте HTTPS с валидным SSL-сертификатом.
Шаг 3. Настройка мобильного клиента 1С
Мобильный клиент 1С — это не мобильное приложение в привычном смысле, а адаптированный веб-клиент, работающий в браузере мобильного устройства. Параллельно существует Мобильная платформа 1С — для создания нативных приложений. Разберём оба варианта.
Веб-клиент на мобильном устройстве
После публикации базы пользователи могут открыть 1С в браузере смартфона или планшета. Для корректной работы необходимо:
- Использовать браузер Chrome или Safari последних версий.
- Убедиться, что интерфейс конфигурации адаптирован под малые экраны (используется управляемое приложение).
- Настроить профили пользователей с ограниченными правами — мобильным сотрудникам не нужен доступ ко всем объектам системы.
Адаптация форм для мобильных устройств
// Пример адаптации формы документа для мобильного клиента
// Размещается в модуле формы документа
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Определяем тип клиента и адаптируем интерфейс
Если ЭтоМобильныйКлиент() Тогда
НастроитьМобильныйИнтерфейс();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьМобильныйИнтерфейс()
// Скрываем элементы, не нужные на мобильном
Элементы.ГруппаДополнительноеИнфо.Видимость = Ложь;
Элементы.КоманднаяПанельДополнительно.Видимость = Ложь;
// Увеличиваем высоту строк таблицы для удобства нажатия
Элементы.ТоварыТабличнаяЧасть.ВысотаСтроки = 2;
// Показываем только ключевые колонки
Элементы.ТоварыКоличество.Видимость = Истина;
Элементы.ТоварыЦена.Видимость = Истина;
Элементы.ТоварыСумма.Видимость = Истина;
Элементы.ТоварыСерия.Видимость = Ложь;
Элементы.ТоварыКомментарий.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Функция ЭтоМобильныйКлиент() Экспорт
// Проверяем тип клиента через системный перечисление
Возврат ТипКлиентскогоПриложения() = ТипКлиентскогоПриложения.МобильныйКлиент;
КонецФункции
Настройка прав для удалённых пользователей
Создайте отдельный профиль групп доступа для удалённых сотрудников. Ключевой принцип — минимум необходимых прав. Например, торговый представитель на выезде должен видеть только свои заказы и остатки по складу, но не иметь доступа к финансовым отчётам.
Шаг 4. Перенос базы в облако: варианты и сравнение
Облачное размещение базы данных 1С решает сразу несколько проблем: отказоустойчивость, масштабируемость, доступность из любой точки мира и снятие нагрузки по администрированию с внутренней IT-службы.
Основные варианты облачного размещения
1С:Fresh (SaaS) — официальный облачный сервис фирмы «1С». Подходит только для типовых конфигураций без глубоких доработок. Преимущества: автоматическое обновление, встроенная отказоустойчивость, соответствие 152-ФЗ. Ограничения: нельзя подключить внешние обработки произвольно, ограничены возможности интеграции.
IaaS (Яндекс.Облако, VK Cloud, Selectel) — виртуальный сервер в облаке, на котором разворачивается полноценная среда 1С. Максимальная гибкость, поддержка любых конфигураций и доработок. Требует администрирования.
Партнёрский хостинг 1С — услуга авторизованных партнёров «1С». Промежуточный вариант: управляемый сервис с поддержкой доработок.
Автоматизация резервного копирования в облаке
// Процедура автоматического создания резервной копии
// и выгрузки в облачное хранилище (например, через HTTP-сервис)
Процедура СоздатьРезервнуюКопиюВОблаке() Экспорт
// Путь для временного хранения копии
ПутьКопии = КаталогВременныхФайлов() + "backup_"
+ Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss") + ".dt";
// Выгружаем информационную базу
ВыгрузитьИнформационнуюБазу(ПутьКопии);
// Передаём файл на облачный сервер через HTTP
Запрос = Новый HTTPЗапрос("/upload/backup");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + ПолучитьТокенОблака());
Запрос.Заголовки.Вставить("Content-Type", "application/octet-stream");
ФайлКопии = Новый ДвоичныеДанные(ПутьКопии);
Запрос.УстановитьТелоИзДвоичныхДанных(ФайлКопии);
Соединение = Новый HTTPСоединение(
"storage.mycloud.ru",
443,
,
,
,
30,
Новый ЗащищённоеСоединениеOpenSSL()
);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Сообщить("Резервная копия успешно загружена в облако.");
// Удаляем временный файл
УдалитьФайлы(ПутьКопии);
Иначе
Сообщить("Ошибка загрузки копии. Код: " + Ответ.КодСостояния);
КонецЕсли;
КонецПроцедуры
Функция ПолучитьТокенОблака()
// Токен хранится в константе или настройках
Возврат Константы.ТокенОблачногоХранилища.Получить();
КонецФункции
Если ваша компания активно работает с электронными документами, убедитесь, что облачная среда поддерживает интеграцию с операторами ЭДО. Подробнее о настройке можно узнать в разделе про электронный документооборот.
Шаг 5. Создание Telegram-бота для работы с 1С
Telegram-бот — это не замена полноценному клиенту 1С, а мощный инструмент для быстрых операций: согласование заявок, получение остатков, уведомления о событиях, запуск регламентных задач. Интеграция реализуется через HTTP-сервисы 1С и Telegram Bot API.
Архитектура интеграции
Существует два подхода: Webhook (Telegram отправляет сообщения на HTTP-сервис 1С) и Long Polling (1С периодически опрашивает Telegram API). Для продуктивной среды рекомендуется Webhook — он быстрее и не создаёт лишней нагрузки.
HTTP-сервис 1С для приёма сообщений от Telegram
// Модуль HTTP-сервиса «ТелеграмВебхук»
// Метод: POST, шаблон URL: /telegram/webhook
Функция ОбработатьЗапрос(Запрос)
// Разбираем входящий JSON от Telegram
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку("UTF-8");
Данные = ПрочитатьJSON(ТелоЗапроса);
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Type", "application/json");
Попытка
// Извлекаем данные сообщения
Сообщение = Данные["message"];
ЧатID = Сообщение["chat"]["id"];
ТекстСообщения = Сообщение["text"];
ПользовательID = Сообщение["ИЗ"]["id"];
// Проверяем авторизацию пользователя
Если НЕ ПользовательАвторизован(ПользовательID) Тогда
ОтправитьСообщениеВТелеграм(ЧатID, "Доступ запрещён. Обратитесь к администратору.");
Возврат Ответ;
КонецЕсли;
// Маршрутизируем команды
Если ТекстСообщения = "/start" Тогда
ОтправитьСообщениеВТелеграм(ЧатID, ПолучитьПриветствие(ПользовательID));
ИначеЕсли НачинаетсяС(ТекстСообщения, "/остатки") Тогда
ОбработатьЗапросОстатков(ЧатID, ТекстСообщения);
ИначеЕсли НачинаетсяС(ТекстСообщения, "/заявка") Тогда
ОбработатьСозданиеЗаявки(ЧатID, ТекстСообщения, ПользовательID);
ИначеЕсли НачинаетсяС(ТекстСообщения, "/согласовать") Тогда
ОбработатьСогласование(ЧатID, ТекстСообщения, ПользовательID);
Иначе
ОтправитьСообщениеВТелеграм(ЧатID, "Неизвестная команда. Введите /help для справки.");
КонецЕсли;
Исключение
ЖурналРегистрации.Записать(
"ТелеграмБот",
УровеньЖурналаРегистрации.Ошибка,
ОписаниеОшибки()
);
КонецПопытки;
Возврат Ответ;
КонецФункции
Процедура ОбработатьЗапросОстатков(ЧатID, ТекстСообщения)
// Парсим название номенклатуры из команды
// Формат: /остатки Ноутбук Dell
ПоисковаяСтрока = СтрЗаменить(ТекстСообщения, "/остатки ", "");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура.Наименование КАК Номенклатура,
| Остатки.КоличествоОстаток КАК Остаток,
| Остатки.Склад.Наименование КАК Склад
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки() КАК Остатки
|ГДЕ
| Остатки.Номенклатура.Наименование ПОДОБНО &Поиск
| И Остатки.КоличествоОстаток > 0
|УПОРЯДОЧИТЬ ПО
| Остатки.Номенклатура.Наименование";
Запрос.УстановитьПараметр("Поиск", "%" + ПоисковаяСтрока + "%");
Результат = Запрос.Выполнить().Выбрать();
ТекстОтвета = "📦 *Остатки по запросу:* " + ПоисковаяСтрока + "`n";
Если Результат.Количество() = 0 Тогда
ТекстОтвета = "По запросу '" + ПоисковаяСтрока + "' остатки не найдены.";
Иначе
Пока Результат.Следующий() Цикл
ТекстОтвета = ТекстОтвета
+ Результат.Номенклатура + " — "
+ Результат.Остаток + " шт. "
+ "(" + Результат.Склад + ")"
+ "`n";
КонецЦикла;
КонецЕсли;
ОтправитьСообщениеВТелеграм(ЧатID, ТекстОтвета);
КонецПроцедуры
Процедура ОтправитьСообщениеВТелеграм(ЧатID, Текст)
Токен = Константы.ТелеграмТокенБота.Получить();
URL = "https://api.telegram.org/bot" + Токен + "/sendMessage";
Параметры = Новый Структура;
Параметры.Вставить("chat_id", ЧатID);
Параметры.Вставить("text", Текст);
Параметры.Вставить("parse_mode", "Markdown");
Запрос = Новый HTTPЗапрос("/bot" + Токен + "/sendMessage");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(ЗаписатьJSONВСтроку(Параметры), "UTF-8");
Соединение = Новый HTTPСоединение(
"api.telegram.org",
443,
,
,
,
15,
Новый ЗащищённоеСоединениеOpenSSL()
);
Соединение.ОтправитьДляОбработки(Запрос);
КонецПроцедуры
Система согласования через Telegram
Особенно востребована функция согласования документов. Руководитель получает в Telegram уведомление с кнопками «Согласовать» / «Отклонить», нажимает — и статус документа в 1С меняется автоматически. Это экономит часы времени ежедневно.
Шаг 6. Мониторинг, безопасность и резервное копирование
Удалённая работа с 1С неизбежно повышает требования к безопасности: база данных становится доступна извне, а значит, необходимо выстроить многоуровневую защиту. Минимальный набор мер включает двухфакторную аутентификацию для всех пользователей, ограничение доступа по IP-адресам через файрвол, шифрование трафика по HTTPS и регулярный аудит журналов регистрации 1С. В самой платформе настройте профили безопасности — запретите внешние соединения и использование небезопасных функций там, где они не нужны. Для облачных развёртываний дополнительно включите защиту от DDoS и настройте VPN-туннель между офисом и облачным сегментом.
Резервное копирование при удалённой работе должно быть автоматическим и верифицированным. Настройте регламентное задание, которое ежедневно выгружает dt-файл базы в защищённое хранилище, а еженедельно — создаёт полный бэкап средствами СУБД. Не забывайте периодически проверять восстановление: резервная копия, которую невозможно развернуть, не имеет смысла. Пример регламентного задания на встроенном языке 1С для автоматической выгрузки базы:
Процедура РезервноеКопированиеБазы() Экспорт
ПутьРезервнойКопии = Константы.КаталогРезервныхКопий.Получить();
ИмяФайла = ПутьРезервнойКопии
+ "Backup_"
+ Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss")
+ ".dt";
ВыгрузкаБазыДанных = Новый ВыгрузкаБазыДанных;
ВыгрузкаБазыДанных.ИмяФайла = ИмяФайла;
ВыгрузкаБазыДанных.Выполнить();
ЗаписьЖурналаРегистрации(
"РезервноеКопирование",
УровеньЖурналаРегистрации.Информация,
,
,
"Резервная копия создана: " + ИмяФайла
);
КонецПроцедуры
Шаг 7. Тестирование, обучение пользователей и запуск в продуктив
Даже идеально настроенная инфраструктура даст сбой, если пользователи не понимают, как с ней работать. Перед переходом в продуктив проведите нагрузочное тестирование: подключите одновременно максимальное число пользователей и убедитесь, что система справляется без деградации производительности. Проверьте все сценарии удалённой работы — веб-клиент, мобильный клиент, Telegram-бот — на реальных задачах: проведение документов, формирование отчётов, работа с большими справочниками. Зафиксируйте базовые метрики времени отклика, чтобы в будущем быстро замечать отклонения.
Обучение сотрудников — это не разовое мероприятие, а процесс. Подготовьте короткие видеоинструкции (3–5 минут) для каждого сценария работы: как войти через веб-браузер, как установить мобильный клиент, как пользоваться Telegram-ботом для проверки остатков или согласования документов. Создайте внутреннюю базу знаний с ответами на типичные вопросы и назначьте ответственного за техническую поддержку пользователей на первые две недели после запуска. Такой подход снижает сопротивление изменениям и позволяет команде быстро адаптироваться к новому формату работы. Если вы хотите делегировать настройку всей инфраструктуры профессионалам, найдите проверенного специалиста на koderion.ru.
Найдите специалиста для решения этой задачи на koderion.ru