В практике разработки на платформе 1С часто возникает ситуация, когда типового функционала конфигурации недостаточно, и заказчику требуется добавить новую аналитику не в шапку документа, а непосредственно в строки его табличной части. Стандартная подсистема БСП «Дополнительные реквизиты и сведения» отлично справляется с расширением объектных сущностей (справочников, документов), но, к сожалению, «из коробки» не поддерживает работу с табличными частями. В этой статье мы подробно разберем, почему это так, и какие существуют способы решения этой задачи без нарушения правил поддержки конфигурации.
Проанализируем техническую сторону вопроса, которую часто упускают начинающие разработчики. Как справедливо отмечено в ходе обсуждения, основная проблема кроется в идеологии платформы 1С. Строка табличной части не является ссылочным объектом. В отличие от документа или элемента справочника, у строки нет своего уникального идентификатора (UUID), который бы однозначно определял её в базе данных.
Рассмотрим последствия этого факта:
Тем не менее, задача остается актуальной. Разберем основные пути её решения, начиная с самых современных.
На сегодняшний день это рекомендуемый способ. Начиная с версии платформы 8.3.15, расширения позволяют добавлять собственные реквизиты непосредственно в типовые табличные части. Рассмотрим этот процесс по шагам:
Преимущества этого метода:
Если по каким-то причинам использование расширений для модификации структуры ТЧ невозможно (например, политика компании или старая версия платформы), мы можем реализовать механизм «виртуальных» реквизитов. Суть метода заключается в создании связи «Объект + Уникальный ключ строки».
Рассмотрим алгоритм реализации:
КлючСвязи с типом УникальныйИдентификатор или Число.ДополнительныеРеквизитыСтрок.
Объект (Ссылка на документ), КлючСвязи.Значение (или несколько конкретных аналитик).Для корректной работы нам потребуется программно генерировать ключ при добавлении строки. Проанализируем пример кода на языке 1С:
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
// Если ключ еще не заполнен (новая строка), генерируем его
Если ТекущиеДанные.КлючСвязи = Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда
ТекущиеДанные.КлючСвязи = Новый УникальныйИдентификатор;
КонецЕсли;
КонецПроцедуры
Важно помнить, что при копировании строки ключ также нужно обновлять, иначе две строки будут ссылаться на одну и ту же запись в регистре сведений.
Чтобы пользователь мог видеть эти данные в отчетах без сложных запросов, мы можем задействовать механизм характеристик платформы 1С. Это позволяет «подмешивать» данные из внешних источников (нашего регистра сведений) к объекту в системе компоновки данных.
Для настройки характеристик выполним следующие действия:
Объект и КлючСвязи.После этой настройки в консоли отчетов или в любом отчете на СКД при выборе полей из таблицы документа появятся дополнительные поля, которые физически лежат в регистре, но визуально выглядят как реквизиты табличной части.
В крупных типовых решениях, таких как 1С:ERP или 1С:Управление торговлей 11, часто применяется подход с использованием справочников-ключей. Вместо того чтобы добавлять 10 разных аналитик в строку чека или заказа, разработчики добавляют один реквизит КлючАналитикиНоменклатуры (тип СправочникСсылка).
Проанализируем преимущества такого подхода:
Подводя итог нашему разбору, можно сказать, что отсутствие встроенного механизма доп. реквизитов для ТЧ в БСП — это не просто «лень разработчиков», а осознанное ограничение, связанное с архитектурой платформы. При решении этой задачи мы рекомендуем придерживаться следующей логики:
1. Если вам нужно просто добавить 1-2 поля для визуального отображения и простого учета — используйте расширения конфигурации. Это самый быстрый и надежный путь в современных версиях 1С.
2. Если же перед вами стоит задача построения сложной системы аналитики, которая должна учитываться в движениях регистров и влиять на финансовый результат, рассмотрите вариант с созданием справочника ключей аналитики. Это позволит сохранить конфигурацию «чистой» и обеспечит высокую скорость работы отчетов.
Выясним, какой метод подходит именно вам, исходя из требований к отчетности: если аналитика нужна «только в документе», достаточно расширения. Если «в отчетах по продажам/остаткам» — необходимо обеспечить попадание этих данных в регистры накопления.