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

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

В этой статье мы подробно разберем весь цикл создания таблиц: от выбора типа объекта метаданных до настройки индексов и написания эффективных запросов. Мы рассмотрим нюансы, о которых часто забывают новички, но которые критически важны для опытных специалистов.

Выбор типа объекта метаданных для хранения данных

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

Если вам необходимо хранить документы хозяйственной деятельности, такие как накладные или счета-фактуры, следует использовать объект Документ. Этот тип автоматически создает две связанные таблицы: одну для шапки документа и одну для табличной части. Такая структура позволяет удобно работать с перечислением товаров или услуг в рамках одной операции.

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

  • 📄 Документы — для фиксации фактов хозяйственной жизни во времени.
  • 📒 Справочники — для хранения условно-постоянной информации и классификаторов.
  • 🗃️ Регистры сведений — для хранения срезов данных на конкретную дату или период.
  • 📊 Регистры накопления — для агрегации данных и расчета остатков (товары на складе, деньги).

⚠️ Внимание: Не пытайтесь использовать обычные справочники для хранения быстро меняющихся оперативных данных с высокой интенсивностью записи. Это может привести к блокировкам и замедлению работы системы при одновременном доступе многих пользователей.

📊 Какой объект метаданных вы используете чаще всего?
Справочник
Документ
Регистр сведений
План видов характеристик

Проектирование структуры и добавление реквизитов

После выбора типа объекта необходимо перейти к проектированию его внутренней структуры. В окне свойств объекта метаданных вы найдете вкладку для управления реквизитами. Именно здесь вы определяете, какие поля будет содержать ваша будущая таблица в базе данных.

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

Особое внимание следует уделить составным типам. Например, реквизит "Владелец" может иметь тип СправочникСсылка.Контрагенты или СправочникСсылка.ФизическиеЛица. Использование составных типов дает гибкость, но может усложнить написание запросов и индексацию. Всегда взвешивайте необходимость такой гибкости против потенциального падения производительности.

Для добавления нового поля выполните следующие действия в конфигураторе:

  1. Откройте объект метаданных в окне редактирования.
  2. Перейдите на вкладку "Реквизиты".
  3. Нажмите кнопку добавления и задайте имя, синоним и тип.
  4. При необходимости установите галочку "Индексировать" для часто используемых полей поиска.
💡

Используйте префиксы для именования реквизитов, если они дублируют имена из других объектов, чтобы избежать путаницы в коде. Например, вместо "Цена" используйте "ЦенаПродажи".

Организация табличных частей в документах и справочниках

Многие бизнес-сущности невозможно описать одним набором полей. Например, в заказе покупателя нужно указать не только дату и клиента, но и список товаров с количеством и ценой. Для решения этой задачи в 1С существуют табличные части.

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

При работе с табличными частями в коде вы обращаетесь к ним как к коллекциям объектов. Вы можете добавлять новые строки, удалять существующие или пересчитывать итоги.

Структура типичного документа с табличной частью выглядит следующим образом:

Имя таблицы в БД Назначение Ключевое поле Связь
_Document123 Шапка документа (основные реквизиты) _IDRRef
_Document123TT1 Табличная часть "Товары" _LineNo _IDRRef (ссылка на шапку)
_Document123TT2 Табличная часть "Оплаты" _LineNo _IDRRef (ссылка на шапку)
Как платформа именует таблицы в SQL?

В платформе 1С физические имена таблиц в СУБД генерируются автоматически на основе UID объекта метаданных. Имена вида _Document123 являются служебными и не предназначены для прямого использования в запросах 1С. Всегда обращайтесь к данным через имена метаданных.

Настройка индексов для ускорения выборки данных

Когда объем данных в ваших таблицах начинает исчисляться тысячами и миллионами строк, скорость выполнения запросов становится критическим параметром. Основным инструментом оптимизации чтения данных является правильное индексирование реквизитов.

По умолчанию платформа создает кластерный индекс по ссылке на объект. Однако, если вы часто делаете выборки по другим полям (например, поиск контрагента по ИНН или фильтрация документов по дате), необходимо создавать дополнительные индексы. Без них система будет вынуждена выполнять полное сканирование таблицы, что крайне неэффективно.

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

Рассмотрим пример создания составного индекса для отчета по продажам:

Реквизиты для индекса:

1. Дата (тип Дата)

2. Контрагент (тип СправочникСсылка)

3. Сумма (тип Число)

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

⚠️ Внимание: Избыточное количество индексов может снизить производительность системы при массовой загрузке данных или проведении большого количества документов. Создавайте индексы только под реальные запросы, которые выполняются часто.

Запросы к таблицам и работа с временными наборами

Для извлечения данных из созданных таблиц в 1С используется язык запросов, синтаксис которого во многом похож на SQL, но имеет свои особенности. Основной объект для работы с результатами выборки — это Таблица значений.

При написании запроса вы обращаетесь к объектам метаданных, а не к физическим таблицам. Платформа сама преобразует ваш текст запроса в оптимальный SQL-код для конкретной СУБД (MSSQL, PostgreSQL, Oracle). Это позволяет писать переносимый код, не зависящий от типа базы данных.

Часто возникает необходимость отфильтровать или отсортировать данные уже после получения их из базы, не делая новый запрос. Для этого используются методы объекта ТаблицаЗначений. Вы можете создать временную таблицу в памяти, добавить в нее строки и манипулировать ими программно.

  • 🔍 Выполнить() — метод объекта Запрос, возвращающий результат выборки.
  • 📋 Выгрузить() — метод для получения всех данных из результата запроса в таблицу значений.
  • СоздатьКолонку() — добавление вычисляемого поля в таблицу значений без обращения к БД.
  • 🧹 УдалитьПустыеСтроки() — очистка таблицы от записей, где все поля пусты.
💡

Всегда старайтесь фильтровать данные на уровне запроса (в блоке ГДЕ), а не после выгрузки в таблицу значений. Это снижает нагрузку на сервер приложений и сеть.

Особенности хранения и обновления конфигурации

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

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

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

⚠️ Внимание: Перед обновлением конфигурации на рабочей базе обязательно создайте резервную копию базы данных. Ошибки при конвертации типов данных могут привести к необратимой порче информации.

☑️ Подготовка к обновлению структуры БД

Выполнено: 0 / 5
В чем разница между регистром сведений и обычным справочником?

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

Можно ли создать таблицу без использования конфигуратора?

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

Как удалить ненужную таблицу из базы данных 1С?

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

Что такое виртуальная таблица в 1С?

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