Как вести разработку и отладку клиент-серверных баз данных 1С на домашнем компьютере?

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

Разработка под клиент-серверную архитектуру в среде «1С:Предприятие» имеет ряд ключевых особенностей. Программисту необходимо четко разграничивать контекст выполнения кода между клиентом и сервером, минимизировать количество серверных вызовов и контролировать объемы передаваемых данных. Однако развертывание полноценного лицензионного сервера «1С» и системы управления базами данных (СУБД) дома долгое время оставалось дорогостоящим удовольствием.

В этой статье мы подробно рассмотрим, как организовать полноценный процесс разработки и тестирования клиент-серверных решений на домашнем компьютере. Мы разберем как классический способ с использованием эмуляции сервера в файловой базе, так и современные бесплатные инструменты, которые официально предоставляет фирма «1С».

Способ 1. Использование встроенной эмуляции сервера в файловой базе

Самый простой и не требующий никаких дополнительных затрат способ — это использование механизмов платформы для имитации работы клиент-серверного взаимодействия прямо в файловом варианте базы данных. Платформа «1С:Предприятие 8» изначально проектировалась с возможностью запуска клиентского и серверного кода в рамках одного файлового процесса.

При работе в файловом режиме платформа эмулирует работу сервера. Код, написанный под директивами &НаСервере или &НаСервереБезКонтекста, выполняется в отдельном виртуальном контексте. Однако у файлового режима есть существенный недостаток для тестирования производительности: вызовы сервера происходят мгновенно в оперативной памяти компьютера. В реальной клиент-серверной базе передача данных по сети между клиентом и сервером занимает ощутимое время. Из-за этого разработчик может не заметить избыточные вызовы сервера (например, вызовы сервера в цикле), которые на реальной базе приведут к критическому зависанию интерфейса.

Чтобы решить эту проблему, проанализируем встроенный механизм имитации задержки вызовов сервера. Для этого выполним следующие шаги:

  1. Запустим конфигуратор нашей информационной базы.
  2. В главном меню перейдем в раздел Сервис — Параметры.
  3. Перейдем на вкладку Запуск 1С:Предприятия, далее выберем подвкладку Параметры запуска или настройки отладки (в зависимости от версии платформы).
  4. Установим флаг Имитировать задержку при вызовах сервера (также этот параметр можно настроить в конфигурационном файле отладки debugcfg.xml).

После включения этой опции платформа будет принудительно добавлять задержку при каждом переходе кода с клиента на сервер. Это позволит нам сразу выявить неоптимальные вызовы в коде. Рассмотрим пример правильного проектирования серверного вызова:


&НаКлиенте
Процедура ВыполнитьОбработкуДанных(Команда)
    
    // НЕПРАВИЛЬНО: Вызывать сервер в цикле. С эмуляцией задержки это будет работать крайне медленно.
    // Для каждого Строка Из СписокТоваров Цикл
    //     ЗаписатьЭлементНаСервере(Строка.Ссылка);
    // КонецЦикла;
    
    // ПРАВИЛЬНО: Сформировать пакет данных и передать его за один серверный вызов.
    МассивСсылок = Новый Массив;
    Для Каждого Строка Из СписокТоваров Цикл
        МассивСсылок.Добавить(Строка.Ссылка);
    КонецЦикла;
    
    Результат = ПакетнаяОбработкаНаСервере(МассивСсылок);
    ПоказатьПредупреждение(, Результат.ОписаниеРезультата);
    
КонецПроцедуры

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

Способ 2. Официальная бесплатная комьюнити-лицензия (Лицензия для разработчиков)

Начиная с версии платформы 8.3.23, фирма «1С» кардинально изменила подход к домашней разработке, выпустив абсолютно бесплатную комьюнити-лицензию. Это полноценная лицензия, которая позволяет развернуть у себя дома настоящий клиент-серверный вариант работы.

Рассмотрим ее ключевые особенности и ограничения:

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

  1. Регистрируемся на официальном портале для разработчиков (developer.1c.ru) и подтверждаем свой аккаунт по номеру телефона.
  2. Скачиваем дистрибутив технологической платформы «1С:Предприятие» актуальной версии.
  3. При установке платформы обязательно выбираем компоненты Сервер 1С:Предприятия и Администрирование сервера 1С:Предприятия.
  4. При первом запуске базы в клиент-серверном варианте система запросит лицензию. Выбираем пункт получения бесплатной лицензии для разработчиков, вводим учетные данные от портала и активируем ее на своем ПК.

Способ 3. Бесплатная СУБД PostgreSQL и Docker-контейнеры

Для работы сервера «1С:Предприятие» необходима СУБД. Покупать лицензии на Microsoft SQL Server для домашних тестов бессмысленно. Проанализируем, как развернуть бесплатную альтернативу.

Идеальным решением является СУБД PostgreSQL. Фирма «1С» выпускает и поддерживает собственные сборки PostgreSQL, оптимизированные под работу со структурами данных «1С:Предприятия». Они абсолютно бесплатны для скачивания и использования.

В современной разработке очень популярно использование технологии Docker. Вместо того чтобы засорять домашнюю операционную систему установкой локальных служб баз данных, мы можем запустить PostgreSQL в изолированном контейнере. Рассмотрим, как это сделать:

  1. Установим на домашний компьютер Docker Desktop (или настроим WSL2 на Windows).
  2. Запустим контейнер с адаптированной версией PostgreSQL с помощью простой команды в терминале. Контейнер автоматически скачает нужный образ, настроит порты и подготовит СУБД к работе.
  3. В утилите администрирования серверов «1С» создадим новую информационную базу, указав в качестве сервера СУБД адрес localhost (или IP-адрес Docker-контейнера), имя пользователя и пароль, заданные при старте контейнера.

Использование Docker позволяет нам в любой момент «сбросить» состояние базы данных, развернуть новую пустую СУБД за считанные секунды или протестировать работу конфигурации на различных версиях СУБД без необходимости их переустановки в ОС.

Способ 4. Комплекты разработчика и льготные лицензии

Если вам по каким-то причинам не подходят ограничения бесплатной комьюнити-лицензии (например, требуется протестировать одновременную работу 5–10 пользователей или настроить интеграционные веб-сервисы с высокой нагрузкой), обратите внимание на льготные программы приобретения ПО для разработчиков:

Выводы и рекомендации

Мы проанализировали основные варианты развертывания клиент-серверной среды дома. Для быстрой проверки работоспособности кода и отладки простых механизмов достаточно использовать файловый вариант с включенной имитацией задержек вызовов сервера. Это базовый гигиенический минимум для любого разработчика 1С.

Для создания полноценной среды разработки, максимально приближенной к «боевым» условиям крупных внедрений, лучшим выбором будет связка бесплатной комьюнити-лицензии «1С», локального сервера «1С» и СУБД PostgreSQL (в Docker-контейнере или установленной непосредственно в систему). Это позволит вам без финансовых затрат получить полноценный инструмент для профессионального роста и качественной разработки.

← На главную