Пропали заголовки табличных частей при переходе на новую платформу 1С: как вернуть отображение шапки в обычных формах?

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

Переход на новые релизы платформы «1С:Предприятие 8.3» — это необходимый шаг для обеспечения совместимости с современными конфигурациями (например, «Бухгалтерия предприятия, редакция 3.0» или «Зарплата и управление персоналом, редакция 3.1»). Однако этот процесс нередко преподносит неприятные сюрпризы для пользователей и разработчиков, работающих со старыми, но по-прежнему популярными конфигурациями на «обычных формах» (такими как «Управление торговлей, редакция 10.3», «Управление производственным предприятием, редакция 1.3» или самописные решения).

Типичным проявлением проблем совместимости в релизах линейки 8.3.13 (в частности, 8.3.13.1513) является внезапное исчезновение заголовков (шапок) и подвалов (строк «Итого») у табличных частей в документах, справочниках и обработках. В интерфейсе программы эти области просто перестают отрисовываться, превращаясь в пустые или схлопнутые серые полосы. При этом в Конфигураторе свойства отображения настроены корректно.

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

Выясняем причину: почему пропадают заголовки в обычных формах?

Для того чтобы понять, как бороться с проблемой, проанализируем внутренние механизмы платформы. Обычные формы используют устаревший графический движок отрисовки интерфейса Windows (Win32 API). Начиная с версии платформы 8.3.10 и особенно активно в ветке 8.3.13, разработчики фирмы «1С» провели масштабную оптимизацию и модернизацию внутреннего ядра отрисовки интерфейса под управляемые формы и новые веб-стандарты.

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

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


Метод 1. Изменение режима совместимости конфигурации

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

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

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

Важное предупреждение: Изменение режима совместимости в работающей базе данных может повлечь за собой изменение логики выполнения некоторых участков кода. Например, могут измениться правила проведения документов, механизмы работы запросов или работы с файловой системой. После изменения режима совместимости обязательно запустите детальное тестирование базы данных на копии!

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


Метод 2. Официальное исправление проблемы (Обновление платформы)

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

Ошибки отрисовки табличных полей обычных форм были устранены в:

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


Метод 3. Разделение версий платформ на одном сервере (Запуск на разных портах)

Часто возникает ситуация, когда обновить платформу для всех баз невозможно. Например, база «Бухгалтерия предприятия 3.0» требует исключительно новую платформу (например, 8.3.13+), а старая «Управление торговлей 10.3» стабильно работает только на платформе версии 8.2 или ранних релизах 8.3 (например, 8.3.8), где багов с обычными формами еще не было.

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

По умолчанию сервер 1С использует сетевые порты 1540 (главный порт агента), 1541 (менеджер кластера) и диапазон портов 1560-1591 для рабочих процессов. Чтобы запустить вторую службу параллельно, нам нужно назначить ей другие порты.

Разберем процесс регистрации второй службы на примере операционной системы Windows:

  1. Установим нужную старую версию платформы (например, 8.2.19.130 или стабильную 8.3.8.2137) на сервер. При установке снимем галочку автоматической регистрации службы, чтобы она не затерла существующую службу новой платформы.
  2. Откроем командную строку от имени Администратора.
  3. Зарегистрируем новую службу с помощью утилиты sc.exe, указав свободные порты (например, сместим их на 100 единиц вперед: агент — 1640, кластер — 1641, рабочие процессы — 1660:1691).

Пример команды для регистрации службы платформы 8.2 на альтернативных портах:


sc create "1C:Enterprise 8.2 Server" binpath= "\"C:\Program Files\1cv82\8.2.19.130\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\srvinfo_8.2\"" start= auto displayname= "1C:Enterprise 8.2 Server (Alternative Ports)"

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

ИмяСервера:1641

Таким образом, база БП 3.0 продолжит работать на штатной новой платформе 8.3.13+, а база УТ 10.3 будет функционировать в «родной» стабильной среде 8.2 без каких-либо искажений интерфейса.


Метод 4. Настройка совместимости масштабирования (DPI) в Windows

Иногда пропадание элементов интерфейса и заголовков связано не только с релизом платформы, но и с настройками операционной системы на конкретном клиентском компьютере. Системное масштабирование Windows (DPI), установленное в значение отличным от 100% (например, 125% или 150% на экранах с высоким разрешением), часто ломает верстку обычных форм в платформе 8.3.

Выясним, как принудительно заставить систему корректно отрисовывать масштабы:

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

Этот простой метод во многих случаях решает проблему «залипания» элементов управления и возвращает корректную отрисовку шапок таблиц на обычных формах.


Метод 5. Точечная очистка пользовательских настроек окон и форм

Иногда разработчики сталкиваются с ситуацией, когда на одном компьютере заголовки у конкретного пользователя пропали, а у другого под той же платформой отображаются нормально. Полная очистка кэша конфигурации (удаление папок в каталогах %LocalAppData%\1C и %AppData%\1C) — процедура долгая и сбрасывающая все настройки подключения к базам.

Существует способ точечно очистить сохраненные настройки отрисовки конкретных окон для конкретного пользователя, не затрагивая общий кэш:

  1. Закроем программу «1С:Предприятие».
  2. Перейдем в каталог профиля пользователя по следующему пути:
    %APPDATA%\1C\1Cv8\<Уникальный_Идентификатор_Базы>
  3. Найдем в этой папке файл с именем 1cv8cmn.pfl. Именно в этом файле платформа хранит персональные настройки интерфейса пользователя (размеры окон, положение колонок табличных частей, их видимость и т.д.).
  4. Удалим этот файл (или переименуем его, например, в 1cv8cmn_old.pfl для резервной копии).
  5. Запустим 1С заново. При этом настройки положения колонок сбросятся к значениям по умолчанию, что в ряде случаев восстанавливает видимость исчезнувших заголовков.

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

← На главную