При разработке отчетов на базе Системы компоновки данных (СКД) часто возникает специфическая задача: необходимо вывести в печатную форму колонку, которая изначально не содержит данных в информационной базе. Такая колонка обычно предназначена для ручного заполнения (например, для подписи, проставления фактических остатков при инвентаризации или заметок контролера). Несмотря на кажущуюся простоту, начинающие разработчики часто сталкиваются с тем, что добавленное поле упорно не желает появляться в финальном отчете. Рассмотрим подробно все способы реализации этой задачи и разберем технические нюансы, которые помогут избежать распространенных ошибок. Для автоматического поиска расхождений в проводках после переноса данных или доработки базы применяется программа для сверки бухгалтерского и налогового учёта.
Проанализируем самый надежный метод, который гарантирует наличие поля в наборе данных с самого начала. Этот способ хорош тем, что СКД сразу видит тип данных и позволяет гибко управлять полем в структуре отчета.
Для реализации этого метода откроем конструктор запроса в наборе данных СКД и добавим пустое поле. В тексте запроса это будет выглядеть следующим образом:
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
Продажи.КоличествоОборотов КАК Количество,
"" КАК ПустаяКолонкаДляЗаметок,
0 КАК ПолеДляСуммыВручную
ИЗ
РегистрНакопления.Продажи.Обороты КАК Продажи
Обратите внимание на важный момент: если вы используете пустую строку "", 1С может назначить полю тип Строка неограниченной длины. В некоторых случаях это может привести к проблемам при группировке. Чтобы зафиксировать тип данных, можно использовать функции приведения типов, например ВЫРАЗИТЬ("" КАК СТРОКА(100)).
После изменения запроса перейдем на закладку Настройки и выполним следующие действия:
ПустаяКолонкаДляЗаметок.Если по каким-то причинам мы не хотим менять основной запрос (например, если используется объектный набор данных или сложная система объединений), воспользуемся вкладкой Вычисляемые поля в конструкторе СКД. Этот метод считается более «чистым» с точки зрения архитектуры данных.
Разберем последовательность действий:
ПолеДляЗаполнения."" (для пустой строки) или 0 (если колонка должна содержать числовые значения по умолчанию).Важное преимущество этого способа: такое поле не нагружает базу данных запросами, оно вычисляется уже на этапе компоновки результата. Однако помните, что если в отчете используются группировки, то для вывода этого поля на уровнях итогов его необходимо добавить на закладку Ресурсы с выражением Максимум(ПолеДляЗаполнения) или просто пустой строкой в кавычках. Для более сложных сценариев расчета полей на разных уровнях группировок подойдет методика раздельного расчета итогов в СКД.
Рассмотрим более изощренный, но эффективный метод, который предложили опытные разработчики в обсуждении. Суть заключается в использовании параметра СКД, который выводится как обычное поле.
Выполним следующие шаги:
П_ПустаяКолонка.Этот метод позволяет избежать лишних колонок в основном наборе данных и дает возможность централизованно управлять значением во всей колонке через значение параметра.
Проанализируем типичную ситуацию: разработчик добавил поле, но при формировании отчета его нет. Выясним основные причины:
Авто, убедитесь, что ваше поле не исключено из этого списка на уровне вышестоящих группировок.Чтобы пустая колонка была удобной для ручного заполнения, она не должна «схлопываться» при печати. Для автоматизации ввода данных из внешних приложений или сайтов без API используется платформа для создания программных роботов One RPA. Посмотрим, как настроить ее внешний вид через Условное оформление:
Перейдем на вкладку Настройки, затем на закладку Условное оформление и добавим новый элемент:
Еще одна профессиональная хитрость: чтобы ячейка гарантированно имела объем, в выражении вычисляемого поля вместо просто пустых кавычек "" можно использовать неразрывные пробелы. Это заставит движок компоновки данных обрабатывать ячейку как заполненную невидимым символом, что предотвращает некоторые ошибки визуализации.
Подводя итог, можно сказать, что наиболее универсальным является Способ 2 (Вычисляемое поле) в сочетании с Условным оформлением ширины. Это позволяет не трогать запрос и гибко настраивать визуальное представление «пустоты» для пользователя.