Как использовать базовые версии 1С для работы с внешними данными и стоит ли это делать?

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

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

Техническая концепция: 1С как оболочка для SQL

Основная проблема малых приложений на 1С — высокая «входная» стоимость лицензии (от 13 000 рублей за версию ПРОФ). Для небольших утилит или «карманных» баз данных это делает разработку экономически нецелесообразной. Предложенная в сообществе схема обхода этого ограничения заключается в использовании базовой версии 1С как «тонкого клиента» к сторонней базе данных (MS SQL, PostgreSQL, MySQL).

Разберем по шагам, как технически может быть выстроена такая архитектура:

  1. Выбор платформы: Приобретается любая недорогая базовая конфигурация, например, «1С:Деньги». Она предоставляет полнофункциональную платформу 1С:Предприятие 8.3, но с ограничением на одного пользователя и запретом на изменение конфигурации.
  2. Использование внешних обработок: Так как конфигурацию менять нельзя, вся бизнес-логика и интерфейсы выносятся во внешние обработки (файлы .epf). Платформа 1С позволяет запускать их без ограничений.
  3. Доступ к данным через ADO: Поскольку базовая версия не поддерживает работу в режиме клиент-сервера 1С, взаимодействие с данными организуется через механизмы COM-соединения и библиотеку ADODB.

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


// Создание объекта соединения
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "Driver={SQL Server};Server=ИмяСервера;Database=ИмяБазы;Uid=Логин;Pwd=Пароль;";

Попытка
    Соединение.Open();
    Сообщить("Подключение к SQL успешно установлено!");
Исключение
    Сообщить("Ошибка подключения: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

// Выполнение запроса
RecordSet = Новый COMОбъект("ADODB.Recordset");
ТекстЗапроса = "SELECT id, name FROM Goods WHERE stock > 0";
RecordSet.Open(ТекстЗапроса, Соединение);

Пока НЕ RecordSet.EOF Цикл
    // Обработка данных
    ИмяТовара = RecordSet.Fields("name").Value;
    // ... логика отображения в форме 1С ...
    RecordSet.MoveNext();
КонецЦикла;

RecordSet.Close();
Соединение.Close();

В такой схеме 1С выступает исключительно как графическая оболочка. Мы используем привычные ТаблицаЗначений, УправляемаяФорма и язык 1С для отрисовки интерфейса, но данные храним в открытой SQL-базе. Это позволяет масштабировать количество пользователей, покупая каждому базовую версию за 600 рублей вместо полноценных клиентских лицензий.

Практический кейс: Обработка файлов MXL без дорогих лицензий

Рассмотрим ситуацию, когда необходимо автоматизировать узкую задачу, например, обработку графических этикеток или отчетов в формате MXL. Формат .mxl является проприетарным форматом 1С, и работа с ним в сторонних языках программирования затруднена без глубокого реверс-инжиниринга.

Если заказчику (например, зарубежному поставщику) нужно программно сортировать, фильтровать или объединять MXL-файлы с кодами маркировки, покупка лицензии ПРОФ за 13 000 рублей выглядит избыточной. В этом случае базовая версия за 600 рублей становится идеальным инструментом. Достаточно написать внешнюю обработку, которая использует объект ТабличныйДокумент.

Выясним, какие методы ТабличныйДокумент позволяют решить задачу:


ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Files\Labels.mxl");

// Программная фильтрация или поиск
Область = ТабДок.НайтиТекст("Маркировка_123");
Если Область <> Неопределено Тогда
    // Вырезаем нужный участок или нумеруем
    Область.Текст = "Проверено: " + Строка(ТекущаяДата());
КонецЕсли;

// Сохранение в PDF или новый MXL
ТабДок.Записать("C:\Files\Result.pdf", ТипФайлаТабличногоДокумента.PDF);

Таким образом, мы «стреляем из пушки по воробьям», но стоимость этой «пушки» благодаря базовой версии становится сопоставимой со стоимостью разового обеда, что приемлемо для бизнеса.

Юридические риски и позиция фирмы 1С

Несмотря на техническую реализуемость, использование базовых версий в качестве клиента к сторонним базам данных вызывает серьезные юридические вопросы. В рамках обсуждения темы был получен официальный ответ от линии консультаций 1С (lic@1c.ru).

Позиция правообладателя: Использование базовой конфигурации для организации доступа к другой (сторонней) базе данных является нелицензионным использованием продукта. Каждая базовая версия предназначена для автоматизации учета в одной конкретной организации на одном рабочем месте в рамках заложенного в нее функционала.

Основные пункты нарушения:

Альтернативные «убийцы 1С»

Если ваша цель — получить мощный инструмент разработки бизнес-приложений бесплатно или недорого, не нарушая лицензионных условий, стоит обратить внимание на следующие проекты:

  1. OneScript (1Script): Это Open Source проект, представляющий собой независимую реализацию интерпретатора языка 1С. Он позволяет исполнять код на языке 1С без установки платформы. Отлично подходит для написания скриптов, консольных утилит и даже веб-сервисов.
  2. lsFusion: Современная платформа для разработки бизнес-систем. Она бесплатна, имеет открытый исходный код и использует декларативный подход, который во многом мощнее стандартного кода 1С.
  3. Библиотеки Python/C#: Для задач вроде обработки MXL существуют библиотеки (например, на Python), которые умеют парсить структуру MXL как XML-архив, позволяя извлекать данные вообще без участия софта от 1С.

Выводы

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

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

← На главную