Работа с базами данных, содержащими десятки миллионов записей, требует от разработчика 1С особого подхода. В данной статье мы разберем задачу добавления реквизита ВидДокумента в документ, который уже содержит 30 миллионов записей. Мы проанализируем, какой тип реквизита лучше выбрать и как избежать длительной блокировки системы.
Когда мы добавляем реквизит в конфигуратор, платформа 1С пытается выполнить процедуру реструктуризации таблицы базы данных. Для таблицы с 30 миллионами строк это может означать часы или даже дни простоя системы, так как SQL-серверу потребуется перестроить физическую структуру таблицы. Рассмотрим, какие подходы помогут нам справиться с этой задачей:
РегистрСведений. В качестве измерения вы указываете Ссылка на документ, а в качестве ресурса — ваш вид документа. Это позволяет наполнять данными регистр постепенно, не блокируя основной документ.Это ключевой вопрос при проектировании. Давайте сравним два подхода, чтобы понять, что будет эффективнее в долгосрочной перспективе.
Вариант 1: Перечисление. Перечисления — это классический инструмент 1С для хранения фиксированных списков. Их плюсы заключаются в строгой типизации: вы точно знаете, какие значения могут быть выбраны. Однако, любой новый элемент, добавленный в Перечисление, требует изменения метаданных конфигурации, что при следующем обновлении снова повлечет за собой реструктуризацию.
Вариант 2: Справочник. Использование Справочника дает вам гибкость. Когда вам потребуется добавить новый вид операции, вы просто создаете новый элемент справочника в режиме «1С:Предприятие». Это не требует правки конфигурации и не вызывает реструктуризацию таблицы.
Итог: Если список видов документов потенциально может расширяться или меняться, выбирайте Справочник. С технической точки зрения на уровне SQL-хранилища для 1С тип ссылки (на справочник или перечисление) выглядит практически идентично, поэтому на производительность запросов тип ссылки влияет незначительно.
Разберем, как нам поступить в данной ситуации наиболее безопасно:
Перечисление. Если же вы предвидите новые виды продаж в будущем — смело создавайте Справочник.РегистрСведений. Это позволит нам развязать руки и не зависеть от тяжелой реструктуризации основного документа.Важно помнить, что 1С хранит ссылки на объекты в виде binary(16). Независимо от того, выбрали вы Справочник или Перечисление, объем хранимых данных в таблице SQL будет одинаковым. Это подтверждает, что выбор между ними — это вопрос методологии сопровождения системы, а не производительности чтения/записи.
Мы выяснили, что если вы хотите избежать постоянных правок конфигурации, Справочник является наиболее предпочтительным вариантом. Он позволяет добавлять данные «на лету», что критически важно при работе с большими базами данных, где каждое обновление структуры требует длительного времени и тщательного планирования.
Надеемся, эти рекомендации помогут вам принять верное архитектурное решение и успешно адаптировать вашу конфигурацию под новые требования бизнеса!