При работе с типовыми отчетами в конфигурации «1С:Бухгалтерия 8.3», такими как «Справка-расчет налога на имущество», специалисты часто сталкиваются с необходимостью кастомизации. Одной из популярных задач является вывод поля «Кадастровый номер» для объектов, налог по которым рассчитывается исходя из среднегодовой стоимости. Казалось бы, достаточно добавить поле в запрос системы компоновки данных (СКД), но на практике разработчики натыкаются на визуальные дефекты: данные в строках появляются, а заголовок в шапке отсутствует, что приводит к «смещению» всей таблицы.
В этой статье мы подробно разберем, почему так происходит и как правильно модифицировать отчет, чтобы данные отображались корректно и красиво.
Рассмотрим ситуацию, с которой столкнулся автор темы. В схеме компоновки данных (СКД) в набор данных РасчетНалогаНаИмуществоПоСреднегодовойСтоимости была добавлена строка запроса:
РасчетНалогаНаИмуществоПоСреднегодовойСтоимости.КадастровыйНомер КАК КадастровыйНомер
После этого поле было включено в настройки группировки «Детальные записи». Однако при формировании отчета колонка с данными появилась, а соответствующая ячейка в шапке таблицы — нет. Выясним причину этого поведения. В 1С многие регламентированные отчеты и справки-расчеты используют не автогенерацию макета, а фиксированные макеты оформления, заданные на одноименной вкладке в конструкторе СКД. Когда мы добавляем новое поле в структуру, система выводит его в области данных, но «не знает», как изменить жестко заданную область шапки. Чтобы исправить это, нам придется поработать с макетами оформления.
Прежде чем приступать к визуальной части, убедимся, что данные действительно попадают в отчет. Нам необходимо проверить, откуда именно подтягивается кадастровый номер. В типовых решениях для объектов со среднегодовой стоимостью эти данные могут храниться в регистре сведений СтавкиНалогаНаИмуществоПоОтдельнымОбъектам или в карточке основного средства. Проанализируем запрос в наборе данных и убедимся, что связь установлена верно.
Если мы работаем с версиями отчета, актуальными после 2022 года (например, СреднегодоваяСтоимость2022), код добавления поля может выглядеть так:
// В тексте запроса СКД находим выборку полей
ВЫБРАТЬ
...
ДанныеОбъектов.КадастровыйНомер КАК КадастровыйНомер,
...
ИЗ
РегистрСведений.СтавкиНалогаНаИмуществоПоОтдельнымОбъектам.СрезПоследних(&Период, ) КАК ДанныеОбъектов
Теперь перейдем к самому важному этапу, который решает проблему «смещения». Откроем конструктор СКД и перейдем на закладку «Макеты». Проанализируем структуру областей.
Параметр, а в качестве имени параметра выбрать наше поле КадастровыйНомер.После того как мы расширили и область шапки, и область детальных записей на одну и ту же ширину, смещение исчезнет, так как СКД будет использовать обновленные границы макета.
Если задача стоит остро, а времени на детальную правку макетов нет, можно воспользоваться хитростью, предложенной в обсуждении темы. Вместо добавления новой колонки, мы можем «впихнуть» кадастровый номер в уже существующее поле Объект (Основное средство).
Для этого в запросе СКД или в выражении пользовательского поля можно прописать следующую логику:
// Пример выражения для поля Объект в СКД
Представление(ОсновноеСредство) + " (КН: " + ЕСТЬNULL(КадастровыйНомер, "---") + ")"
В этом случае нам не придется менять макеты и беспокоиться о ширине таблицы. Информация о кадастровом номере будет выводиться в скобках сразу после наименования основного средства. Это практичный способ для тех случаев, когда отчет должен оставаться компактным.
Поскольку справка-расчет является частью типовой конфигурации, внесение изменений напрямую в основную конфигурацию может затруднить дальнейшие обновления. Рассмотрим правильный алгоритм сохранения изменений:
Подведем итог: основной секрет успешного добавления колонок в справки-расчеты 1С кроется в синхронном редактировании набора данных и именованных областей на закладке «Макеты». Только обеспечив соответствие структуры данных и структуры макета, мы получим корректный и читаемый документ.