Как настроить расшифровку до регистратора в СКД без вывода колонки и исправить итоги?

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

При разработке отчетов на системе компоновки данных (СКД) часто возникает потребность обеспечить пользователю возможность детализировать данные до уровня конкретных документов-регистраторов, но при этом сохранить чистоту отчета, не загромождая его лишними колонками. Также при добавлении в отчет регистраторов мы часто сталкиваемся с проблемой «задваивания» итогов, когда система суммирует остатки по каждой записи. Рассмотрим подробно, как решить эти задачи.

Реализация расшифровки без отображения колонки

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

  1. Добавим Регистратор в запрос нашего набора данных. Без наличия поля в выборке данных расшифровка по нему принципиально невозможна.
  2. Перейдем в настройки отчета и откроем вкладку «Выбранные поля». Добавим туда наш Регистратор.
  3. Чтобы скрыть колонку из отчета, но сохранить возможность расшифровки, воспользуемся настройками оформления группировки. В настройках выбранного поля Регистратор установим параметр «Видимость» в значение «Нет».
  4. Если это не дает нужного эффекта, убедимся, что для поля в настройках набора данных установлена роль «Регистратор» в колонке «Роль».

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

Исправление ошибки суммирования итогов (ресурсов)

Самая распространенная проблема при добавлении Регистратора в запрос — это то, что отчет начинает суммировать остатки по каждой строке движения. Это происходит потому, что СКД воспринимает детальные записи как набор отдельных объектов для суммирования. Чтобы корректно отобразить остаток на конец, мы должны изменить принцип расчета ресурсов.

Вместо стандартной функции Сумма(), которая складывает значения всех строк, нам необходимо использовать функцию ВычислитьВыражение(). Это позволит нам получить значение из конкретной, последней записи.

Настройка выражений для ресурсов

Разберем, как правильно задать выражение для ресурса «Остаток»:

Перейдем в настройки набора данных, выберем вкладку «Ресурсы» и для нашего поля с остатками укажем следующее выражение:

ВычислитьВыражение("Сумма(Остаток)", , , "Первая", "Последняя")

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

Критически важный нюанс: ПериодСекунда

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

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

Пошаговый чек-лист для проверки

Если расшифровка до регистратора всё еще не работает или выдает ошибку «Поле не найдено», пройдемся по списку:

Применение данных подходов позволит вам создавать профессиональные отчеты, которые будут и удобными для анализа (благодаря умным итогам), и глубокими для детальной проверки (благодаря настроенной расшифровке до документа).

← На главную