Переход на новую версию платформы 1С, особенно если это касается такой значимой версии, как 8.3.20, часто сопровождается изменением поведения механизмов Системы Компоновки Данных (СКД). Если после обновления ваши бухгалтерские отчеты перестали выводить данные или отображают некорректную информацию, не паникуйте. Давайте разберем, с чем это может быть связано и как вернуть отчеты в рабочее состояние.
Одной из наиболее частых причин внезапной неработоспособности отчетов в новых версиях платформы стало появление новой логики обработки группировок. Если вы обнаружили, что отчет стал «пустым», первым делом проверьте настройки в схеме компоновки данных.
Автоматические группировки и Использовать группировки запроса если возможно.Многие разработчики отмечают, что принудительное отключение этих галочек мгновенно восстанавливает корректную работу отчетов, которые ранее были основаны на типовых бухгалтерских механизмах.
Если настройка параметров СКД не помогла, причиной может быть рассинхронизация итогов в регистрах накопления или бухгалтерии. После обновления платформы иногда требуется актуализация данных на физическом уровне.
Выполните принудительный пересчет итогов через Администрирование -> Тестирование и исправление. Установите флаг Пересчет итогов. Эта процедура помогает устранить ситуации, когда отчеты показывают «бред» или пустые значения из-за того, что механизм оптимизации запросов 8.3.20 иначе интерпретирует старые записи итогов.
Если в вашем коде используется ручное управление выводом отчета или глубокая модификация макета, вы можете столкнуться с ошибкой типизации. В 8.3.20 платформа стала более строго относиться к структуре объекта МакетКомпоновки.
Рассмотрим ситуацию, когда в коде встречается обращение через индексы:
// В старых версиях это работало, теперь может вызывать ошибку:
Колонки = МакетКомпоновки.Тело[0].Колонки;
Причина в том, что тип тела компоновки мог измениться, и индекс [0] больше не указывает на ожидаемый объект. Рекомендация: полностью пересмотрите алгоритмы, которые используют прямые индексы. Старайтесь использовать обход коллекции или специализированные методы СКД, которые менее чувствительны к внутренней структуре макета.
Если ваш отчет использует динамические списки или программную передачу параметров, обратите внимание на изменение типов данных. В частности, это касается параметров, которые ранее принимали Массив, а теперь требуют СписокЗначений.
Пример проблемного участка в обработчике ПриПолученииДанных:
// Ошибка возникает, так как СКД ожидает СписокЗначений, а не Массив
ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("МойПараметр");
ПараметрДанных.Значение = Новый Массив; // Исправьте на СписокЗначений
Если вы передаете данные программно, обязательно приводите их к типу, который ожидает современная СКД. Проверьте все места, где происходит установка параметров, так как несоответствие типов приведет к тому, что фильтрация просто перестанет работать, и отчет будет выдавать все данные подряд или не выдаст ничего.
КомпоновкиДанных.Работая вместе над исправлением, помните: платформа 8.3.20 требует более «чистого» кода. Отказ от жестких привязок к индексам и внимательное отношение к типам параметров — залог стабильной работы ваших бухгалтерских отчетов в будущем.