← Назад к вопросам

Как на форму объекта добавить новый реквизит?

1.3 Junior🔥 221 комментариев
#Объекты метаданных#Формы и интерфейс

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Добавление нового реквизита на форму объекта в 1С

Суть задачи

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

Порядок добавления нового реквизита

Шаг 1: Добавить реквизит в конфигурацию

  1. Откроем Конфигуратор (Сервис → Конфигуратор)

  2. В дереве конфигурации находим нужный объект:

    • Для документов: Документы → Название документа
    • Для справочников: Справочники → Название справочника
    • Для регистров: Регистры → Регистр
  3. Щелчок правой кнопкой на реквизитах → Добавить реквизит

Пример для документа "ПриходнаяНакладная":
- Имя реквизита: СуммаНДС
- Синоним: "Сумма НДС"
- Тип: Число (целое: нет, точность: 15.2)
- Полнотекстовый поиск: нет
- Длина строки: по умолчанию

Шаг 2: Создать новую миграцию БД (Goose)

Все изменения структуры БД выполняются через миграции. Создаём SQL файл:

-- файл: migrations/0042_add_sums_nds_to_documents.sql

-- Добавляем колонку в таблицу документа
ALTER TABLE documents 
ADD COLUMN sums_nds NUMERIC(15, 2) DEFAULT 0;

-- Комментарий для документирования
COMMENT ON COLUMN documents.sums_nds IS 'Сумма НДС';

Шаг 3: Обновить SQLAlchemy модель

Обновляем модель, чтобы она соответствовала схеме БД:

# backend/domain/documents/models.py

from decimal import Decimal
from sqlalchemy import Column, Numeric, String
from sqlalchemy.orm import declarative_base

Base = declarative_base()

class Document(Base):
    __tablename__ = 'documents'
    
    id = Column(String, primary_key=True)
    name = Column(String)
    amount = Column(Numeric(15, 2))
    sums_nds = Column(Numeric(15, 2), default=Decimal('0.00'))  # ← новый реквизит
    
    def calculate_total(self) -> Decimal:
        return self.amount + self.sums_nds

Шаг 4: Добавить новое поле на форму (UI)

В Конфигураторе на форме объекта:

  1. Выбираем форму редактирования документа
  2. Перетаскиваем новый реквизит из дерева на форму
  3. Настраиваем визуальное представление:
    • Ширина поля
    • Выравнивание
    • Шрифт (если нужно)

Способ 1: Через конструктор форм (графический)

Конфигуратор → Документ → ПриходнаяНакладная → Формы → ФормаДокумента → (двойной клик)

На форме:

  1. Перейти в режим редактирования
  2. Щелчок правой кнопкой на форме → Добавить поле
  3. Выбрать реквизит СуммаНДС из списка
  4. Расположить на нужное место

Способ 2: Через XML форму (программный)

Если форма создана программно, отредактируем XML:

<!-- ФормаДокумента.form.xml -->
<Form>
    <AutoCommandBar>
        <!-- команды формы -->
    </AutoCommandBar>
    
    <ChildItems>
        <UsualGroup Name="GroupBasicInfo">
            <ChildItems>
                
                <!-- Поле суммы НДС -->
                <LabelField Name="LabelSumsNds">
                    <DataPath>Object.SumsNds</DataPath>
                    <Title>Сумма НДС</Title>
                </LabelField>
                
                <InputField Name="InputSumsNds">
                    <DataPath>Object.SumsNds</DataPath>
                    <Type>NumericField</Type>
                    <Format>ЧДД.ДД</Format>
                </InputField>
                
            </ChildItems>
        </UsualGroup>
    </ChildItems>
</Form>

Способ 3: Через модули форм (по коду)

Если нужна сложная логика привязки:

// На форме в модуле
&НаСервере
Процедура ПриЧтенииДанныхСервер(Отмена, СтандартнаяОбработка)
    
    // Инициализация нового реквизита
    Если ЭтотОбъект.СуммаНДС = Неопределено Тогда
        ЭтотОбъект.СуммаНДС = 0;
    КонецЕсли;
    
КонецПроцедуры

// Автоматический расчёт НДС при изменении суммы
&НаКлиенте
Процедура СуммаПриИзменении(Элемент)
    
    // Рассчитываем НДС (например, 18%)
    Объект.СуммаНДС = Объект.Сумма * 0.18;
    
КонецПроцедуры

Важные шаги после добавления реквизита

  1. Применить конфигурацию — F7 в конфигураторе

  2. Запустить миграцию БД:

    make migrate
    
  3. Проверить синхронизацию — убедиться, что:

    • Миграция выполнена успешно
    • Модель обновлена
    • Форма корректно отображает новое поле
  4. Обновить кэш в 1С:Предприятии:

    • Закрыть все окна
    • Сервис → Очистить кэш
    • Перелогиниться

Практические рекомендации

Обязательно выполняй в таком порядке:

  1. Добавить реквизит в конфигурацию
  2. Создать миграцию БД (Goose)
  3. Обновить SQLAlchemy модель
  4. Добавить на форму UI элемент
  5. Протестировать логику

Типичные ошибки:

  • ❌ Забыли создать миграцию → БД не обновится
  • ❌ Не обновили модель → несоответствие с БД
  • ❌ Добавили поле на форму, но не на объект → ошибка при сохранении
  • ❌ Не очистили кэш → видят старые значения

Для типовых конфигураций (УТ, БУХ):

Используй встроенные расширения:

Сервис → Расширение конфигурации → новый реквизит для объекта

Это создаст расширение конфигурации вместо прямого редактирования, что безопаснее при обновлениях типовой конфигурации.

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

Как на форму объекта добавить новый реквизит? | PrepBro