Как реализовать дополнительные реквизиты для табличных частей в 1С:БСП?

Программист 1С v8.3 (Управляемые формы) Управленческий учет IT и автоматизация бизнеса
← На главную

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

Почему БСП не поддерживает дополнительные реквизиты табличных частей?

Проанализируем техническую сторону вопроса, которую часто упускают начинающие разработчики. Как справедливо отмечено в ходе обсуждения, основная проблема кроется в идеологии платформы 1С. Строка табличной части не является ссылочным объектом. В отличие от документа или элемента справочника, у строки нет своего уникального идентификатора (UUID), который бы однозначно определял её в базе данных.

Рассмотрим последствия этого факта:

  1. Проблема идентификации: Если мы попытаемся привязать дополнительное значение к номеру строки, то при любой сортировке, удалении или вставке строк в середине списка все наши «дополнительные» данные перемешаются или потеряют актуальность.
  2. Отсутствие событийности: Механизм БСП для доп. реквизитов завязан на Плане Видов Характеристик (ПВХ) и регистре сведений, где в качестве измерения выступает ссылка на объект. Для строки ТЧ такой ссылки просто не существует в структуре метаданных.
  3. Сложность в отчетах: Аналитика в 1С чаще всего собирается по регистрам накопления, а не по документам напрямую. Если добавить реквизит в ТЧ, его нужно транслировать в движения регистров, что требует изменения логики проведения, а значит — снятия конфигурации с поддержки.

Тем не менее, задача остается актуальной. Разберем основные пути её решения, начиная с самых современных.

Решение №1: Использование расширений конфигурации

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

  1. Создадим новое расширение или используем существующее.
  2. Заимствуем необходимый документ в расширение.
  3. В расширении добавим новый реквизит в нужную табличную часть документа.
  4. Вынесем этот реквизит на форму документа (форму также нужно заимствовать).

Преимущества этого метода:

Решение №2: Механизм «Ключ связи» и регистр сведений

Если по каким-то причинам использование расширений для модификации структуры ТЧ невозможно (например, политика компании или старая версия платформы), мы можем реализовать механизм «виртуальных» реквизитов. Суть метода заключается в создании связи «Объект + Уникальный ключ строки».

Рассмотрим алгоритм реализации:

  1. Добавим в табличную часть документа (через расширение или штатно) реквизит КлючСвязи с типом УникальныйИдентификатор или Число.
  2. Создадим непериодический регистр сведений ДополнительныеРеквизитыСтрок.
    • Измерения: Объект (Ссылка на документ), КлючСвязи.
    • Ресурсы: Значение (или несколько конкретных аналитик).

Для корректной работы нам потребуется программно генерировать ключ при добавлении строки. Проанализируем пример кода на языке 1С:


&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
    ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
    Если ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Если ключ еще не заполнен (новая строка), генерируем его
    Если ТекущиеДанные.КлючСвязи = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
        ТекущиеДанные.КлючСвязи = Новый УникальныйИдентификатор;
    КонецЕсли;
КонецПроцедуры

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

Решение №3: Использование механизма Характеристик в СКД

Чтобы пользователь мог видеть эти данные в отчетах без сложных запросов, мы можем задействовать механизм характеристик платформы 1С. Это позволяет «подмешивать» данные из внешних источников (нашего регистра сведений) к объекту в системе компоновки данных.

Для настройки характеристик выполним следующие действия:

  1. В метаданных объекта перейдем на закладку «Характеристики».
  2. Укажем в качестве источника наш регистр сведений.
  3. Настроим связи по полям Объект и КлючСвязи.

После этой настройки в консоли отчетов или в любом отчете на СКД при выборе полей из таблицы документа появятся дополнительные поля, которые физически лежат в регистре, но визуально выглядят как реквизиты табличной части.

Решение №4: Архитектурный подход «Ключи аналитики»

В крупных типовых решениях, таких как 1С:ERP или 1С:Управление торговлей 11, часто применяется подход с использованием справочников-ключей. Вместо того чтобы добавлять 10 разных аналитик в строку чека или заказа, разработчики добавляют один реквизит КлючАналитикиНоменклатуры (тип СправочникСсылка).

Проанализируем преимущества такого подхода:

Выводы и рекомендации

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

1. Если вам нужно просто добавить 1-2 поля для визуального отображения и простого учета — используйте расширения конфигурации. Это самый быстрый и надежный путь в современных версиях 1С.

2. Если же перед вами стоит задача построения сложной системы аналитики, которая должна учитываться в движениях регистров и влиять на финансовый результат, рассмотрите вариант с созданием справочника ключей аналитики. Это позволит сохранить конфигурацию «чистой» и обеспечит высокую скорость работы отчетов.

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

← На главную