Как правильно разработать базу 1С на управляемых формах для нескольких пользователей: файловый режим, веб-сервер и мини-сервер

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

При создании небольших конфигураций 1С или выполнении учебных проектов часто возникает вопрос: какую архитектуру выбрать для работы 3–5 пользователей? Стоит ли сразу настраивать полноценный сервер приложения или можно обойтись файловым режимом? Разберем ключевые варианты построения системы, особенности работы тонкого клиента и правила разработки под управляемые формы.

Выбор технологического стека: Управляемые формы и БСП

Рассмотрим современные стандарты разработки в экосистеме 1С. На сегодняшний день базовым стандартом для создания конфигураций любой сложности является использование Управляемых форм (УФ) и библиотеки стандартных подсистем (БСП).

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

Варианты архитектуры для малых рабочих групп

Разберем основные архитектурные варианты организации работы пользователей тонкого клиента при небольшом числе рабочих мест.

  1. Публикация файловой базы на веб-сервере (IIS / Apache)

    Это оптимальный способ работы с файловой базой без покупки дорогостоящих серверных лицензий. Тонкий клиент и веб-клиент подключаются к файловой базе по протоколу HTTP/HTTPS.

    Преимущества такого подхода:

    – Безопасность данных: отсутствует прямой сетевой доступ пользователей к файлу 1CD через общедоступные сетевые папки (SMB), что защищает базу от повреждения при неожиданном разрыве связи.
    – Эмуляция работы сервера: клиентские вызовы преобразуются в HTTP-запросы, а выполнение контекста &НаСервере максимально приближается к поведению полноценного кластера серверов 1С.

  2. Использование автономного сервера 1С

    В современной платформе доступен компонент ibserver (автономный сервер). Он позволяет запускать и публиковать файловую базу по протоколам HTTP/HTTPS напрямую, не требуя развертывания сторонних веб-серверов IIS или Apache.

  3. Сервер 1С:Предприятия МИНИ

    Если требуется полноценная работа клиент-серверного режима (например, для интенсивных фоновых задач или СУБД PostgreSQL/MS SQL Server), развертывают специализированную лицензию «Сервер 1С:Предприятия МИНИ».

    Особенности этого варианта:

    – Полноценный 64-разрядный кластер серверов 1С.
    – Аппаратное ограничение: не более 5 пользовательских сеансов и не более 1 сеанса в режиме Конфигуратор.
    – Невозможность объединения нескольких мини-лицензий на одном сервере для увеличения количества подключений.

Особенности разработки и предотвращение ошибок контекста

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

Выясним причину этого явления:

1. В файловом режиме клиентский и серверный контексты выполняются в рамках одного процесса на компьютере пользователя. Поэтому обращение к локальным путям (например, C:\temp\file.txt) в серверных функциях сработает. На кластере серверов 1С код выдаст ошибку, так как файл будет искаться на физическом сервере от имени службы 1С.
2. В клиент-серверном режиме строго проверяется сериализация объектов. Такие типы, как ТаблицаЗначений, ДеревоЗначений или COMОбъект, нельзя напрямую передавать между клиентом (&НаКлиенте) и сервером (&НаСервере). В файловом режиме система может прощать такие ошибки.

Настройка синтаксического контроля в Конфигураторе

Чтобы избежать ошибок выполнения кода при смене режима работы базы, необходимо настроить синтаксический контроль модулей под все возможные контексты исполнения.

Выполним следующие шаги в Конфигураторе:

  1. Откроем главное меню: Сервис — Параметры.
  2. Перейдем на закладку Модули — Проверка (или открываем окно проверки конфигурации через меню Конфигурация — Проверка конфигурации).
  3. Включим флаги проверки во всех контекстах:

    – Сервер
    – Тонкий клиент
    – Веб-клиент
    – Внешнее соединение
    – Сервер 1С:Предприятия

  4. Включим режим проверки вызова серверных процедур с клиента и проверки синтаксиса выражений.

Пример правильной передачи данных с сервера на клиент без использования несериализуемых типов:


&НаКлиенте
Процедура ЗагрузитьДанныеНаКлиенте()
    // Создаем массив струтур для передачи данных
    МассивРезультатов = ПолучитьДанныеССервера();
    Для Каждого СтрИзМассива Из МассивРезультатов Цикл
        // Обработка полученных данных на клиенте
    КонецЦикла;
КонецПроцедуры

&НаСервере
Функция ПолучитьДанныеССервера()
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Товары.Ссылка КАК Ссылка,
        |   Товары.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Товары КАК Товары";
    
    ТЗ = Запрос.Выполнить().Выгрузить();
    
    // Преобразуем ТаблицуЗначений в Массив Структур для безопасной передачи на клиент
    Результат = Новый Массив;
    Для Каждого Стр Из ТЗ Цикл
        СтруктураСтр = Новый Структура("Ссылка, Наименование", Стр.Ссылка, Стр.Наименование);
        Результат.Добавить(СтруктураСтр);
    КонецЦикла;
    
    Возврат Результат;
КонецФункции

Подводя итоги: для малых проектов на 3–5 пользователей лучшим практическим решением является разработка на управляемых формах с публикацией файловой базы через веб-сервер и обязательным включением полных проверок синтаксиса модулей.

← На главную