Внешние источники данных 1С
В экосистеме «1С:Предприятие» понятие данных охватывает всю совокупность сведений, отражающих хозяйственную и управленческую деятельность предприятия: от первичных фактов (накладные, платежи, перемещения) до агрегированных показателей (остатки, обороты, рейтинги). Данные в 1С структурированы по объектам метаданных и хранятся в реляционной модели, но для прикладного разработчика они предстают как объекты предметной области — документы, справочники, регистры — с логикой целостности, проверками и связями, а не просто как строки и колонки таблиц. При этом платформа абстрагирует физическое хранение: разработчик оперирует прикладными понятиями, а система сама управляет транзакциями, блокировками и индексами, обеспечивая согласованность состояния.
Информационная база (ИБ) 1С — это целостная прикладная система, объединяющая конфигурацию (описание структуры и логики), данные (фактические записи), пользователей и настройки прав, а также служебные механизмы (журналы регистрации, полнотекстовый поиск, фоновые задания). ИБ может существовать в файловом варианте либо в клиент-серверном режиме на СУБД (MS SQL, PostgreSQL и др.), сохраняя при этом единый программный интерфейс. В рамках одной платформы можно одновременно работать с несколькими ИБ, каждая из которых имеет собственный набор данных и собственную историю изменений, но использует общую технологическую среду выполнения.
Объекты ИБ — это экземпляры прикладных сущностей, существующие в конкретной информационной базе: элементы справочников, документы, записи регистров, задачи, бизнес-процессы. Каждый объект имеет уникальный идентификатор, состояние, набор реквизитов и поведение, определяемое модулями конфигурации. Жизненный цикл объектов управляется платформой: создание, редактирование, проведение, удаление сопровождаются проверками, подписками на события и механизмами транзакций, гарантирующими, что система не окажется в противоречивом состоянии даже при сбоях или параллельной работе пользователей.
Внешние источники данных 1С предоставляют механизм прямого доступа к таблицам и представлениям сторонних СУБД без необходимости выгружать данные в ИБ. Платформа позволяет описывать внешние таблицы как объекты конфигурации, задавать типы полей, связи и даже использовать их в запросах наравне с внутренними объектами. Это удобно для оперативной аналитики, чтения справочников из других систем, а также для загрузки данных, когда требуется точная синхронизация без промежуточного файла. Доступ реализуется через драйверы ODBC либо через специализированные интерфейсы, а управление соединением и транзакциями ложится на платформу.
Иногда данные живут вне информационной базы 1С — в PostgreSQL, MS SQL Server, MySQL, Oracle и других СУБД. Платформа 8.3 даёт объект метаданных ВнешнийИсточникДанных: таблицы и функции сторонней БД описываются в конфигурации и используются как обычные источники в запросах, СКД и формах.
Типичные сценарии:
- аналитика и отчёты по "сырым" таблицам DWH;
- разовая или регламентная загрузка справочников из legacy-системы;
- чтение витрины, которую наполняет другой сервис.
Витрина данных в контексте 1С и DWH — это логически выделенный срез информации, подготовленный для аналитики: он может быть реализован как набор представлений (views), материализованных таблиц или как специально спроектированный слой в хранилище, где данные приведены к единому виду, очищены от дублей, обогащены измерениями и агрегированы по нужным периодам. Чтение витрины в 1С может происходить напрямую через внешние источники либо через выгрузку/загрузку по расписанию, а для отчётов витрина служит стабильным источником, снижающим нагрузку на операционные базы и упрощающим логику отчётов за счёт заранее подготовленных агрегатов и бизнес-правил.
Аналитика и отчёты по сырым таблицам DWH предполагают работу с детальными данными, где каждая строка соответствует событию или транзакции, без предварительной агрегации. В 1С такие отчёты строятся с учётом того, что сырые данные могут содержать дубли, разные статусы и временные метки, поэтому в запросах активно применяются группировки, оконные функции, фильтрация по периодам и статусам, а также объединение с измерениями (справочниками). Для сложных расчётов используют временные таблицы и пакетные запросы, чтобы поэтапно подготовить данные перед выводом. При этом важно учитывать производительность: большие объёмы сырых данных требуют индексов, ограничений выборки и, при необходимости, предварительного расчёта агрегатов.
Справочник в legacy-системах — это объект, предназначенный для хранения нормативно-справочной информации, который в старых конфигурациях мог иметь упрощённую структуру, меньше проверок и более жёсткие правила именования и нумерации. В таких системах справочники часто служили основным источником измерений для отчётов и документов, а их целостность поддерживалась вручную или через ограниченные механизмы контроля. При интеграции с современными решениями legacy-справочники требуют нормализации: устранения дублей, приведения к единой кодировке, добавления недостающих реквизитов и описания правил синхронизации, чтобы избежать расхождений между системами.
Строка подключения — это текстовое описание параметров, по которым приложение устанавливает соединение с базой данных или внешним источником. Она содержит адрес сервера, имя базы, учётные данные, тип драйвера, кодировку и дополнительные настройки, специфичные для СУБД. В 1С строка соединения используется как в механизмах внешних источников данных, так и при ручном создании COM-объектов или ADO-соединений. От корректности строки зависит не только успешность подключения, но и производительность, безопасность и совместимость версий драйверов и сервера.
Механизм не предназначен для прямого доступа к таблицам собственной базы 1С в СУБД — физическая схема платформы не совпадает с объектной моделью. Запись во внешний источник не заменяет штатное хранение данных прикладного решения.
Алгоритм внедрения
- Изучить структуру внешней БД — какие таблицы, поля или функции нужны.
- Создать ВнешнийИсточникДанных в конфигураторе (Внешние источники данных), описать таблицы и поля — вручную или загрузить структуру из источника.
- Использовать объект в запросах, отчётах, коде.
- Настроить строку подключения в режиме 1С:Предприятие на том сервере, где выполняется код.
Параметры подключения в конфигураторе (при импорте структуры) не используются в рабочем режиме. В проде задают отдельные параметры — часто через константы или администрирование.
Параметры подключения в конфигураторе — это настройки, которые определяют способ взаимодействия ИБ с СУБД или внешними источниками: тип СУБД, сервер, имя базы, аутентификация, таймауты, уровень изоляции транзакций и другие свойства. В конфигураторе эти параметры фиксируются для клиент-серверного варианта и влияют на поведение платформы при старте, а также на генерацию запросов и обработку ошибок. Правильная настройка параметров позволяет балансировать между скоростью, надёжностью и совместимостью, а также упрощает администрирование и миграцию баз между серверами.
Подключение — ODBC и DSN
ODBC (Open Database Connectivity) — это универсальный программный интерфейс, позволяющий приложениям обращаться к различным СУБД через единый набор функций. В 1С ODBC используется как транспорт для доступа к внешним источникам данных, а также в некоторых сценариях интеграции, где требуется прямой SQL-доступ. Механизм абстрагирует различия между СУБД: разработчик пишет код, ориентируясь на ODBC API, а драйвер конкретной СУБД транслирует вызовы в команды сервера. Это даёт гибкость при работе с разнородными источниками, но требует внимания к совместимости типов данных и особенностям диалектов SQL.
DSN (Data Source Name) — это именованный набор параметров подключения, зарегистрированный в операционной системе либо в приложении, который позволяет обращаться к базе данных по короткому имени вместо полной строки соединения. В Windows DSN хранится в системном реестре и может быть пользовательским или системным, а в кроссплатформенных сценариях его роль выполняют конфигурационные файлы или переменные окружения. В 1С DSN удобен для централизованного управления подключениями, особенно в крупных инфраструктурах, где множество серверов и баз требуют единообразного описания источников.
ODBC-драйвер — это программный компонент, реализующий интерфейс ODBC для конкретной СУБД и обеспечивающий преобразование вызовов ODBC в команды сервера, а также обратную трансляцию результатов и ошибок. Драйвер отвечает за работу с типами данных, транзакциями, курсорами и сетевым протоколом. В 1С выбор драйвера критичен: от него зависит поддержка нужных типов, скорость передачи больших объёмов данных, корректность обработки NULL и временных меток, а также стабильность работы в многопользовательской среде.
Доступ идёт через ODBC. Строка соединения — пары Ключ=Значение, разделённые ;.
Полная строка (пример MySQL):
DRIVER=MySQL ODBC 8.0 Unicode Driver;User ID=user;Password=***;Server=host;Database=warehouse
Через DSN — заранее созданное имя источника:
DSN=MyDB
DSN создают в утилите ODBC (Windows: Источники данных (ODBC)). На 64-bit Windows важна разрядность: для 64-bit сервера 1С — System32\odbcad32.exe, для 32-bit — SysWOW64\odbcad32.exe. На Linux — ODBCConfig и драйвер под вашу СУБД.
Поддерживаемые типы СУБД в свойстве Тип СУБД (официально) — MS SQL Server, IBM DB2, PostgreSQL, Oracle, MySQL. Для других СУБД возможности зависят от ODBC-драйвера.
Где используется в конфигурации
| Возможность | Применение |
|---|---|
| Язык запросов | ВЫБРАТЬ ... ИЗ ВнешнийИсточник.Таблица |
| СКД | Источник данных отчёта |
| Динамический список | Форма со строками внешней таблицы |
| Общие реквизиты | Связь с объектами ИБ |
| Права доступа | RLS на таблицы и поля ВИД |
| BSL | Чтение и запись через объектную модель |
Записи внешних таблиц можно показывать в управляемых формах; обычные формы для ВИД не поддерживаются.
Структура в конфигурации может описывать меньше таблиц и полей, чем в реальной БД, но не больше — нельзя добавить поле, которого нет в источнике.
СКД (система компоновки данных) — это встроенный в платформу механизм построения отчётов, который отделяет описание структуры от данных и позволяет гибко настраивать вывод без изменения кода конфигурации. СКД оперирует наборами данных, полями, группировками, иерархиями, условным оформлением и параметрами, а также поддерживает сложные расчёты, итоги и расшифровки. Важное преимущество СКД — возможность изменять настройки отчёта через интерфейс без программирования, а также повторное использование одних и тех же наборов данных в разных отчётах за счёт общей библиотеки.
Динамический список — это интерфейсный элемент управляемых форм, отображающий данные в виде таблицы с возможностью сортировки, фильтрации, поиска и группировки. В отличие от статических таблиц, динамический список подгружает данные порциями по мере прокрутки, что улучшает отзывчивость при работе с большими объёмами. Он может опираться на произвольный запрос, СКД или объект метаданных, а его поведение настраивается декларативно: указываются поля, условия, порядок и ограничения. Это основной способ представления списков документов, справочников и результатов отчётов в современных конфигурациях.
Общие реквизиты — это механизм платформы, позволяющий добавить один и тот же реквизит сразу ко множеству объектов конфигурации (справочникам, документам, регистрам) без дублирования описания в каждом объекте. Общие реквизиты хранятся централизованно и управляются как отдельный объект метаданных, что упрощает поддержку и обновление структуры. Они полезны для сквозных атрибутов (например, «Ответственный», «Подразделение», «Комментарий»), а также для реализации дополнительных проверок и прав доступа, которые должны действовать единообразно во всей системе.
Права доступа в 1С управляют тем, какие действия пользователи могут выполнять с объектами метаданных и данными: чтение, запись, проведение, удаление, а также доступ к отдельным полям и командам. Модель прав построена на ролях, которые агрегируют наборы прав и назначаются пользователям или группам. Платформа поддерживает детализацию до уровня отдельных реквизитов и команд, а также динамические ограничения, зависящие от значений данных (RLS — row-level security). Это позволяет гибко разграничивать полномочия в зависимости от должности, подразделения и бизнес-роли, сохраняя при этом целостность данных.
BSL (Business Script Language) — это язык программирования платформы «1С:Предприятие», на котором реализуется прикладная логика: модули объектов, формы, обработки, регламентные задания. BSL сочетает императивный стиль с объектной моделью платформы и встроенными конструкциями для работы с метаданными, запросами и транзакциями. Язык ориентирован на предметную область и содержит множество высокоуровневых операций, упрощающих типовые задачи учёта и управления. При этом BSL строго типизирован, поддерживает обработку исключений и имеет встроенные средства отладки и профилирования.
Управляемые формы — это современный тип форм в платформе, рассчитанный на работу в тонком и веб-клиенте и построенный по принципу декларативного описания интерфейса и разделения логики между клиентом и сервером. В управляемых формах элементы управления, команды и параметры описываются в метаданных, а поведение реализуется в модулях формы с учётом разделения контекста (клиентский и серверный код). Такой подход обеспечивает масштабируемость, удобство поддержки и кроссбраузерную работу, а также позволяет использовать динамические списки, СКД и другие механизмы платформы в едином интерфейсе.
Запрос к внешней таблице
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВнешниеДанные.Код,
| ВнешниеДанные.Наименование
|ИЗ
| ВнешнийИсточник.СправочникКонтрагентов КАК ВнешниеДанные
|ГДЕ
| ВнешниеДанные.ПометкаУдаления = ЛОЖЬ";
Выборка = Запрос.Выполнить().Выбрать();
Имена таблиц — как в метаданных ВнешнийИсточникДанных, не обязательно как в SQL исходной БД (маппинг задаётся при описании структуры).
Имена таблиц в 1С — это внутренние идентификаторы объектов хранения, которые платформа генерирует автоматически и использует для обращения к данным на уровне СУБД. Для разработчика эти имена обычно скрыты за объектами метаданных, но они становятся важны при написании прямых SQL-запросов, настройке индексов, анализе планов выполнения и интеграции через внешние источники. Имена таблиц могут меняться при реструктуризации базы, поэтому полагаться на них в прикладном коде не рекомендуется; вместо этого используют запросы на языке 1С, абстрагирующие физическую структуру.
Синхронизация и загрузка
Для регулярного переноса данных во свою ИБ 1С обычно комбинируют:
- выборку из ВИД;
- запись в справочники/документы с проверкой дубликатов;
- регламентное задание на сервере.
Прямая запись во внешнюю СУБД уместна для узких задач (обновление статуса в staging-таблице), но учётные документы всё равно оформляют в 1С.
Прямая запись — это изменение данных в базе без использования штатных механизмов платформы (проведения, команд формы, обработчиков событий). Такие операции выполняются через низкоуровневые интерфейсы (прямой SQL, COM, ADO) и обходят проверки, подписки и бизнес-правила, что делает их потенциально опасными для целостности данных. Прямая запись применяется в исключительных случаях (массовые загрузки, исправление ошибок, миграция), и всегда требует тщательного контроля, резервного копирования и понимания последствий для связанных объектов и отчётов.
Выборка — это процесс получения данных из ИБ в соответствии с заданным условием, который в 1С реализуется через объект «Запрос» либо через встроенные механизмы обхода коллекций. Выборка может быть простой (по одному объекту) или сложной (с объединениями, группировками, подзапросами), а её результат возвращается в виде таблицы значений, выборки или набора записей. Платформа оптимизирует выполнение запросов, используя индексы и кэширование, а разработчик может влиять на производительность, ограничивая поля, применяя временные таблицы и избегая избыточных соединений.
Регламентное задание — это механизм фонового выполнения задач по расписанию или по событию, встроенный в платформу. Регламентные задания используются для периодической обработки данных, выгрузки/загрузки, рассылки уведомлений, пересчёта итогов и других операций, которые не требуют участия пользователя. Каждое задание имеет параметры запуска, обработку ошибок и журналирование, а также может выполняться в отдельном сеансе, что позволяет разгрузить рабочие процессы и обеспечить стабильную работу системы.
Staging-таблица — это промежуточная таблица в схеме DWH или в базе интеграции, предназначенная для временного хранения данных на этапе загрузки. В staging-слое данные сохраняются в исходном виде, без преобразований, что позволяет повторить загрузку при ошибках, провести аудит и выявить несоответствия. После проверки данные из staging-таблицы переносятся в основные таблицы хранилища с применением бизнес-правил, дедупликации и обогащения. В 1С staging-таблицы могут быть реализованы как внешние источники, временные таблицы в запросах либо как отдельные объекты конфигурации для интеграции, обеспечивая прозрачность и надёжность обмена.
Связанные материалы
- Работа с базами данных 1С — своя ИБ и язык запросов
- PostgreSQL и 1С — штатная СУБД базы 1С (это не ВИД)
- Интеграция — хаб
- Универсальный обмен — когда нужен обмен объектами, а не SQL-таблицами