Разработка и Конфигурация · 10 мин
Как создать объект конфигурации «Документ» в 1С и описать его структуру
Пошаговая инструкция по созданию объекта конфигурации Документ в 1С: реквизиты, табличные части, движения, проведение, нумерация и типичные ошибки новичков.
Документ — один из ключевых объектов конфигурации 1С:Предприятие. Он фиксирует факт хозяйственной операции: поступление товара, отгрузку, начисление зарплаты, оплату. В отличие от справочника, документ существует во времени — у него есть дата, номер и возможность проведения, то есть записи следствий операции в регистры учёта.
Создание документа выполняется в конфигураторе и состоит из нескольких обязательных этапов: добавление объекта в дерево конфигурации, описание реквизитов и табличных частей, настройка нумерации, определение движений по регистрам и проверка результата в режиме предприятия. Ниже разобран каждый шаг с конкретными действиями и типичными ошибками.
Что представляет собой документ и когда он нужен
Документ в 1С — это объект конфигурации, предназначенный для ввода информации о совершённых событиях. Каждая запись документа имеет дату (с точностью до секунды), уникальный номер в рамках периода и признак проведения. Именно проведение отличает документ от простой записи: проведённый документ формирует движения — строки в регистрах накопления, сведений или бухгалтерии, на основании которых строятся отчёты.
Документ стоит создавать, когда требуется отражать событие с последствиями для учёта: приходная накладная, заказ покупателя, кассовый ордер, приказ о приёме на работу. Если нужно хранить лишь статичную информацию без привязки к моменту времени (список товаров, контрагентов, складов), правильнее использовать справочник, а не документ.
Создание объекта в конфигураторе
Откройте конфигуратор, выполните команду «Конфигурация — Открыть конфигурацию» и дождитесь загрузки дерева объектов. Найдите ветку «Документы», нажмите правой кнопкой мыши и выберите «Добавить». Откроется палитра свойств нового объекта и конструктор с вкладками: «Основные», «Данные», «Нумерация», «Движения», «Последовательности», «Журналы», «Права» и другие.
На вкладке «Основные» задайте имя — идентификатор без пробелов и спецсимволов, например ПоступлениеТоваров, и синоним — отображаемое название для пользователя, например «Поступление товаров». Имя будет использоваться в коде встроенного языка, поэтому давайте его осмысленно и в едином стиле конфигурации. Здесь же при необходимости укажите представление объекта и списка.
- 1Откройте конфигурацию в конфигураторе и в ветке «Документы» выберите «Добавить»
- 2Задайте имя и синоним объекта на вкладке «Основные»
- 3Опишите реквизиты шапки и табличные части на вкладке «Данные»
- 4Настройте нумерацию и длину номера на вкладке «Нумерация»
- 5Отметьте регистры, по которым документ делает движения, на вкладке «Движения»
- 6Напишите обработчик проведения в модуле объекта
- 7Обновите конфигурацию базы данных (F7) и проверьте работу в режиме предприятия
Реквизиты шапки и табличные части
Структура данных документа описывается на вкладке «Данные». Реквизиты шапки — это единичные поля: контрагент, склад, договор, комментарий, ответственный. Для каждого реквизита укажите имя, синоним и тип. Типом может быть примитив (строка, число, дата, булево) или ссылка на другой объект — справочник, документ, перечисление. Для ссылочных типов всегда выбирайте конкретный объект, избегая составных типов без необходимости: они замедляют запросы и усложняют индексацию.
Табличная часть нужна для списков однородных строк: товаров, услуг, сотрудников. Добавьте табличную часть, например Товары, и опишите её реквизиты — номенклатура, количество, цена, сумма. У документа может быть несколько табличных частей. Обратите внимание: реквизиты табличной части не существуют без самой части, и обращаться к ним в коде нужно через коллекцию строк: Объект.Товары[0].Количество.
Нумерация и периодичность
На вкладке «Нумерация» определяется, как система присваивает номера документам. Ключевые настройки: длина номера (типичные значения — от 6 до 11 символов), автонумерация (включена по умолчанию), контроль уникальности и периодичность — в пределах года, квартала, месяца или неограниченно. Чаще всего используется периодичность «В пределах года»: нумерация начинается заново с нового года.
Если номер должен содержать префикс организации или базы (актуально для обменов), настройте префиксацию через подписку на событие «ПриУстановкеНовогоНомера» либо механизм префиксов конфигурации. Не отключайте контроль уникальности без веской причины — дубли номеров создают проблемы при печати, поиске и обмене данными.
Движения и обработчик проведения
На вкладке «Движения» отметьте флажками регистры, в которые документ будет записывать данные: регистры накопления (остатки товаров, взаиморасчёты), регистры сведений (цены, статусы) или регистры бухгалтерии. После выбора регистров кнопка «Конструктор движений» автоматически сгенерирует заготовку кода проведения на основе реквизитов документа.
Основная логика размещается в модуле объекта в обработчике ОбработкаПроведения. Типовой фрагмент для списания товаров в регистр накопления выглядит так:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ОстаткиТоваров.Записывать = Истина;
Для Каждого Строка Из Товары Цикл
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = Строка.Номенклатура;
Движение.Количество = Строка.Количество;
КонецЦикла;
КонецПроцедуры
Для контроля остатков при расходе добавьте запрос к регистру с установкой блокировки данных и установите параметр Отказ = Истина, если остатка недостаточно. Установка отказа отменяет проведение и откатывает транзакцию — это штатный механизм защиты целостности учёта.
Формы, права и журналы
Для работы пользователей документу нужны формы: форма документа, форма списка и, при необходимости, форма выбора. Создайте их через кнопку с изображением лупы у свойства «Основная форма» — конструктор сгенерирует форму со всеми реквизитами, после чего расположение элементов можно скорректировать визуально. Для управляемого приложения формы создаются декларативно: вы описываете состав, а платформа сама строит интерфейс.
На вкладке «Права» настройте доступ ролей к документу: добавление, чтение, изменение, проведение, отмена проведения, удаление. На вкладке «Журналы» укажите, в каких журналах документ будет отображаться вместе с другими видами документов — это упрощает пользователям поиск связанных операций, например всех складских документов в одном списке.
Размещайте проверку заполнения обязательных реквизитов в обработчике «ОбработкаПроверкиЗаполнения», а не в обработчике проведения. Тогда платформа сама подсветит незаполненные поля в форме, и пользователь увидит понятное сообщение до попытки проведения.
Проверка результата и типичные ошибки
После описания структуры нажмите F7 («Обновить конфигурацию базы данных») и подтвердите реструктуризацию. Запустите режим предприятия, создайте документ, заполните реквизиты и проведите его. Затем откройте отчёт по связанному регистру или движения документа (кнопка «Ещё — Движения документа» в форме) и убедитесь, что записи сформированы корректно: верные измерения, ресурсы и период.
Как проверить результат
Появляется номер, статус «проведён», сообщений об ошибках нет
Ошибки компиляции модуля или отказ проведения без сообщения
В движениях документа видны строки с правильными измерениями и суммами
Движения пусты или содержат пустые измерения
Новый документ получает следующий номер в пределах периода
Номера дублируются или сбрасываются не вовремя
Что важно запомнить
Документ создаётся в конфигураторе через ветку «Документы»: задаются имя, реквизиты шапки и табличные части, настраивается нумерация, выбираются регистры движений и пишется обработчик проведения. Перед изменением структуры в рабочей базе делайте резервную копию, а результат всегда проверяйте в режиме предприятия по движениям документа.
Частые вопросы
Чем документ отличается от справочника в 1С?
Справочник хранит постоянную, условно неизменную информацию — списки товаров, контрагентов, складов. Документ фиксирует событие во времени: у него есть дата, номер и возможность проведения с записью движений в регистры. Если данные описывают «что существует», нужен справочник; если «что произошло» — документ.
Можно ли добавить реквизит в документ, по которому уже есть данные?
Да, добавление нового реквизита безопасно: существующие документы получат пустое значение этого реквизита. Опасны обратные операции — удаление реквизита или сужение типа (например, уменьшение длины строки), так как они приводят к потере или усечению данных при реструктуризации.
Почему документ проводится, но движений нет?
Наиболее частая причина — отсутствует строка Движения.ИмяРегистра.Записывать = Истина; в обработчике проведения. Также проверьте, что регистр отмечен на вкладке «Движения» документа и что коллекция табличной части, по которой строится цикл, действительно заполнена.
Как сделать, чтобы номер документа содержал префикс?
Используйте подписку на событие «ПриУстановкеНовогоНомера» для источника «Документ» либо стандартный механизм префиксации, если он есть в вашей конфигурации. В обработчике префикс добавляется к формируемому номеру. Учтите, что длина номера должна вмещать префикс — при необходимости увеличьте её на вкладке «Нумерация».
Нужно ли писать код для отмены проведения?
Обычно нет: при отмене проведения платформа автоматически удаляет движения документа из регистров. Собственный код в обработчике «ОбработкаУдаленияПроведения» требуется только для нестандартной логики — например, проверки прав, снятия блокировок или отката связанных объектов.
Можно ли создать документ без проведения?
Да. Если документ носит чисто информационный характер (например, служебная записка), не отмечайте регистры на вкладке «Движения» — документ будет сохраняться и проводиться формально, но никаких записей в учёт вносить не будет. В свойствах можно также разрешить или запретить проведение через свойство «Проведение».