Администрирование · 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, но работает с именами объектов метаданных, а не физических таблиц. Запрос позволяет выбирать данные с отборами, соединениями, группировками и итогами, обращаться к виртуальным таблицам регистров (остатки, обороты, срез первых и последних) — платформа сама строит оптимальную выборку.
Запрос выполняется через объект Запрос: задаётся текст, устанавливаются параметры, вызывается Выполнить(), результат обходится выборкой или выгружается в таблицу значений. Использование параметров вместо подстановки строк в текст запроса — обязательное правило: это защищает от ошибок и проблем с типами данных.
Поверх запросов работает система компоновки данных (СКД) — механизм построения отчётов, где настройки группировок, отборов и оформления может менять пользователь без программирования. СКД сама дорабатывает запрос под выбранные настройки, поэтому типовые отчёты строятся именно на ней.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, КоличествоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Склад = &Склад)";
Запрос.УстановитьПараметр("Период", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить().Выгрузить();Транзакции, блокировки и целостность данных
Любая запись в 1С выполняется внутри транзакции. При проведении документа платформа одной транзакцией записывает сам документ и все его движения по регистрам: если на любом шаге возникает ошибка, вся операция откатывается целиком. Разработчик может управлять транзакциями явно через методы НачатьТранзакцию(), ЗафиксироватьТранзакцию() и ОтменитьТранзакцию().
В клиент-серверном режиме по умолчанию используются управляемые блокировки: платформа блокирует только конкретные записи в конкретных разрезах, что позволяет десяткам пользователей работать параллельно. В файловом режиме и при включённом режиме автоматических блокировок действует более грубая модель, где конфликты возникают чаще.
Механизмы обмена и интеграции с внешними системами
Для обмена данными между базами 1С и внешними системами платформа предлагает несколько механизмов. Планы обмена реализуют репликацию данных между узлами распределённой системы с регистрацией изменений и разрешением коллизий. Универсальный формат EnterpriseData на базе XML используется для обмена между типовыми конфигурациями.
Для интеграции с внешними системами доступны HTTP-сервисы и веб-сервисы (SOAP), которые публикует сама база 1С, а также HTTP-запросы из кода 1С к внешним API. Стандартный интерфейс OData позволяет читать данные базы извне по REST-протоколу без программирования. Дополнительно поддерживаются COM-соединение между базами 1С, работа с файлами XML, JSON, CSV и табличными документами.
Как выбрать действие
Как проверить, что работа с данными организована правильно
Оценить состояние механизмов работы с данными помогает несколько практических проверок. Они не требуют специальных инструментов и выполняются штатными средствами платформы и СУБД.
Как проверить результат
Отчёт по остаткам формируется за секунды, время стабильно
Время растёт с ростом базы, отчёт «зависает» — вероятны неоптимальные запросы или отсутствие индексов
Ошибки блокировок единичны при одновременной работе
Регулярные ошибки — проверить режим управляемых блокировок и длительность транзакций
Остатки по регистрам сходятся с данными документов
Расхождения — признак прямых правок в СУБД или прерванных транзакций
Копия создаётся по расписанию и тестово восстанавливается
Копии нет или восстановление никогда не проверялось
Отдельно стоит периодически запускать тестирование и исправление информационной базы в конфигураторе (для файловых баз) и использовать средства диагностики СУБД в клиент-серверном варианте. Перед любыми массовыми изменениями данных делайте резервную копию — это единственная надёжная защита от ошибок в обработках.
Что важно запомнить
1С:Предприятие 8 работает с данными через объекты метаданных, встроенный язык и язык запросов, а хранение обеспечивает файловый формат или внешняя СУБД. Записывайте данные только средствами платформы, выборки делайте запросами, транзакции держите короткими, а для интеграций используйте планы обмена, HTTP-сервисы и OData.
Частые вопросы
Можно ли читать данные 1С напрямую из таблиц SQL-сервера?
Технически чтение возможно, но структура таблиц не документирована и меняется между версиями платформы, а имена полей генерируются служебно. Прямая запись в таблицы недопустима — она нарушает целостность. Для внешнего чтения правильнее использовать OData, HTTP-сервисы или выгрузки через планы обмена.
Чем запрос отличается от объектного обхода данных?
Запрос выполняется на стороне сервера или СУБД и возвращает только нужные поля и строки. Объектный обход загружает каждый объект целиком, со всеми реквизитами и табличными частями. Для анализа и отчётов всегда используйте запросы, объектную модель — для создания и изменения отдельных объектов.
Когда файловой базы становится недостаточно?
Тревожные признаки: заметное замедление проведения документов и отчётов, частые конфликты при одновременной работе нескольких пользователей, ошибки доступа к файлу базы по сети. Точных универсальных порогов нет — они зависят от оборудования и интенсивности работы, поэтому ориентируйтесь на фактическую производительность.
Что такое виртуальные таблицы регистров?
Это не реальные таблицы, а вычисляемые платформой представления: остатки, обороты, срезы первых и последних значений. При обращении к ним платформа строит оптимальный SQL-запрос с агрегацией. Использовать их предпочтительнее, чем самостоятельно суммировать записи регистра.
Как безопасно выполнить массовое изменение данных?
Сделайте резервную копию, напишите обработку на встроенном языке с записью через объектную модель, сначала протестируйте на копии базы. Разбивайте операцию на порции с отдельными транзакциями, чтобы не удерживать блокировки. Проверьте результат контрольными отчётами до и после изменения.
Какой механизм выбрать для интеграции с интернет-магазином?
Чаще всего применяют HTTP-сервисы на стороне 1С или обращение из 1С к API магазина через HTTPСоединение, с форматом данных JSON или XML. Для типовых связок существуют готовые модули обмена. Выбор зависит от того, какая сторона инициирует обмен и какие требования к скорости синхронизации.