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