Я уже ранее писал о том, что придумал движок, который позволяет работать с не 1С SQL-базой из клиентов, которыми являются базовые конфигурации 1С:Деньги. Думаю, это классное решение для небольших частных или малотиражных конфигураций! Я назвал его Базовый Учет или Базуха (Базовый Учет Хозяйства).
![](https://habrastorage.org/getpro/habr/upload_files/551/b8f/ff3/551b8fff3c9010bfaf6b965706a2fc8a.png)
Решение дешево. 1С:Деньги на каждое рабочее место обойдется в 300 рублей. Сравните с лицензией на 1С, которая стоит 13.000 рублей + 5.000 рублей за каждое дополнительное место.
Так, например, лицензия на 10 пользователей для Базухи обойдется в 3.000 рублей, а для 1С в 28.000 рублей, т.е. по 2.800 рублей на каждого пользователя! Экономия в 10 раз!
Решение лучше чем 1С по производительности в эконом-сегменте. В дешевых 1С используется файловая база, которая работает медленно, т.к. нет посредника в виде SQL-сервера, который обеспечивает быстрое извлечение данных.
Чтобы получить сервер SQL, нужно заплатить достаточно большую сумму. Сервер 1С на 5 подключений стоит 14.000, а на большее количество подключений 86.400 (32-разрядный сервер за 50.400 не рассматриваем, его покупка не имеет смысла). Поэтому в нашем примере на 10 пользователей для нормальной производительности стоимость одного рабочего места уже получается 11.440 (учтена стоимость лицензии на сервер 1С).
Почему-то 1С не предлагает решения, где не используется сервер 1С, а используется только SQL-сервер. Базуха как раз использует такой подход. Он медленнее, чем трехзвенка с сервером 1С (потому что нельзя исполнять код на сервере), но быстрее, чем файловая база 1С (потому что можно исполнять SQL-запросы).
Однако, справедливости ради, следует сказать, что если многопользовательский доступ к файловой базе будет реализован через веб-сервер, то производительность будет сопоставима с Базухой. Веб-сервер является как бы сервером приложений, но у Базухи есть SQL-сервер. Так что сопоставимо. Причем Базуха лучше масштабируется на количество пользователей больше 10, а файловая даже через веб-сервер начинает на таких масштабах задыхаться, т.к. у нее нет SQL-сервера.
Решение использует код и архитектуру 1С. Это важно, потому что поддерживать его может любой программист 1С, потратив буквально пару часов на освоение документации по платформе Базухи. Кроме того, можно использовать все выразительные средства 1С в разработке — таблицы значений, МХЛ-файлы, богатые средства 1С для интеграции. Да и пользователю привычен знакомый интерфейс 1с.
Решение более свободно чем 1С. Для разработки можно использовать любые модели данных, а не только придуманные 1С прикладные объекты (регистры, планы счетов, планы обмена и т.п.). Можно использовать свои инструменты для разработки, можно делать абстракции кода, выполняя не код, а схемы кода, собственные иерархии данных.
Решение может служить мостиком от 1С к другим средствам разработки. Учитывая открытость архитектуры базы данных и кода Базухи, со временем можно написать движок, который будет работать с базами Базухи абсолютно свободно, без 1С. В этом смысле Базуха является переходной программой, которая позволяет упростить этот процесс, потому что сейчас подходящего инструмента разработки, увы, нет.
Для кого предназначена Базуха?
Понятно, что конфигурация только начинается, поэтому не может конкурировать с такими монстрами, как УТ, БП, ERP, в которых вложено много труда и ресурсов. Но она и не предназначена для этого. Известно, что 1С предлагает максимально быстрый и удобный инструмент для разработки приложений баз данных. Но, к сожалению, лицензионная политика не позволяет его использовать для мелких, небольших решений.
Базуха закрывает этот вопрос и позволяет реализовывать небольшие заказные или малотиражные решения.
1С тоже позволяет делать недорогие тиражные решения, но для этого нужно предоставить решение самой 1С, она проверит его на 1С:Совместимо и если посчитает невыгодным распространение этой конфигурации, не выдаст базовую лицензию. Кроме того, такое мероприятие затратно по ресурсам.
С помощью Базухи вы можете выпустить недорогое тиражное решение буквально для нескольких клиентов, не прибегая к посредничеству 1С.
Также на Базухе очень удобно писать интернет-магазин, который одновременно является и учетной базой. Потому что все это крутится на одном MySQL сервере в интернете.
Лицензионная чистота
Для выяснения лицензионной чистоты решения я обратился в 1С-франчайзи «Первый Бит». Сперва они не поняли, о чем я веду речь, но после телефонного общения с техническим специалистом вынесли вердикт: «Что не запрещено, то разрешено». При этом уточнили, что их ответ является ответом, выражающим политику 1С.
Но на всякий случай я обратился и в 1С (lic@1c.ru). Там тоже не нашли возражений против моей схемы, после долгих и муторных споров со стороны 1С было вынесено решение:
![](https://habrastorage.org/getpro/habr/upload_files/376/ac0/fa5/376ac0fa5b6f1fe37bab93bad59c038b.png)
С одной стороны, при популяризации решения оно будет выступать как конкурент 1С. С другой — будет занимать нишу, куда 1С не пробиться с ее текущей стоимостью лицензий — на нишу мелких производительных решений. Будем надеяться на благоразумие 1С!
В конечном итоге, появление подобного решения вызвано именно неповоротливостью маркетинга и невозможностью создавать дешевые малотиражные решения.
Вот текст лицензии на базовые версии 1С:
![](https://habrastorage.org/getpro/habr/upload_files/28c/0bb/1ab/28c0bb1abc7868904deba5f6182ea5fa.png)
![](https://habrastorage.org/getpro/habr/upload_files/9bb/c90/303/9bbc903036a937a352e98ef7537d7bd2.png)
Как устроена Базуха?
Каждому пользователю устанавливается базовая программа 1С:Деньги.
В базе пользователя администратором запускается обработка, которая подготавливает базу к начальному запуску:
Создает два пользователя — admin (с паролем) и user (без пароля). admin имеет административные права, user — полные.
Из специального настроечного файла в базу пользователя заносятся пароль администратора, логин и пароль доступа к SQL-базе, тип SQL-базы.
Добавляет основную обработку по работе с SQL базой данных.
Выполняет первоначальную синхронизацию с SQL базой данных.
Прописывает на рабочий стол ярлык для запуска 1С:Деньги под пользователем user с открытием списка дополнительных внешних обработок.
Окно запуска 1С:Базухи для пользователя выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/b13/1c2/d69/b131c2d696d54bb6fa0a2f60a1d4139c.png)
К сожалению, сразу открыть обработку «Рабочий стол» не получится технически, поэтому пользователь должен запускать ее вручную кликом.
При запуске обработки «Рабочий стол» пользователь вводит логин и пароль для доступа к SQL-базе. И начинает работу в этой базе — добавляет/изменяет/просматривает данные и отчеты.
Код представляет собой совокупность обработок, хранящихся в SQL-базе. Каждая обработка имеет свою версию. Если версия обработки меньше, чем версия обработки в базе данных, она обновляется в локальную базу из SQL-базы.
Конфигуратор системы создает описание структуры данных. По команде это описание отображается на базу, создаются и модифицируются необходимые таблицы. Создаются новые поля, таблицы и индексы, ненужные удаляются. Можно использовать систему для подключения к уже существующей базе и таблицам.
Формы элемента рисуются в обычном конфигураторе 1С. Соответствие данных прописывается кодом. Соответственно, система знает, какие данные из каких полей отображать в полях.
Формы списка не поддерживают динамическое считывание данных, считывают данные порциями, постранично.
Отчеты выглядят как типовые 1С-отчеты, можно использовать даже систему компоновки данных (СКД).
Печатные формы документов программируются также на 1С и выводятся в табличные документы MXL.
Модули объектов (справочников и документов) хранятся в дополнительных обработках.
Особенности реализации Базухи
Для вопросов безопасности важно, чтобы в базе-носителя у пользователя не было лишних доступов, чтобы он не мог менять код. Несмотря на то, что у пользователя User полные права, он не может отлаживать код и менять код дополнительных внешних обработок. В этоп плане SQL база данных защищена от несанкционированного доступа.
Для вопросов быстродействия важно, чтобы COM-соединение с SQL-базой данных было постоянно открыто. 1С:Деньги запускаются в режиме толстого клиента, при этом в серверном коде внешних обработок становятся доступными переменные приложения, т.к. можно постоянно хранить соединение с SQL-базой данных, а не создавать его каждый раз, что увеличивает скорость запросов к SQL-базе. Кроме того, это позволяет кэшировать дополнительные обработки, где хранится код приложения.
В качестве сервера планируется использовать любой SQL-сервер, желательно бесплатный. В начале My-SQL, потому что его проще приобрести пользователю (обычно предоставляются при покупке хостинга). И администрировать его практически не нужно. Далее, можно посмотреть в сторону Postgree.