Как программно получить параметры характеристик номенклатуры в 1С:КА 2.4?

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

При работе с конфигурациями на базе 1С:ERP 2.0 (включая 1С:Комплексная автоматизация 2.4 и 1С:Управление торговлей 11) разработчики часто сталкиваются с задачей извлечения конкретных параметров характеристики номенклатуры. Например, если характеристика называется «Черный, 36», нам может потребоваться отдельно получить значение цвета («Черный») и значение размера («36») для использования в логике отчетов или при выгрузке данных. Разберем подробно, как устроена эта система и какими методами следует пользоваться для решения задачи.

Архитектура хранения параметров характеристик

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

  1. Справочник ХарактеристикиНоменклатуры: Это основной объект. Сами значения параметров (цвет, размер, материал) хранятся в его табличной части ДополнительныеРеквизиты.
  2. Колонки табличной части: В этой ТЧ есть две ключевые колонки — Свойство (ссылка на План видов характеристик ДополнительныеРеквизитыИСведения) и Значение (тип данных зависит от настроек свойства, чаще всего это ссылка на значение дополнительного реквизита).
  3. ПВХ ДополнительныеРеквизитыИСведения: Здесь описываются сами свойства (например, «Размер обуви»).
  4. Справочник НаборыДополнительныхРеквизитовИСведений: Этот объект связывает конкретный Вид номенклатуры с набором доступных ему свойств для характеристик. Именно здесь определяется, какие поля появятся в карточке характеристики.

Почему табличная часть может оказаться пустой?

Иногда при попытке прочитать ТЧ ДополнительныеРеквизиты запросом или через объектную модель разработчик обнаруживает, что она пуста, хотя в интерфейсе значения видны. Рассмотрим основные причины такой ситуации:

Программное получение параметров через методы БСП

Вместо написания прямых запросов к табличным частям, рекомендуется использовать универсальные функции общего модуля УправлениеСвойствами. Это наиболее правильный и безопасный путь, так как БСП учитывает все настройки системы, включая кеширование и права доступа. Разберем два основных сценария.

Сценарий 1: Получение всех заполненных параметров характеристики

Если нам нужно прочитать все имеющиеся свойства объекта (например, для вывода в печатную форму), воспользуемся методом ПолучитьЗначенияСвойств. Рассмотрим пример кода:


// СсылкаНаХарактеристику - это ссылка на элемент справочника ХарактеристикиНоменклатуры
ПараметрыОбъекта = УправлениеСвойствами.ПолучитьЗначенияСвойств(СсылкаНаХарактеристику);

Для Каждого СтрокаПараметра Из ПараметрыОбъекта Цикл
    Сообщить("Свойство: " + СтрокаПараметра.Свойство + " | Значение: " + СтрокаПараметра.Значение);
КонецЦикла;

Этот метод возвращает таблицу значений с колонками Свойство и Значение. Это позволяет не задумываться о том, где именно лежат данные (в ТЧ или в регистре сведений), так как БСП соберет их автоматически.

Сценарий 2: Получение значения конкретного параметра

Чаще всего программисту нужно получить значение конкретного свойства, например «Размер». Для этого проанализируем следующий подход:


// Сначала необходимо найти ссылку на само свойство (элемент ПВХ)
// В реальных задачах лучше искать по имени или использовать предопределенные элементы
СсылкаНаСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Размер (Характеристики)");

Если Не СсылкаНаСвойство.Пустая() Тогда
    ЗначениеРазмера = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаХарактеристику, СсылкаНаСвойство);
    Сообщить("Выбран размер: " + ЗначениеРазмера);
КонецЕсли;

Особенности работы с наименованием

Выясним еще один важный момент: наименование характеристики в КА 2.4 (например, «Красный, XL») формируется автоматически. Оно строится на основании шаблона, заданного в Виде номенклатуры, и значений дополнительных реквизитов. Если вы программно меняете значения в табличной части ДополнительныеРеквизиты, не забудьте обновить и строковое наименование. Для этого в модуле менеджера справочника ХарактеристикиНоменклатуры обычно предусмотрены процедуры обновления по шаблону.

Связь через Аналитику учета номенклатуры

Посмотрим на ситуацию, когда мы работаем с регистрами накопления (например, ВыручкаИСебестоимостьПродаж). В них часто используется измерение АналитикаУчетаНоменклатуры. Важно понимать, что этот регистр сведений является лишь ключом (ссылкой), объединяющим номенклатуру и характеристику. Чтобы добраться до параметров, нам всегда нужно сначала получить ссылку на характеристику из этого ключа:


// Получаем характеристику из ключа аналитики
ХарактеристикаСсылка = КлючАналитики.Характеристика;

// Теперь применяем методы БСП, описанные выше
ЗначениеЦвета = УправлениеСвойствами.ЗначениеСвойства(ХарактеристикаСсылка, СсылкаНаСвойствоЦвет);

Таким образом, для надежной работы с характеристиками в КА 2.4 следует избегать прямых запросов к табличным частям, если нет уверенности в структуре данных конкретной базы. Использование общего модуля УправлениеСвойствами является стандартом разработки для ERP-систем.

← На главную