Т.е. явно прорисовка элемента в клиенте и Web отличается. Каким-то образом клиент оптимизирует размер колонки, а WEB нет.
В обычном клиенте отрисовка производится средствами DirectX/OpenGL, которые позволяют использовать различные методы оптимизации. В web-клиенте отрисовка производится средствами браузера, никак не зависит от скада-системы и мы не можем на нее повлиять.
Но кнопка не всегда является элементом управления. Её часто используют как элемент навигации между страницами и окнами. Вызов того же отчета не является управлением.
Если у кнопки назначен скрипт на событие OnClick, то она потенциально может использоваться для управления. Определить, что в скрипте не производится запись в какую-либо переменную не представляется возможным. Для удобной настройки доступа к объектам имеется гибкая
система прав пользователей, которая позволяет настроить права и видимость необходимой информации для каждого пользователя. Можно использовать настройку прав пользователей для объектов, т.е. разрешить доступ к объектам нужным пользователям, а другим запретить, в этом случае объекты не будут скрываться от пользователя, но каждый пользователь будет иметь доступ только к разрешенным объектам(например не сможет нажать кнопку, к которой нет доступа).
Кстати, кнопка "Отчет" не работает - отчет не формируется.
Как указывается имя клиента в скрипте? Через
GetClientName или через указание имени конкретного клиента? Если через указание имени конкретного клиента, то для web-клиента задать имя невозможно. Web-клиент не является отдельным приложением и работает в браузере, поэтому он получает случайно сгенерированное имя. Чтобы получить это имя нужно использовать функцию GetClientName. Поэтому, для того чтобы отчет открывался с любого клиента, просто измените код скрипта вот так:
var
aReport: TM_Report;
begin
aReport := ReportBuild('Отчёт');
aReport.View(GetClientName);
end.