Почему меняется масштаб отчета на СКД при смене языка интерфейса и как это исправить

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

При работе с отчетами на базе системы компоновки данных (СКД) разработчики иногда сталкиваются с нетипичным behavior: при запуске сеанса под иностранным языком (например, под французским интерфейсом с параметром запуска /L fr) визуальный размер шрифтов и ячеек отчета значительно увеличивается, хотя под русскоязычным интерфейсом тот же отчет отображается корректно. Рассмотрим подробнее, с чем связано такое поведение платформы 1С:Предприятие, как найти истинную причину проблемы и настроить отображение табличного документа.

Основные причины искажения масштаба и варианты решения

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

1. Ошибка программного вызова варианта отчета

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

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

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


ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("КлючВарианта", "Основной"); // Указываем точное имя варианта отчета
ОткрытьФорму("Отчет.МойОтчетСКД.Форма.ФормаОтчета", ПараметрыФормы);

2. Сохраненные системные настройки формы и интерактивный масштаб

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

Сбросить такой масштаб можно следующим образом:

  1. Открыть сформированный отчет в режиме «1С:Предприятие».
  2. Активировать поле табличного документа.
  3. Используя комбинацию клавиши Ctrl и вращение колеса мыши, вернуть масштаб к стандартному значению (100%).
  4. При необходимости очистить сохраненные настройки формы для данного пользователя через стандартный механизм очистки пользовательских настроек.

Управление масштабом и оформлением отчета на уровне СКД

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

Программная фиксация свойства АвтоМасштаб

Чтобы отчет автоматически подгонялся под ширину страницы и сохранял читаемый масштаб ячеек, в модуле объекта отчета (в процедуре ПриКомпоновкеРезультата) или в модуле формы можно принудительно задать свойство АвтоМасштаб для итогового табличного документа:


Процедура ПриКомпоновкеРезультата(ИнициализаторМакета, ДанныеРасшифровки, ВыводЗапрещен)
	
	Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
	
	ДокументРезультат = Новый ТабличныйДокумент;
	ДокументРезультат.АвтоМасштаб = Истина; // Гарантирует корректное вписывание отчета
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
КонецПроцедуры

Настройка параметров шрифта и ширины колонок

Тексты на иностранных языках (в частности, на французском) часто длиннее русскоязычных аналогов. Если ширина колонок не зафиксирована, табличный документ растягивается по горизонтали, что при определенных настройках High DPI операционной системы может вызывать визуальные искажения шрифта.

Для предотвращения разрастания таблицы выделите ключевые поля в условном оформлении СКД или в макете и задайте следующие параметры:

  1. Явно укажите шрифт (например, Arial, 8pt) вместо значения Авто.
  2. Установите свойство ячейки РазмещениеТекста в значение Переносить.
  3. Задайте фиксированную или минимальную ширину колонок в настройках оформления элементов СКД.

Таким образом, при возникновении проблем с масштабом отчета под иноязычным интерфейсом в первую очередь необходимо проверить правильность программного вызова вариантов отчета, сбросить сохраненные пользовательские настройки формы и убедиться в корректной настройке свойств АвтоМасштаб и условного оформления табличного документа.

← На главную