При переходе между режимами совместимости платформы 1С:Предприятие, особенно при перешагивании через «порог» версии 8.2.13, разработчики часто сталкиваются с ситуацией, когда отчеты, годами работавшие корректно, внезапно перестают выводить данные или отображают только общие итоги без детализации. Рассмотрим подробнее, почему это происходит и какие шаги необходимо предпринять для восстановления работоспособности системы.
Переход с режима совместимости 8.2.13 на 8.2.16 и выше (вплоть до 8.3.1) — это не просто формальное изменение цифр в свойствах конфигурации. В версиях платформы 8.2.14 и 8.2.15 произошли фундаментальные изменения в ядре системы, отвечающем за взаимодействие с СУБД и расчет виртуальных таблиц. Проанализируем основные факторы влияния:
ОстаткиИОбороты. Если в запросе или настройках СКД период задан неявно, данные на «стыке» секунд могут перестать попадать в выборку.8.2.14, оптимизатор запросов иначе обрабатывает значения NULL. Если в отчете используется левое соединение виртуальной таблицы с другими данными, и условие соединения попадает на пустые значения, результат запроса может стать полностью пустым, хотя в старом режиме платформа «прощала» такие неточности.Первым и самым важным действием после изменения режима совместимости является запуск процедуры тестирования и исправления. Это необходимо для того, чтобы платформа физически перестроила таблицы базы данных под новые стандарты. Разберем, как это сделать правильно:
Запустите конфигуратор и перейдите в меню Администрирование — Тестирование и исправление. В появившемся окне выберите следующие пункты:
Важно: Процедура реструктуризации может занять длительное время, особенно на больших базах. Перед выполнением обязательно создайте архивную копию!
Если после реструктуризации отчеты по-прежнему выдают только «шапку» и итоги без строк, проблема, скорее всего, кроется в неактуальности таблиц итогов регистров накопления. Проанализируем ситуацию: отчет обращается к виртуальной таблице ОстаткиИОбороты, которая строится на основе итогов. Если итоги не соответствуют движениям, результат будет непредсказуемым.
Выполним полный пересчет итогов:
ОстаткиТоваровНаСкладах), установите период рассчитанных итогов на текущую дату и нажмите «Установить основной режим».Смена режима совместимости — это глобальное изменение метаданных. Иногда платформа продолжает использовать старые скомпилированные запросы или старые определения структур таблиц из кэша. Выясним, как полностью очистить систему от «хвостов» старой версии.
Для клиентского кэша удалите базу из списка и добавьте её заново, либо вручную удалите содержимое папок:
%AppData%\1C\1Cv8\ и %LocalAppData%\1C\1Cv8\
Для серверного кэша (если используется клиент-серверный вариант) необходимо:
C:\Program Files\1cv8\srvinfo\reg_1541).snccntx и прочие временные файлы, кроме файлов журналов и настроек базы.Если технические регламенты не помогли, нам необходимо проверить сам текст запроса в новом режиме совместимости. Рассмотрим ситуацию на примере отчета по остаткам. Возьмем типичный запрос:
ВЫБРАТЬ
ОстаткиТоваровОстаткиИОбороты.Номенклатура,
ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток,
ОстаткиТоваровОстаткиИОбороты.КоличествоПриход,
ОстаткиТоваровОстаткиИОбороты.КоличествоРасход,
ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ОстаткиТоваровНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , ) КАК ОстаткиТоваровОстаткиИОбороты
Проанализируем возможные проблемы в этом коде:
&НачалоПериода и &КонецПериода. В новых версиях рекомендуется использовать объект Граница, чтобы точно включать документы на границе секунды.ЛЕВОЕ СОЕДИНЕНИЕ, обязательно используйте функцию ЕСТЬNULL(Поле, 0). В режиме 8.3.1 это становится критичным для корректной работы математических операций в итогах.Поскольку ваша конфигурация использует Обычные формы, отчеты могут быть построены на старом механизме ПостроительОтчета. Посмотрим на нюансы этого механизма. В режиме совместимости 8.3.1 ПостроительОтчета может иначе интерпретировать визуальные настройки (размещение элементов на форме).
Если данные в запросе есть (вы проверили это в Консоли запросов), но на форме таблица пустая — проверьте Привязки элементов управления. Иногда из-за изменения движка отрисовки в 8.3 табличное поле просто «схлопывается» или уходит за границы видимости. Попробуйте нажать правой кнопкой мыши на форме в конфигураторе и выбрать «Установить автоматические привязки».
Восстановление работы отчетов после повышения режима совместимости требует комплексного подхода. Мы рекомендуем начать с самого простого и действенного метода — реструктуризации таблиц через ТиИ и полного пересчета итогов. В 90% случаев это решает проблему «исчезнувших» данных. Если же проблема остается, следует внимательно изучить запросы на предмет работы с типами NULL и границами периодов в виртуальных таблицах.