Разработка и Конфигурация · 10 мин
Что такое реквизит документа в 1С и как с ним работать
Реквизит документа в 1С: что это, зачем нужен, виды реквизитов, как добавить свой реквизит в конфигураторе и типичные ошибки при работе с ними.
Реквизит документа в 1С — это отдельное поле, в котором хранится конкретное значение: дата поставки, контрагент, номер счёта, ответственный менеджер, сумма скидки. Совокупность реквизитов и табличных частей образует структуру документа: именно реквизиты определяют, какую информацию пользователь вводит при оформлении накладной, счёта или приказа, и какие данные потом попадут в проводки, отчёты и печатные формы.
Без реквизитов документ был бы пустой оболочкой с номером и датой. Каждый реквизит имеет имя (идентификатор для обращения из кода), синоним (подпись, которую видит пользователь) и тип данных — строка, число, дата, булево или ссылка на другой объект: справочник «Контрагенты», перечисление, другой документ. От правильного выбора типа зависит, как будет работать проверка заполнения, поиск и отборы в списках.
Реквизиты встречаются в двух местах: в шапке документа (общие сведения, относящиеся ко всему документу целиком) и в табличных частях (строки товаров, услуг, сотрудников). Понимание этого деления — ключ к тому, чтобы грамотно читать конфигурацию, добавлять собственные поля и не ломать типовые механизмы учёта.
Зачем документу нужны реквизиты
Документ в 1С — это факт хозяйственной жизни: отгрузка, оплата, приём на работу. Реквизиты фиксируют параметры этого факта. Например, у «Реализации товаров и услуг» реквизит «Контрагент» указывает покупателя, «Договор» — условия расчётов, «Склад» — место отгрузки. Без этих полей программа не смогла бы сформировать проводки и движения по регистрам.
Вторая роль реквизитов — аналитика. По значениям реквизитов строятся отчёты и отборы: продажи по менеджеру, задолженность по договору, обороты по складу. Если разработчик не предусмотрел нужный реквизит, информация теряется: её приходится писать в комментарий, который невозможно нормально отфильтровать.
Третья роль — печать и обмен. Печатные формы (ТОРГ-12, счёт-фактура, УПД) берут данные из реквизитов документа. Электронный документооборот тоже опирается на них: при выгрузке в XML значения реквизитов сопоставляются с полями формата. Ошибка в реквизите означает ошибку в официальном документе.
Какие виды реквизитов существуют
Основное деление — по расположению. Реквизиты шапки относятся ко всему документу: номер, дата, организация, контрагент. Реквизиты табличной части повторяются в каждой строке: номенклатура, количество, цена, ставка НДС. У одного документа может быть несколько табличных частей — например, «Товары» и «Услуги», и у каждой свой набор реквизитов.
По типу данных реквизиты делятся на примитивные и ссылочные. Примитивные — строка, число, дата, булево. Ссылочные хранят ссылку на объект базы: элемент справочника, другой документ, значение перечисления. Ссылочный тип предпочтительнее, когда значение должно выбираться из списка: это исключает опечатки и обеспечивает целостность данных.
Есть и составные типы: реквизит может принимать значения нескольких типов, например «Документ-основание» со ссылкой на любой из нескольких видов документов. Составной тип удобен, но усложняет отчёты и запросы, поэтому применять его стоит осознанно.
Где посмотреть реквизиты документа
В пользовательском режиме реквизиты видны прямо на форме документа — это поля с подписями. Не все реквизиты выведены на форму: часть служебных полей скрыта. Полный состав виден в конфигураторе: откройте дерево конфигурации, найдите ветку «Документы», разверните нужный документ — узлы «Реквизиты» и «Табличные части» покажут весь список с типами.
В режиме «Предприятие» быстрый способ увидеть скрытые поля — команда «Ещё → Изменить форму»: там перечислены все реквизиты, доступные на форме, включая невидимые. Это помогает понять, существует ли нужное поле, прежде чем просить доработку.
Программно состав реквизитов получают через метаданные: Документы.РеализацияТоваровУслуг.ПустаяСсылка().Метаданные().Реквизиты вернёт коллекцию описаний. Это используют в универсальных обработках, например при выгрузке документов произвольного вида.
Для Каждого Реквизит Из Метаданные.Документы.РеализацияТоваровУслуг.Реквизиты Цикл
Сообщить(Реквизит.Имя + " — " + Реквизит.Синоним);
КонецЦикла;Как добавить собственный реквизит
Если конфигурация типовая и находится на поддержке, прямое изменение затруднит обновления. Есть два безопасных пути. Первый — механизм дополнительных реквизитов и сведений в режиме «Предприятие» (раздел «Администрирование → Общие настройки → Дополнительные реквизиты и сведения»). Поле добавляется без конфигуратора, доступно в отчётах и отборах, но его нельзя использовать в произвольном коде так же свободно, как обычный реквизит.
Второй путь — расширение конфигурации: в конфигураторе создаётся расширение, в него заимствуется документ, и к нему добавляется свой реквизит. Типовой объект не меняется, обновления проходят штатно. Это рекомендуемый способ для доработок, которым нужен полноценный реквизит с участием в запросах и проводках.
Прямое добавление реквизита в типовой документ — крайний вариант. При обновлении конфигурации такие изменения придётся сопоставлять вручную, а при ошибке сопоставления реквизит можно потерять вместе с данными.
- 1Откройте конфигуратор и создайте новое расширение (Конфигурация → Расширения конфигурации)
- 2Заимствуйте нужный документ в расширение через контекстное меню
- 3Добавьте реквизит: укажите имя, синоним и тип данных
- 4Добавьте реквизит на форму документа в расширении
- 5Сохраните расширение и обновите конфигурацию базы данных (F7)
- 6Откройте документ в режиме «Предприятие» и проверьте, что поле доступно и сохраняется
Проверка заполнения и обязательные поля
У реквизита есть свойство «Проверка заполнения»: «Не проверять», «Выдавать ошибку», «Выдавать предупреждение». Если установлено «Выдавать ошибку», документ нельзя провести с пустым полем. Это основной способ гарантировать полноту данных — например, запретить проведение реализации без договора.
В типовых конфигурациях проверка часто реализована кодом в обработчике «ОбработкаПроверкиЗаполнения», а не свойством: там учитываются условия (договор обязателен только при определённой операции). Поэтому отсутствие звёздочки на форме не всегда значит, что поле необязательное — ошибка может появиться при проведении.
При добавлении собственного обязательного реквизита к документам, которые уже существуют в базе, учтите: старые документы останутся с пустым значением, и при перепроведении они начнут выдавать ошибки. Обычно для старых данных проверку смягчают условием по дате документа.
Реквизиты в проводках, отчётах и печати
При проведении документ формирует движения по регистрам, и источником данных служат реквизиты: шапочные обычно уходят в измерения (организация, контрагент, склад), табличные — в ресурсы и показатели (количество, сумма). Если нужный реквизит не передаётся в регистр, отчёт по нему построить нельзя — это исправляется только доработкой процедуры проведения.
В печатных формах реквизиты подставляются в макет по имени. Переименование реквизита ломает печатную форму: поле останется пустым или вызовет ошибку. Поэтому перед переименованием выполните поиск по имени реквизита по всей конфигурации, включая макеты и внешние обработки.
В запросах к реквизитам обращаются через точку: Документ.РеализацияТоваровУслуг.Контрагент. Реквизиты табличных частей доступны через обращение к табличной части: Документ.РеализацияТоваровУслуг.Товары.Номенклатура. Помните, что соединение с табличной частью умножает строки результата.
Как проверить результат после добавления реквизита
Значение введено, документ записан, после переоткрытия значение на месте
Поле очищается после записи — реквизит не добавлен в структуру или не выведен на форму корректно
По реквизиту доступен отбор и сортировка в журнале документов
Реквизита нет в списке полей отбора — проверьте индексирование и настройки формы списка
Значение выводится в нужной ячейке макета
Пустая ячейка или ошибка — имя параметра в макете не совпадает с именем реквизита
Часто задаваемые вопросы
Чем реквизит отличается от свойства или дополнительного сведения?
Реквизит — часть структуры объекта, хранится в его таблице и доступен в запросах напрямую. Дополнительные реквизиты и сведения хранятся в отдельных таблицах и подключаются через стандартный механизм БСП: они удобны для некритичных полей, но медленнее в запросах и ограниченнее в использовании.
Можно ли удалить реквизит из типового документа?
Технически — да, в конфигураторе, но делать этого не следует: типовой код и обмены обращаются к реквизиту, удаление вызовет ошибки при проведении и обновлении. Если поле мешает, скройте его с формы через настройку формы.
Почему реквизит есть в конфигураторе, но не виден пользователю?
Реквизит не выведен на форму, скрыт настройками видимости или у пользователя нет прав на него (проверьте роли и функциональные опции). Также поле может быть скрыто условием в коде формы — например, показываться только при определённом виде операции.
Какой тип выбрать для реквизита «Комментарий»?
Строка неограниченной длины (длина 0) с многострочным режимом на форме. Ограниченная строка обрежет длинный текст, а хранить комментарий ссылкой на справочник бессмысленно — это свободный текст.
Влияет ли количество реквизитов на скорость работы?
Умеренное количество реквизитов влияет незначительно. Замедление дают составные типы с большим числом ссылок, отсутствие индексов на реквизитах, по которым часто идут отборы, и тяжёлые обработчики при изменении полей на форме.
Как найти все места, где используется реквизит?
В конфигураторе: правый клик по реквизиту в дереве конфигурации → «Поиск ссылок в объектах» покажет использование в метаданных, а глобальный поиск по имени (Ctrl+Shift+F) — обращения в модулях и макетах.
Что важно запомнить
Реквизит документа — это поле для хранения одного значения; реквизиты бывают шапочными и табличными, примитивными и ссылочными. Для доработок используйте дополнительные реквизиты или расширения, не меняйте типовые объекты напрямую, а перед изменением типа или имени реквизита с данными сделайте резервную копию и проверьте все места использования.