Как найти товары, участвующие в акциях, если типовые механизмы 1С не используются?

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

Часто в процессе поддержки доработанных конфигураций 1С, таких как Управление торговлей 11.4, возникают ситуации, когда привычные механизмы учета перестают работать или полностью замещаются кодом предыдущих разработчиков. Одной из частых задач является поиск списка товаров, привязанных к конкретной акции, когда стандартные регистры сведений, например, Действия скидок (наценок) по номенклатуре, оказываются пустыми. Давайте разберем по шагам, как выявить место хранения таких данных.

Этап 1: Анализ структуры метаданных и поиск ссылок

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

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

    Откройте карточку товара или документ акции в пользовательском режиме, выберите пункт Найти ссылки на объект. Если объект действительно привязан к акционным данным, система покажет все регистры или документы, где фигурирует эта ссылка. Даже если данные хранятся в кастомном регистре, ссылка на товар в его измерениях будет обнаружена.

Этап 2: Использование возможностей отладчика

Если поиск ссылок не дал результатов, значит, данные могут формироваться динамически или записываться через сложные механизмы подписок. В этом случае нам поможет отладчик 1С.

Разберем классический метод поиска через установку точек останова:

  1. Найдите документ или обработку, которая отвечает за запуск или редактирование акции.
  2. Откройте модуль объекта или формы этого документа.
  3. Установите точку останова (клавиша F9) в процедурах записи данных (например, ПередЗаписью или ПриЗаписи).
  4. Запустите отладку (F5) и выполните действие в пользовательском режиме (нажмите кнопку сохранения акции).
  5. Когда исполнение кода остановится, используйте пошаговое выполнение (клавиша F11), чтобы проследить, в какие именно таблицы или регистры передаются данные о товарах.

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

Этап 3: Анализ через «Замер производительности»

Если код слишком запутан, используйте Замер производительности. Он поможет увидеть, какие именно процедуры вызываются при выполнении операции. Запустите замер, выполните операцию сохранения или открытия акции, а затем проанализируйте отчет. Вы увидите все вызовы процедур, среди которых обязательно найдется та, что работает с хранилищем товаров.


// Примерный поиск записи в кастомном регистре при отладке
Процедура ЗаписатьТоварыАкции(Товары, СсылкаНаАкцию)
    НаборЗаписей = РегистрыСведений.МойКастомныйРегистр.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Акция.Установить(СсылкаНаАкцию);
    // ... логика заполнения набора
    НаборЗаписей.Записать();
КонецПроцедуры

Этап 4: Проверка прав доступа и видимости

Иногда записи в регистрах существуют, но они скрыты от текущего пользователя из-за настроек RLS (ограничение доступа на уровне записей). Всегда проверяйте данные под пользователем с полными правами через Консоль запросов. Попробуйте выполнить простой запрос:


ВЫБРАТЬ * 
ИЗ РегистрСведений.НазваниеВашегоРегистра КАК Рег
ГДЕ Рег.Номенклатура = &Номенклатура

Если даже под полными правами вы ничего не видите, возможно, данные хранятся в Хранилище значений (тип данных ХранилищеЗначений) внутри справочника или документа. В этом случае придется проанализировать, как этот реквизит считывается и расшифровывается в коде.

Помните, что в сильно измененных конфигурациях УТ 11.4 часто встречаются «костыли» в виде временных таблиц или использования стандартных объектов не по назначению. Терпеливый анализ кода через F11 и проверка всех подозрительных регистров — это ключ к решению задачи.

← На главную