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

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

С помощью чего система 1С:Предприятие 8 работает с данными

Как система 1С:Предприятие 8 работает с данными: объекты метаданных, СУБД, запросы, движения регистров, обмен данными и механизмы хранения.

Система 1С:Предприятие 8 работает с данными не напрямую через файлы, а через многоуровневую архитектуру: прикладные объекты конфигурации (справочники, документы, регистры) описывают структуру информации, встроенный язык и язык запросов обеспечивают доступ к ней, а физическое хранение делегируется либо собственному файловому формату, либо внешней СУБД — Microsoft SQL Server, PostgreSQL, Oracle или IBM DB2. Понимание этих механизмов нужно и разработчику, и администратору: от выбора способа работы с данными зависят скорость отчётов, целостность учёта и устойчивость системы к нагрузкам.

Ключевая особенность платформы в том, что разработчик практически никогда не пишет SQL-код напрямую. Вместо этого он оперирует объектами метаданных и запросами на встроенном языке запросов, который платформа сама транслирует в команды конкретной СУБД. Это снимает зависимость от конкретной базы данных, но требует понимания, какие механизмы платформа предлагает для чтения, записи, поиска и обмена данными.

Объекты метаданных как основа работы с данными

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

Каждый объект имеет предопределённые поля (код, наименование, номер, дата) и реквизиты, которые добавляет разработчик. Платформа автоматически создаёт в СУБД таблицы, соответствующие объектам метаданных, и поддерживает их структуру при обновлении конфигурации. Разработчику не нужно вручную создавать таблицы и индексы — достаточно описать объект в дереве конфигурации.

Важно понимать разницу между объектными и необъектными данными. Справочники и документы — объектные сущности с уникальными ссылками. Регистры хранят записи, которые обычно подчинены регистратору (документу) или периоду. Удаление документа автоматически влечёт удаление его движений — это гарантирует целостность на уровне платформы.

Файловый и клиент-серверный режимы хранения

Платформа поддерживает два режима работы с базой. В файловом режиме вся база хранится в одном файле 1Cv8.1CD, к которому платформа обращается напрямую или через веб-сервер. Этот вариант подходит для небольших баз и ограниченного числа одновременных пользователей.

В клиент-серверном режиме между пользователем и данными стоит кластер серверов 1С:Предприятия, который взаимодействует с СУБД: Microsoft SQL Server, PostgreSQL (в том числе сборки Postgres Pro), Oracle Database или IBM DB2. Сервер приложений выполняет код, формирует запросы к СУБД и управляет транзакциями и блокировками.

Сравнение вариантов

Файловый режим

Простое развёртывание, не требует СУБД. Ограничения: чувствительность к сбоям сети при размещении файла на сетевом диске, снижение производительности при росте базы и числа пользователей.

Клиент-серверный режим

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

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

Встроенный язык и объектная модель доступа

Основной инструмент разработчика — встроенный язык 1С, похожий по синтаксису на структурные языки программирования с русскоязычными ключевыми словами. Через него доступна объектная модель: менеджеры объектов (Справочники, Документы), ссылки, объекты и наборы записей.

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

Объектная модель удобна для изменения отдельных объектов, но неэффективна для массового чтения: перебор тысяч документов через объекты создаёт лишнюю нагрузку. Для выборок и анализа предназначен язык запросов.

Язык запросов и система компоновки данных

Язык запросов 1С похож на SQL, но работает с именами объектов метаданных, а не физических таблиц. Запрос позволяет выбирать данные с отборами, соединениями, группировками и итогами, обращаться к виртуальным таблицам регистров (остатки, обороты, срез первых и последних) — платформа сама строит оптимальную выборку.

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

Поверх запросов работает система компоновки данных (СКД) — механизм построения отчётов, где настройки группировок, отборов и оформления может менять пользователь без программирования. СКД сама дорабатывает запрос под выбранные настройки, поэтому типовые отчёты строятся именно на ней.

bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад)";
Запрос.УстановитьПараметр("Период", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить().Выгрузить();

Транзакции, блокировки и целостность данных

Любая запись в 1С выполняется внутри транзакции. При проведении документа платформа одной транзакцией записывает сам документ и все его движения по регистрам: если на любом шаге возникает ошибка, вся операция откатывается целиком. Разработчик может управлять транзакциями явно через методы НачатьТранзакцию(), ЗафиксироватьТранзакцию() и ОтменитьТранзакцию().

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

Типичные ошибки
01
Чтение остатков объектным перебором вместо запроса к виртуальной таблице — отчёт работает в десятки раз медленнее.
02
Длинные транзакции с интерактивными диалогами внутри — блокировки удерживаются, другие пользователи получают ошибки конфликта.
03
Запись данных без проверки прав и обязательных реквизитов — появляются неполные объекты, ломающие отчёты.
04
Использование режима автоматических блокировок в нагруженной базе — массовые ошибки при одновременном проведении документов.

Механизмы обмена и интеграции с внешними системами

Для обмена данными между базами 1С и внешними системами платформа предлагает несколько механизмов. Планы обмена реализуют репликацию данных между узлами распределённой системы с регистрацией изменений и разрешением коллизий. Универсальный формат EnterpriseData на базе XML используется для обмена между типовыми конфигурациями.

Для интеграции с внешними системами доступны HTTP-сервисы и веб-сервисы (SOAP), которые публикует сама база 1С, а также HTTP-запросы из кода 1С к внешним API. Стандартный интерфейс OData позволяет читать данные базы извне по REST-протоколу без программирования. Дополнительно поддерживаются COM-соединение между базами 1С, работа с файлами XML, JSON, CSV и табличными документами.

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

Как выбрать действие

Нужен регулярный обмен между двумя базами 1СИспользуйте планы обмена или типовую синхронизацию через формат EnterpriseData.
Внешняя система должна читать данные 1С по запросуОпубликуйте интерфейс OData или HTTP-сервис на веб-сервере.
1С должна обращаться к внешнему APIИспользуйте объект HTTPСоединение и HTTPЗапрос из встроенного языка.
Разовая загрузка данных из файлаПримените чтение XML/JSON/CSV или табличного документа с последующей записью через объектную модель.

Как проверить, что работа с данными организована правильно

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

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

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

Скорость типовых отчётов
Норма

Отчёт по остаткам формируется за секунды, время стабильно

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

Время растёт с ростом базы, отчёт «зависает» — вероятны неоптимальные запросы или отсутствие индексов

Конфликты блокировок
Норма

Ошибки блокировок единичны при одновременной работе

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

Регулярные ошибки — проверить режим управляемых блокировок и длительность транзакций

Целостность движений
Норма

Остатки по регистрам сходятся с данными документов

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

Расхождения — признак прямых правок в СУБД или прерванных транзакций

Резервное копирование
Норма

Копия создаётся по расписанию и тестово восстанавливается

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

Копии нет или восстановление никогда не проверялось

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

Итог

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

1С:Предприятие 8 работает с данными через объекты метаданных, встроенный язык и язык запросов, а хранение обеспечивает файловый формат или внешняя СУБД. Записывайте данные только средствами платформы, выборки делайте запросами, транзакции держите короткими, а для интеграций используйте планы обмена, HTTP-сервисы и OData.

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

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

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

Чем запрос отличается от объектного обхода данных?

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

Когда файловой базы становится недостаточно?

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

Что такое виртуальные таблицы регистров?

Это не реальные таблицы, а вычисляемые платформой представления: остатки, обороты, срезы первых и последних значений. При обращении к ним платформа строит оптимальный SQL-запрос с агрегацией. Использовать их предпочтительнее, чем самостоятельно суммировать записи регистра.

Как безопасно выполнить массовое изменение данных?

Сделайте резервную копию, напишите обработку на встроенном языке с записью через объектную модель, сначала протестируйте на копии базы. Разбивайте операцию на порции с отдельными транзакциями, чтобы не удерживать блокировки. Проверьте результат контрольными отчётами до и после изменения.

Какой механизм выбрать для интеграции с интернет-магазином?

Чаще всего применяют HTTP-сервисы на стороне 1С или обращение из 1С к API магазина через HTTPСоединение, с форматом данных JSON или XML. Для типовых связок существуют готовые модули обмена. Выбор зависит от того, какая сторона инициирует обмен и какие требования к скорости синхронизации.