К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как описать структуру документа в 1С

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

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

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

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

Из чего состоит документ 1С

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

У каждого документа автоматически присутствуют стандартные реквизиты: номер, дата, проведён, пометка удаления, ссылка. Их не нужно создавать вручную, но важно учитывать при проектировании: например, дата документа определяет его позицию в последовательности и момент времени для проведения.

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

Как определить состав реквизитов шапки

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

Для каждого реквизита задайте тип данных. Используйте ссылки на справочники вместо строк: «Контрагент» — это СправочникСсылка.Контрагенты, а не текст. Ссылочные типы обеспечивают целостность данных, отборы и отчёты. Строки оставляйте для комментариев и номеров внешних документов, при этом указывайте разумную длину — неограниченная строка мешает индексированию и поиску.

Проверьте обязательность заполнения: в свойствах реквизита установите «Проверка заполнения — Выдавать ошибку» для ключевых полей, без которых документ бессмыслен (организация, склад). Это избавит от пустых значений и ошибок в отчётах без написания кода.

Типы реквизитовСсылочные типы вместо строк

Контрагент, договор, склад — ссылки на справочники, а не текст

ОбязательностьКлючевые поля под контролем

Для критичных реквизитов включена проверка заполнения

СоставТолько единичные данные

Повторяющиеся списки вынесены в табличные части

Когда и как создавать табличные части

Табличная часть нужна, когда в документе повторяется набор однотипных строк. Классический пример — «Товары» с колонками «Номенклатура», «Количество», «Цена», «Сумма». Если в документе несколько разнородных списков (товары и услуги, основные данные и дополнительные сведения), создавайте отдельные табличные части — не смешивайте разные сущности в одной таблице с флагами-переключателями.

Для колонок табличной части действуют те же правила типизации, что и для реквизитов шапки. Суммы храните в типе Число с точностью 2 знака, количество — с точностью, принятой в учёте (обычно 3 знака). Валютные суммы и курсы выносите в шапку, если они едины для документа.

Расчётные поля (сумма = количество × цена) храните в базе, а не вычисляйте на лету в отчётах: это стандарт практически всех типовых конфигураций. Пересчёт выполняйте в обработчиках формы ПриИзменении, чтобы пользователь видел результат сразу.

Как описать движения по регистрам

Движения — это то, ради чего документ существует в учётной системе. На закладке «Движения» в конфигураторе отметьте регистры (накопления, сведений, бухгалтерии), в которые документ должен записывать данные при проведении. Само отметка не создаёт записи — логика формируется в обработчике «ОбработкаПроведения» модуля объекта.

Опишите соответствие: какие реквизиты документа и строки табличных частей в какие измерения, ресурсы и реквизиты регистра попадают. Например, документ «Поступление товаров» пишет в регистр накопления «ОстаткиТоваров»: склад из шапки, номенклатура и количество из табличной части, вид движения — Приход.

Для отмены проведения в большинстве случаев достаточно стандартного механизма: платформа автоматически удаляет движения документа. Специфическую логику (контроль остатков, восстановление последовательностей) добавляйте в «ОбработкаУдаленияПроведения» только при явной необходимости.

Порядок описания структуры документа
  1. 1
    Соберите требования: печатные формы, отчёты, сценарии использования документа
  2. 2
    Выпишите все поля и разделите их на шапку и табличные части
  3. 3
    Создайте реквизиты с правильными типами и проверкой заполнения
  4. 4
    Создайте табличные части и их колонки, настройте пересчёт сумм
  5. 5
    Отметьте регистры в свойстве «Движения» и напишите обработку проведения
  6. 6
    Настройте нумерацию, длину номера и периодичность
  7. 7
    Проверьте на тестовых данных: ввод, проведение, отмена, отчёты по регистрам

Нумерация, периодичность и проведение

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

Определите режим проведения: разрешить или запретить оперативное проведение. Оперативное проведение (документ проводится текущей датой с контролем остатков «на сейчас») нужно для документов, влияющих на остатки в реальном времени, — продаж, списаний. Для документов, вводимых задним числом пакетно, оперативное проведение лучше запретить.

Учтите, что длина номера влияет на сортировку: строковые номера сортируются лексикографически, поэтому номера дополняются лидирующими нулями. Смешанные форматы номеров (с префиксами и без) в одной базе приводят к «дырам» и конфликтам при обменах.

Как проверить, что структура описана правильно

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

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

Контрольные точки

Как проверить результат

Проведение документа
Норма

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

Тревожный признак

Движения пустые, дублируются или с неверными измерениями

Отмена проведения
Норма

Все движения документа удалены

Тревожный признак

Остаются «хвосты» записей в регистрах

Заполнение реквизитов
Норма

Обязательные поля не дают записать пустой документ

Тревожный признак

Документ проводится без склада, контрагента или организации

Нумерация
Норма

Номера уникальны в заданном периоде, сортировка корректна

Тревожный признак

Дубли номеров, нарушен порядок в журнале

Типичные ошибки при описании структуры

Самая частая ошибка — хранение ссылочных данных строками. Когда контрагент записан текстом, невозможно построить корректные отборы, отчёты и связи, а переименование контрагента «теряет» историю. Вторая типичная проблема — сваливание разнородных данных в одну табличную часть с типом строки-переключателем: это усложняет проведение, печать и отчёты.

Также опасны: избыточное число реквизитов «на будущее», которые никогда не заполняются, но замедляют формы; отсутствие проверки заполнения ключевых полей; изменение структуры в рабочей базе без копии; и написание сложной логики проведения до того, как утверждён состав движений.

Типичные ошибки
01
Строковый тип вместо ссылки на справочник — теряются отборы, отчёты и целостность данных
02
Одна табличная часть для разнородных списков — сложное проведение и запутанные печатные формы
03
Изменение типа реквизита в рабочей базе без копии — безвозвратная потеря данных
04
Проведение написано до утверждения состава регистров — двойная переделка кода
05
Нет проверки заполнения ключевых реквизитов — мусорные документы и ошибки в отчётах

Частые вопросы

Чем реквизит шапки отличается от колонки табличной части?

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

Сколько табличных частей может быть у документа?

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

Можно ли изменить структуру документа после начала эксплуатации?

Да, но с ограничениями. Добавление новых реквизитов и колонок безопасно — старые данные сохранятся, новые поля будут пустыми. Удаление реквизитов и сужение типов приводит к потере данных, поэтому выполняется только после резервного копирования и проверки на копии базы.

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

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

Что такое конструктор движений и стоит ли им пользоваться?

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

Как выбрать периодичность нумерации документа?

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

Итог

Что важно запомнить

Структура документа 1С — это шапка с реквизитами ссылочных типов, табличные части для повторяющихся строк, движения по регистрам с обработкой проведения и настройки нумерации. Проектируйте структуру от реальной операции до начала эксплуатации, проверяйте полный цикл «ввод — проведение — отмена» и не меняйте типы реквизитов в рабочей базе без резервной копии.