Переход на новые релизы платформы «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С» провели масштабную оптимизацию и модернизацию внутреннего ядра отрисовки интерфейса под управляемые формы и новые веб-стандарты.
Поскольку обычные формы признаны устаревшими, их совместимость с обновленным кодом рендеринга тестировалась менее тщательно. В результате возник платформенный баг: при определенных режимах совместимости конфигурации графический движок новой платформы некорректно обрабатывает свойства табличного поля (объекта ТабличноеПоле), отвечающие за вывод элементов интерфейса. Физически колонки таблицы остаются на месте, данные в них доступны, но элементы разметки (заголовки и подвалы) визуально скрываются.
Рассмотрим по шагам все варианты исправления этой ошибки, начиная от простых манипуляций в Конфигураторе и заканчивая администрированием серверов.
Самый быстрый способ вернуть заголовки колонок, который можно выполнить непосредственно в конфигурации базы данных — это корректировка режима совместимости. Как показывает практика, баг отрисовки напрямую зависит от того, какой режим совместимости установлен в свойствах дерева конфигурации.
Выполним следующие действия для изменения настроек:
Версия 8.1 или Не использовать, это может приводить к сбоям отрисовки интерфейса на платформе 8.3.13.Важное предупреждение: Изменение режима совместимости в работающей базе данных может повлечь за собой изменение логики выполнения некоторых участков кода. Например, могут измениться правила проведения документов, механизмы работы запросов или работы с файловой системой. После изменения режима совместимости обязательно запустите детальное тестирование базы данных на копии!
Если при изменении режима совместимости система начинает выдавать ошибки на старый код, нам придется отказаться от этого метода и воспользоваться альтернативными путями решения проблемы.
Поскольку данная проблема официально признана технологическим дефектом платформы «1С:Предприятие», разработчики оперативно выпустили исправления в последующих релизах. Если вы столкнулись с этим багом на релизе 8.3.13.1513, самым надежным и правильным решением будет обновление платформы на более стабильную сборку.
Ошибки отрисовки табличных полей обычных форм были устранены в:
8.3.13 (например, начиная с 8.3.13.1644 и выше).8.3.14, 8.3.15 и последующих современных версиях платформы 1С.Если у вас есть возможность обновить платформу на сервере и у пользователей, обязательно сделайте это. Это решит проблему раз и навсегда без необходимости переписывать код или менять режим совместимости конфигурации.
Часто возникает ситуация, когда обновить платформу для всех баз невозможно. Например, база «Бухгалтерия предприятия 3.0» требует исключительно новую платформу (например, 8.3.13+), а старая «Управление торговлей 10.3» стабильно работает только на платформе версии 8.2 или ранних релизах 8.3 (например, 8.3.8), где багов с обычными формами еще не было.
В этом случае мы можем развернуть две параллельные службы сервера «1С:Предприятие» на одном физическом компьютере. Рассмотрим, как это сделать:
По умолчанию сервер 1С использует сетевые порты 1540 (главный порт агента), 1541 (менеджер кластера) и диапазон портов 1560-1591 для рабочих процессов. Чтобы запустить вторую службу параллельно, нам нужно назначить ей другие порты.
Разберем процесс регистрации второй службы на примере операционной системы Windows:
8.2.19.130 или стабильную 8.3.8.2137) на сервер. При установке снимем галочку автоматической регистрации службы, чтобы она не затерла существующую службу новой платформы.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 без каких-либо искажений интерфейса.
Иногда пропадание элементов интерфейса и заголовков связано не только с релизом платформы, но и с настройками операционной системы на конкретном клиентском компьютере. Системное масштабирование Windows (DPI), установленное в значение отличным от 100% (например, 125% или 150% на экранах с высоким разрешением), часто ломает верстку обычных форм в платформе 8.3.
Выясним, как принудительно заставить систему корректно отрисовывать масштабы:
C:\Program Files\1cv8\Common\1cestart.exe (или конкретный исполняемый файл релиза 1cv8.exe в папке bin нужной версии).Этот простой метод во многих случаях решает проблему «залипания» элементов управления и возвращает корректную отрисовку шапок таблиц на обычных формах.
Иногда разработчики сталкиваются с ситуацией, когда на одном компьютере заголовки у конкретного пользователя пропали, а у другого под той же платформой отображаются нормально. Полная очистка кэша конфигурации (удаление папок в каталогах %LocalAppData%\1C и %AppData%\1C) — процедура долгая и сбрасывающая все настройки подключения к базам.
Существует способ точечно очистить сохраненные настройки отрисовки конкретных окон для конкретного пользователя, не затрагивая общий кэш:
%APPDATA%\1C\1Cv8\<Уникальный_Идентификатор_Базы>1cv8cmn.pfl. Именно в этом файле платформа хранит персональные настройки интерфейса пользователя (размеры окон, положение колонок табличных частей, их видимость и т.д.).1cv8cmn_old.pfl для резервной копии).Проанализировав все описанные методы, мы можем сделать вывод, что наиболее надежным и долгосрочным решением проблемы является обновление платформы до исправленных версий. Если это невозможно по административным причинам, используйте изменение режима совместимости конфигурации до версии 8.2.13 или разделение запуска служб сервера 1С на разные порты.