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

Удалённая работа с 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