В сообществе разработчиков 1С давно ведется дискуссия о создании так называемого «убийцы 1С» — инструмента, который обладал бы такой же скоростью разработки бизнес-приложений, но стоил бы значительно дешевле стандартных клиентских лицензий. Одной из самых интересных и спорных идей является использование самих базовых версий 1С (например, «1С:Деньги» стоимостью около 600 рублей) в качестве дешевой среды исполнения (runtime) для работы с внешними базами данных. Рассмотрим подробнее техническую реализацию этой схемы, ее юридические последствия и альтернативные варианты решения подобных задач.
Основная проблема малых приложений на 1С — высокая «входная» стоимость лицензии (от 13 000 рублей за версию ПРОФ). Для небольших утилит или «карманных» баз данных это делает разработку экономически нецелесообразной. Предложенная в сообществе схема обхода этого ограничения заключается в использовании базовой версии 1С как «тонкого клиента» к сторонней базе данных (MS SQL, PostgreSQL, MySQL).
Разберем по шагам, как технически может быть выстроена такая архитектура:
.epf). Платформа 1С позволяет запускать их без ограничений.Проанализируем пример кода, который позволяет подключиться к внешней базе данных 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 является проприетарным форматом 1С, и работа с ним в сторонних языках программирования затруднена без глубокого реверс-инжиниринга.
Если заказчику (например, зарубежному поставщику) нужно программно сортировать, фильтровать или объединять MXL-файлы с кодами маркировки, покупка лицензии ПРОФ за 13 000 рублей выглядит избыточной. В этом случае базовая версия за 600 рублей становится идеальным инструментом. Достаточно написать внешнюю обработку, которая использует объект ТабличныйДокумент.
Выясним, какие методы ТабличныйДокумент позволяют решить задачу:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Files\Labels.mxl");
// Программная фильтрация или поиск
Область = ТабДок.НайтиТекст("Маркировка_123");
Если Область <> Неопределено Тогда
// Вырезаем нужный участок или нумеруем
Область.Текст = "Проверено: " + Строка(ТекущаяДата());
КонецЕсли;
// Сохранение в PDF или новый MXL
ТабДок.Записать("C:\Files\Result.pdf", ТипФайлаТабличногоДокумента.PDF);
Таким образом, мы «стреляем из пушки по воробьям», но стоимость этой «пушки» благодаря базовой версии становится сопоставимой со стоимостью разового обеда, что приемлемо для бизнеса.
Несмотря на техническую реализуемость, использование базовых версий в качестве клиента к сторонним базам данных вызывает серьезные юридические вопросы. В рамках обсуждения темы был получен официальный ответ от линии консультаций 1С (lic@1c.ru).
Позиция правообладателя: Использование базовой конфигурации для организации доступа к другой (сторонней) базе данных является нелицензионным использованием продукта. Каждая базовая версия предназначена для автоматизации учета в одной конкретной организации на одном рабочем месте в рамках заложенного в нее функционала.
Основные пункты нарушения:
Если ваша цель — получить мощный инструмент разработки бизнес-приложений бесплатно или недорого, не нарушая лицензионных условий, стоит обратить внимание на следующие проекты:
Рассмотренная схема «убийцы 1С на 1С» технически изящна и позволяет решать специфические задачи за минимальные деньги. Однако для массового применения в бизнесе она непригодна из-за высокого риска юридических претензий со стороны правообладателя и технологической нестабильности (любое обновление платформы может «окирпичить» ваше решение).
Мы рекомендуем использовать базовые версии строго по назначению, а для создания дешевых «карманных» приложений выбирать либо специализированные Low-code платформы, либо развивающиеся Open Source инструменты с синтаксисом 1С, такие как OneScript.