Почему не работают отчеты после повышения режима совместимости с 8.2.13 до 8.3.1 и как это исправить

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

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

Анализ причин сбоя виртуальных таблиц

Переход с режима совместимости 8.2.13 на 8.2.16 и выше (вплоть до 8.3.1) — это не просто формальное изменение цифр в свойствах конфигурации. В версиях платформы 8.2.14 и 8.2.15 произошли фундаментальные изменения в ядре системы, отвечающем за взаимодействие с СУБД и расчет виртуальных таблиц. Проанализируем основные факторы влияния:

  1. Реструктуризация таблиц итогов: При изменении режима совместимости платформа меняет физическую структуру таблиц на уровне SQL. Если процедура реструктуризации не была доведена до конца или была выполнена некорректно, индексы и фактические данные в таблицах итогов могут разойтись.
  2. Изменение логики границ периодов: В новых режимах совместимости платформа стала строже обрабатывать границы периодов в виртуальных таблицах ОстаткиИОбороты. Если в запросе или настройках СКД период задан неявно, данные на «стыке» секунд могут перестать попадать в выборку.
  3. Строгая типизация при соединениях: Начиная с режима 8.2.14, оптимизатор запросов иначе обрабатывает значения NULL. Если в отчете используется левое соединение виртуальной таблицы с другими данными, и условие соединения попадает на пустые значения, результат запроса может стать полностью пустым, хотя в старом режиме платформа «прощала» такие неточности.
  4. Оптимизация СКД: Система компоновки данных в новых режимах агрессивнее удаляет «лишние» (по ее мнению) поля из запроса. Если логика вашего отчета завязана на программную обработку полей, которые не выбраны пользователем в списке «Выбранные поля», эти данные могут просто не дойти до этапа вывода.

Шаг 1. Полная реструктуризация информационной базы

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

Запустите конфигуратор и перейдите в меню Администрирование — Тестирование и исправление. В появившемся окне выберите следующие пункты:

Важно: Процедура реструктуризации может занять длительное время, особенно на больших базах. Перед выполнением обязательно создайте архивную копию!

Шаг 2. Управление итогами и пересчет

Если после реструктуризации отчеты по-прежнему выдают только «шапку» и итоги без строк, проблема, скорее всего, кроется в неактуальности таблиц итогов регистров накопления. Проанализируем ситуацию: отчет обращается к виртуальной таблице ОстаткиИОбороты, которая строится на основе итогов. Если итоги не соответствуют движениям, результат будет непредсказуемым.

Выполним полный пересчет итогов:

  1. Перейдите в режим «1С:Предприятие» под правами администратора.
  2. Откройте меню Все функции (или Функции для технического специалиста) — Стандартные — Управление итогами.
  3. Для регистров, используемых в проблемных отчетах (например, ОстаткиТоваровНаСкладах), установите период рассчитанных итогов на текущую дату и нажмите «Установить основной режим».
  4. Выполните полный пересчет итогов за весь период ведения учета.

Шаг 3. Очистка серверного и клиентского кэша

Смена режима совместимости — это глобальное изменение метаданных. Иногда платформа продолжает использовать старые скомпилированные запросы или старые определения структур таблиц из кэша. Выясним, как полностью очистить систему от «хвостов» старой версии.

Для клиентского кэша удалите базу из списка и добавьте её заново, либо вручную удалите содержимое папок:

%AppData%\1C\1Cv8\ и %LocalAppData%\1C\1Cv8\

Для серверного кэша (если используется клиент-серверный вариант) необходимо:

  1. Остановить службу 1C:Enterprise 8.3 Server Agent.
  2. Перейти в каталог с данными кластера (обычно это C:\Program Files\1cv8\srvinfo\reg_1541).
  3. Удалить все папки, названия которых начинаются на snccntx и прочие временные файлы, кроме файлов журналов и настроек базы.
  4. Запустить службу сервера.

Шаг 4. Проверка логики запросов в Консоли запросов

Если технические регламенты не помогли, нам необходимо проверить сам текст запроса в новом режиме совместимости. Рассмотрим ситуацию на примере отчета по остаткам. Возьмем типичный запрос:


ВЫБРАТЬ
    ОстаткиТоваровОстаткиИОбороты.Номенклатура,
    ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток,
    ОстаткиТоваровОстаткиИОбороты.КоличествоПриход,
    ОстаткиТоваровОстаткиИОбороты.КоличествоРасход,
    ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток
ИЗ
    РегистрНакопления.ОстаткиТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ОстаткиТоваровОстаткиИОбороты

Проанализируем возможные проблемы в этом коде:

Шаг 5. Особенности обычных форм и Построителя отчетов

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

Если данные в запросе есть (вы проверили это в Консоли запросов), но на форме таблица пустая — проверьте Привязки элементов управления. Иногда из-за изменения движка отрисовки в 8.3 табличное поле просто «схлопывается» или уходит за границы видимости. Попробуйте нажать правой кнопкой мыши на форме в конфигураторе и выбрать «Установить автоматические привязки».

Резюме

Восстановление работы отчетов после повышения режима совместимости требует комплексного подхода. Мы рекомендуем начать с самого простого и действенного метода — реструктуризации таблиц через ТиИ и полного пересчета итогов. В 90% случаев это решает проблему «исчезнувших» данных. Если же проблема остается, следует внимательно изучить запросы на предмет работы с типами NULL и границами периодов в виртуальных таблицах.

← На главную