К статье
Практический материал

Администрирование · 13 мин

Использование 1С как базы данных: когда это оправдано и как сделать правильно

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

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

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

Ключевое правило: работать с данными 1С нужно через механизмы платформы (COM, OData, HTTP-сервисы, веб-сервисы, планы обмена), а не прямыми запросами к СУБД. Прямая запись в таблицы SQL нарушает целостность данных и лишает поддержки.

Как устроено хранение данных в 1С

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

Физически данные могут храниться в двух режимах. В файловом — вся база лежит в одном файле 1Cv8.1CD на диске или сетевой папке. В клиент-серверном — данные размещаются в СУБД (Microsoft SQL Server, PostgreSQL, Oracle, IBM DB2), а сервер 1С выступает посредником между клиентами и СУБД.

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

Какие задачи решает 1С в роли базы данных

Наиболее типичные сценарии, где 1С выступает центральным хранилищем данных:

  • учётная система предприятия: номенклатура, контрагенты, заказы, остатки, финансы;
  • источник данных для сайта или интернет-магазина: каталог, цены, остатки;
  • база для мобильного приложения сотрудников: задания, статусы, акты;
  • источник данных для систем бизнес-аналитики и управленческой отчётности;
  • хранилище для интеграции с CRM, WMS, кассовым и банковским ПО.

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

Маршрут решения

Когда 1С подходит как база данных

Нужна учётная система с готовой бизнес-логикой и интерфейсомИспользуйте 1С как основное хранилище, работайте штатными средствами платформы
Внешней системе нужно читать справочники и документы из 1СНастройте OData или HTTP-сервис на чтение
Внешняя система должна создавать документы в 1СДелайте запись через HTTP-сервис или COM с вызовом методов платформы, а не прямыми INSERT в SQL
Нужна тяжёлая аналитика по большим объёмамНастройте периодическую выгрузку в отдельную аналитическую БД

Файловый и клиент-серверный режимы: что выбрать

Файловый режим — самый простой способ развернуть базу: достаточно скопировать файл и добавить его в список баз. Он подходит для одного пользователя или небольшой группы с умеренной интенсивностью работы. Главные ограничения — блокировки при одновременной записи, чувствительность к качеству сети при размещении файла на сетевом ресурсе и риск повреждения файла при обрыве соединения.

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

КритерийФайловый режимКлиент-серверный режим
РазвёртываниеФайл на диске, минимум настройкиСервер 1С + СУБД, требуется администрирование
Параллельная работаОграничена, блокировки на уровне таблицМасштабируется, управляемые блокировки
ОтказоустойчивостьРиск повреждения файла при сбое сетиТранзакционная целостность средствами СУБД
Резервное копированиеКопирование файла при отсутствии сеансовШтатные средства СУБД, горячие копии
Подходящий масштабОдин пользователь или небольшая группаРабочие группы и предприятие в целом

Способы доступа к данным 1С извне

COM-соединение

COM-подключение (V83.COMConnector) — классический способ связать две базы 1С или обратиться к 1С из скрипта на Windows. Через COM доступны все объекты конфигурации: можно читать справочники, создавать и проводить документы, выполнять запросы. Минус — работает только в среде Windows, требует установленного клиента или сервера 1С и потребляет лицензию на сеанс.

Автоматический интерфейс OData

Платформа умеет публиковать базу по протоколу OData через веб-сервер (IIS или Apache) практически без программирования: достаточно включить публикацию и отметить нужные объекты в конфигураторе. Внешние системы получают стандартный REST-подобный доступ к справочникам, документам и регистрам, включая фильтрацию и выбор полей. Это самый быстрый способ «открыть» базу для чтения и простой записи.

Публикация базы через OData
  1. 1
    В конфигураторе откройте свойства объектов и включите их в состав автоматического интерфейса OData (флажок «Использовать в стандартном интерфейсе OData»)
  2. 2
    Опубликуйте информационную базу на веб-сервере (IIS или Apache) через диалог публикации, отметив публикацию интерфейса OData
  3. 3
    Настройте аутентификацию на веб-сервере и заведите отдельного пользователя 1С с минимально необходимыми правами
  4. 4
    Проверьте доступ: откройте в браузере адрес вида http://сервер/база/odata/standard.odata/ — должен вернуться список доступных сущностей
  5. 5
    Протестируйте чтение конкретного справочника и запись тестового объекта, затем проверьте результат в самой базе

Собственные HTTP-сервисы и веб-сервисы

Когда OData не хватает — нужна нестандартная логика, пакетная обработка, особый формат ответа — в конфигурации создают HTTP-сервисы или SOAP веб-сервисы. Разработчик сам определяет URL-шаблоны, параметры и код обработки. Это самый гибкий и управляемый способ предоставить данные наружу: вся бизнес-логика выполняется на стороне 1С, а наружу выставляется только нужный контракт.

Планы обмена и EnterpriseData

Для регулярной синхронизации между системами (например, 1С и сайт, 1С и CRM) используют планы обмена: платформа регистрирует изменённые объекты и передаёт только их. Формат EnterpriseData на базе XML — типовой способ обмена между конфигурациями 1С и сторонними приложениями. Этот вариант устойчив к разрывам связи и не требует постоянного подключения.

