Пропали шапки и подвалы табличных частей документов в 1С: разбираемся в причинах и ищем решение

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Довольно часто системные администраторы и разработчики 1С сталкиваются с ситуацией, когда после планового обновления платформы 1С:Предприятие в старых базах (например, работающих на базе конфигурации «Бухгалтерия предприятия» редакции 1.6 или «Управление торговлей» редакции 10.3) внезапно исчезают шапки и подвалы табличных частей документов. Бухгалтеры жалуются, что в документах пропала строка «Итого», а визуально таблицы выглядят «сжатыми». При этом в конфигураторе всё отображается корректно, настройки видимости и высоты шапки/подвала равны единице, но в режиме «1С:Предприятие» они полностью пропадают.

В этой статье мы подробно проанализируем, почему возникает данный графический сбой, и рассмотрим практические способы решения этой проблемы как на уровне настройки платформы, так и программными методами.

Почему возникает проблема: техническая суть сбоя

Выясним причину такого странного поведения интерфейса. Начиная с релизов платформы 8.3.10 и 8.3.11, разработчики компании 1С провели глобальное обновление технологической платформы. В частности, был осуществлен переход на новый компилятор стандарта C++14 и существенно переработан внутренний движок отрисовки интерфейса (так называемый рендеринг форм). Это обновление было нацелено на оптимизацию управляемых форм и веб-клиента.

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

Вариант 1. Запуск базы под управлением конкретной (старой) версии платформы

Посмотрим на самое очевидное и быстрое решение, которое не требует внесения изменений в метаданные конфигурации. Если на сервере или локальном компьютере установлены несколько версий платформы 1С, мы можем жестко указать, под какой именно версией должна запускаться наша старая информационная база.

Разберем этот процесс по шагам:

  1. Запустите окно выбора информационных баз (стартер 1cestart).
  2. Выберите в списке вашу проблемную базу и нажмите кнопку «Изменить».
  3. В открывшемся окне настроек перейдите на последнюю вкладку параметров запуска.
  4. Найдите поле «Версия платформы».
  5. Вместо пустого значения или значения по умолчанию укажите конкретный старый релиз платформы, в котором баг отрисовки отсутствует (например, 8.3.8.2442 или просто маску версии 8.3.8).
  6. Нажмите кнопку «Готово» и запустите базу.

Если база расположена на SQL-сервере, а другие конфигурации (например, современные версии на управляемых формах) требуют актуального релиза платформы (например, 8.3.13 или выше), системный администратор может развернуть параллельную службу сервера 1С на альтернативных сетевых портах (например, с портами 2540 и 2541 вместо стандартных 1540 и 1541). Перенос старой базы на этот соседний кластер под управлением старой платформы полностью решит проблему без вреда для других современных баз.

Вариант 2. Изменение режима совместимости конфигурации в Конфигураторе

Рассмотрим метод, позволяющий заставить новый движок рендеринга платформы корректно обрабатывать старые элементы форм. Для этого нам понадобится изменить свойства совместимости самой конфигурации.

Выполним следующие действия:

  1. Откройте конфигурацию проблемной информационной базы в режиме «Конфигуратор».
  2. Откройте дерево метаданных и выделите корневой элемент (самую верхнюю строчку с именем вашей конфигурации).
  3. Нажмите правую кнопку мыши и выберите пункт «Свойства».
  4. В открывшейся панели свойств найдите раздел «Совместимость» и свойство «Режим совместимости». Чаще всего в старых конфигурациях там установлено значение Версия 8.1.
  5. Попробуйте изменить это значение на более высокое, например, Версия 8.2.13, Версия 8.2.16 или установите значение Не использовать.
  6. Выполните сохранение и обновление конфигурации базы данных.

Важное предупреждение: отключение режима совместимости или его повышение может повлечь за собой изменение логики работы некоторых механизмов платформы. Могут «вылезти» синтаксические ошибки в старых запросах (например, при использовании конструкции РАЗЛИЧНЫЕ вместе с упорядочиванием по полям, отсутствующим в выборке), а также измениться поведение транзакционных блокировок. Обязательно проводите эту операцию на копии базы и тщательно протестируйте ключевой функционал!

Вариант 3. Программная инициализация свойств табличной части при открытии формы

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

Для реализации этого метода откроем модуль формы проблемного документа и перейдем к обработчику события ПриОткрытии. Добавим туда следующий код:


Процедура ПриОткрытии()

    // Принудительно устанавливаем видимость подвала табличной части
    ЭлементыФормы.Товары.Подвал = Истина;
    
    // Переопределяем отображение итогов для числовых колонок
    ЭлементыФормы.Товары.Колонки.Сумма.ОтображатьИтогиВПодвале = Истина;
    ЭлементыФормы.Товары.Колонки.Количество.ОтображатьИтогиВПодвале = Истина;

КонецПроцедуры

В данном примере мы явно указываем платформе перерисовать свойства объекта ЭлементыФормы для табличной части с именем Товары и колонок Сумма и Количество. Такая принудительная инициализация свойств во время события ПриОткрытии часто заставляет новое графическое ядро корректно рассчитать размеры элементов формы, возвращая шапки и подвалы на свои места.

Вариант 4. Настройка параметров DPI и масштабирования в Windows

Выясним еще одну неочевидную причину сбоя. Новые версии платформы 1С:Предприятие 8.3 стали крайне чувствительны к системным настройкам масштабирования дисплея в операционной системе Windows (особенно на мониторах с высоким разрешением, где пользователи выставляют масштаб 125% или 150%). Обычные формы отрисовываются с использованием устаревших системных библиотек GDI, которые плохо адаптируются к современным алгоритмам масштабирования High DPI.

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

  1. Найдите ярлык, через который запускается 1С (или исполняемый файл 1cv8.exe в папке установки платформы).
  2. Нажмите на него правой кнопкой мыши и выберите пункт «Свойства».
  3. Перейдите на вкладку «Совместимость».
  4. Нажмите кнопку «Изменить параметры высокого DPI».
  5. Установите флажок напротив пункта «Переопределите режим масштабирования высокого разрешения».
  6. В выпадающем списке «Масштабирование выполняется:» выберите вариант «Приложение» или «Система».
  7. Нажмите кнопку «ОК» для сохранения настроек и перезапустите 1С.

Это принудительно отключит размытие элементов и поможет вернуть корректный рендеринг табличных полей обычных форм.

Вариант 5. Очистка кэша пользовательских настроек интерфейса

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

Чтобы сбросить эти настройки к стандартным (заданным разработчиком в конфигураторе), выполним очистку:

  1. Закройте все запущенные сеансы программы 1С.
  2. Перейдите по пути в проводнике Windows: %userprofile%\AppData\Roaming\1C\1cv8\ (или аналогичный каталог локального кэша Local).
  3. Найдите папку с уникальным идентификатором вашей информационной базы.
  4. Внутри этой папки найдите файл с именем 1cv8cmn.pfl.
  5. Удалите этот файл или переименуйте его (например, в 1cv8cmn.pfl.bak).

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

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

← На главную