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

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

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

Подготовка к изменению структуры метаданных

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

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

⚠️ Внимание: Если вы работаете в информационной базе, которая синхронизируется с другими узлами (например, через КД 2.0 или 3.0), добавление реквизитов требует предварительной настройки правил обмена. Без этого изменения не будут переданы партнерам, что приведет к рассинхронизации данных.

Откройте дерево метаданных и найдите объект, в который планируете внести изменения. Это может быть справочник Номенклатура, документ РеализацияТоваровУслуг или любой другой объект. Убедитесь, что конфигурация находится в редактируемом режиме, нажав кнопку "Конфигурация" и выбрав "Открыть конфигурацию".

💡

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

Добавление нового реквизита в объект

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

Именование реквизитов должно следовать принятым стандартам разработки . Используйте префиксы, указывающие на принадлежность поля к определенной подсистеме, если это необходимо, и применяйте ВерблюжийРегистр (CamelCase) для улучшения читаемости кода. Например, вместо "Дата" лучше использовать "ДатаДоговора" или "ДатаОплаты", чтобы избежать конфликтов с системными именами.

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

☑️ Алгоритм добавления реквизита

Выполнено: 0 / 1

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

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

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

Часто возникает необходимость использования составных типов. Например, реквизит "Контрагент" может ссылаться как на юридическое лицо, так и на физическое лицо. В таком случае в списке типов нужно добавить оба значения: СправочникСсылка.ЮрЛица и СправочникСсылка.ФизЛица. Это позволит пользователю выбирать значение из общего списка при вводе данных.

Тип данных Описание Пример использования
Строка Текстовая информация фиксированной или произвольной длины Артикул товара, Комментарий
Число Числовые значения с заданной точностью Количество, Сумма, Коэффициент
Дата Дата и время с точностью до секунды Дата рождения, Срок оплаты
Булево Логическое значение (Истина/Ложь) Флаг "Новый клиент", "VIP статус"
ХранилищеЗначения Произвольные сериализуемые данные Настройки отчета, Дополнительные параметры

Обратите внимание на свойство "Использование". Если вы создаете реквизит для внутреннего использования в коде и не хотите, чтобы он отображался в формах ввода по умолчанию, можно снять соответствующие галочки. Однако чаще всего требуется, чтобы поле было доступно для редактирования пользователем.

Особенности типа "ХранилищеЗначения"

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

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

Вывод реквизита на форму и настройка интерфейса

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

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

  • 📍 Разместите часто используемые поля в видимой части формы без необходимости прокрутки.
  • 🎨 Используйте группы и панели для визуального разделения блоков информации (например, "Адрес", "Контакты", "Банковские реквизиты").
  • 👁️ Настройте видимость полей для разных ролей пользователей, если информация является конфиденциальной.

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

⚠️ Внимание: Интерфейс таксис (такси) в 1С 8.3 имеет свои особенности отображения. Слишком длинные заголовки полей могут обрезаться или переноситься, нарушая верстку. Проверяйте внешний вид форм после добавления новых элементов в разных разрешениях экрана.

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

💡

Правильная группировка элементов на форме сокращает время ввода данных пользователем на 20-30% и снижает количество ошибок из-за невнимательности.

Программная обработка и использование в запросах

После добавления реквизита в метаданные и обновления конфигурации, новое поле становится доступным для использования в коде. В модуле объекта вы можете обращаться к нему через точку, используя имя, заданное при создании. Например, Объект.ДатаДоговора или СтрокаТабличнойЧасти.Артикул.

При написании запросов новый реквизит необходимо явно указывать в списке полей выборки. Если этого не сделать, данные не будут получены из базы, даже если они там есть. Синтаксис запроса остается стандартным, но важно помнить об алиасах таблиц, если вы используете соединения.

ВЫБРАТЬ

Номенклатура.Ссылка,

Номенклатура.Наименование,

Номенклатура.НовыйРеквизит // Обязательно добавить новое поле

ИЗ

Справочник.Номенклатура КАК Номенклатура

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

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

📊 Какой этап добавления реквизитов для вас самый сложный?
Настройка типов данных:Работа с формами в таксис:Написание запросов с новым полем:Обновление базы данных после изменений

Обновление базы данных и тестирование изменений

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

Во время обновления система создает новые колонки в таблицах SQL и заполняет их значениями по умолчанию. Если в базе уже есть документы, новый реквизит для них будет заполнен значением, указанным в свойствах метаданных (обычно это пустая строка, ноль или текущая дата). Будьте готовы к тому, что на больших базах этот этап требует времени простоя.

  • ⏳ Запланируйте обновление на нерабочее время, если база данных содержит миллионы записей.
  • 💾 Обязательно проверьте журнал регистрации на наличие ошибок после обновления.
  • 🧪 Проведите тестовое создание и запись нового элемента справочника или документа.

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

⚠️ Внимание: Если после обновления база данных не запускается или выдает ошибки при обращении к новому реквизиту, возможно, требуется полная выгрузка и загрузка конфигурации с обновлением базы данных (F7). Это радикальная мера, но она часто решает проблемы с рассинхронизацией метаданных и таблиц SQL.

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

Часто задаваемые вопросы

Можно ли удалить реквизит после того, как в нем появились данные?

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

Почему новый реквизит не виден в отчете "Варианты отчетов"?

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

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

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

Влияет ли добавление реквизита на скорость работы базы?

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