Сравнение способов доступа

COM-соединение

Полный доступ к объектам и логике, но только Windows, тратит лицензию, подходит для обмена между базами 1С

OData

Включается без кода, стандартный REST-доступ; ограничен типовыми операциями и требует веб-сервера

HTTP-сервисы

Полный контроль над форматом и логикой, но требует разработки и сопровождения кода

Планы обмена

Надёжная асинхронная синхронизация изменений; не подходит для мгновенных запросов в реальном времени

Почему нельзя писать напрямую в SQL-таблицы

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

Прямая запись в таблицы — категорически недопустимый приём. Платформа ведёт служебные данные, которые не видны на уровне SQL: нумерацию, итоги регистров, версии объектов, служебные последовательности. Запись напрямую обходит бизнес-логику (проведение, контроль остатков, проверки заполнения), нарушает согласованность итогов и может сделать базу неработоспособной. Кроме того, такая база снимается с поддержки.

Производительность и ограничения

1С как хранилище данных имеет предсказуемые узкие места. В файловом режиме критичны блокировки: параллельная запись в одни и те же таблицы приводит к ожиданиям и ошибкам. В клиент-серверном режиме основная нагрузка ложится на СУБД и сервер 1С: важны грамотные индексы (платформа создаёт их по правилам конфигурации), отсутствие избыточных запросов в цикле и корректная работа с транзакциями.

Для интеграций важно учитывать стоимость каждого вызова. Создание документа через OData или HTTP-сервис — это полноценная серверная транзакция с проверками. Если внешняя система загружает тысячи объектов, правильно группировать их в пакеты, выполнять загрузку в нерабочее время и использовать регламентные задания, а не слать объекты по одному в пик нагрузки.

Контрольные точки

Как проверить результат

Доступность данных извне
Норма

Запрос через OData/HTTP-сервис возвращает актуальные данные без ошибок авторизации

Тревожный признак

Ошибки 401/403, пустой ответ при наличии данных в базе

Корректность записи
Норма

Созданный извне документ виден в интерфейсе 1С и проводится штатно

Тревожный признак

Объект создан, но не проводится, не хватает движений или итогов

Целостность базы
Норма

Тестирование и исправление не находит ошибок, итоги сходятся

Тревожный признак

Расхождения итогов, битые ссылки после внешних операций

Нагрузка
Норма

Время отклика стабильно при типовом числе пользователей

Тревожный признак

Рост блокировок и таймаутов после включения интеграции

Типичные ошибки и безопасная практика

Типичные ошибки
01
Прямая запись в таблицы SQL в обход платформы — нарушаются итоги и ссылочная целостность, база снимается с поддержки
02
Публикация OData с полными правами у служебного пользователя — любой, получивший доступ, может читать и менять всё
03
Размещение файловой базы на сетевом диске для многопользовательской работы — риск повреждения файла при сбое сети
04
Поштучная загрузка тысяч объектов через HTTP-сервис в рабочее время — рост блокировок и торможение базы
05
Отсутствие резервной копии перед изменением структуры или массовой загрузки — откат становится невозможен

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

Итог

Что важно запомнить

1С — полноценная система управления данными и может выступать центральной базой для прикладных и внешних систем. Доступ извне организуйте через COM, OData, HTTP-сервисы или планы обмена; прямая запись в SQL-таблицы недопустима. Файловый режим — для малых нагрузок, клиент-серверный — для параллельной работы и роста. Перед любыми массовыми операциями делайте резервную копию.

Частые вопросы

Можно ли читать данные 1С напрямую из SQL для отчётов?

Технически возможно, и для простых выборок это иногда делают, но способ не поддерживается: имена и структура таблиц не документированы, часть полей хранится в сериализованном виде, а при обновлении платформы структура может измениться. Надёжнее использовать OData, HTTP-сервисы или выгрузку в отдельную аналитическую базу.

Сколько пользователей выдержит файловая база?

Точного ограничения нет — оно зависит от интенсивности записи и конфигурации. Файловый режим нормально работает для одного пользователя или небольшой группы с умеренной нагрузкой. При появлении конфликтов блокировок, росте базы и требований к бесперебойности стоит переходить на клиент-серверный режим.

Можно ли использовать 1С как базу для сайта интернет-магазина?

Да, это типовой сценарий. Обычно 1С остаётся мастер-системой для номенклатуры, цен и остатков, а сайт получает данные через обмен (CommerceML, EnterpriseData) или обращается к HTTP-сервисам. Заказы с сайта загружаются в 1С и проводятся штатными механизмами.

Тратится ли лицензия при доступе через OData или HTTP-сервис?

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

Как безопасно протестировать интеграцию?

Поднимите копию рабочей базы (из выгрузки .dt или резервной копии СУБД), опубликуйте её отдельно и проведите все сценарии на копии: чтение, создание объектов, проведение документов, сверку итогов. Только после успешной проверки и наличия свежей резервной копии включайте обмен на рабочей базе.

Что делать, если внешняя система требует прямого доступа к таблицам?

Ищите компромисс: настройте регламентную выгрузку нужных данных из 1С в отдельную промежуточную базу в удобной для внешней системы структуре. Та система будет читать «свою» базу напрямую, а рабочая база 1С останется защищённой от прямого вмешательства.