Как в макете 1С 7.7 установить размер шрифта более 100 пунктов для печати этикеток

Программист 1С v7.7 Торговля и дистрибуция
← На главную

В платформе 1С:Предприятие 7.7 разработчики часто сталкиваются с досадным ограничением: встроенный редактор таблиц не позволяет установить размер шрифта более 100 пунктов. Если ваша задача — напечатать крупные складские этикетки, логистические указатели или ценники, где требуется шрифт размером 120, 150 или выше, стандартные средства макета могут подвести. Однако существуют проверенные временем методы обхода этого лимита. Проанализируем их подробно.

Метод 1. Использование масштабирования страницы (Zoom)

Это самый простой способ, не требующий установки дополнительных библиотек. Мы можем обмануть принтер, задав меньший шрифт в макете, но увеличив масштаб вывода на печать. Рассмотрим, как это работает на практике.

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


Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Макет");
// Заполняем секции
Таб.ВывестиСекцию("Этикетка");
// Устанавливаем масштаб 200% (второй параметр метода ПараметрыСтраницы)
// Синтаксис: ПараметрыСтраницы(Ориентация, Масштаб, ФлагЧБ, Поля...)
Таб.ПараметрыСтраницы(1, 200, 0, 5, 5, 5, 5, 0, 0);
Таб.Показать();

Важный нюанс: при увеличении масштаба все элементы макета (рамки, отступы, картинки) увеличатся пропорционально. Поэтому макет следует рисовать "в миниатюре", заранее рассчитывая, как он растянется на лист А4 или ленту принтера этикеток. Если текст начинает "вылетать" за границы ячеек, в свойствах ячейки следует выбрать опцию "Забивать" или "Авто" вместо "Переносить".

Метод 2. Групповая печать через Microsoft Word (OLE)

Если клиенты настаивают на использовании Word, возникает вопрос: как вывести 100 этикеток в один файл, а не открывать 100 отдельных окон? Для этого мы будем использовать COM-соединение и программное управление объектами Word. Разберем по шагам алгоритм создания единого документа.

Основная идея заключается в том, чтобы создать один объект Word.Application, открыть в нем документ и в цикле добавлять данные, вставляя разрыв страницы после каждой этикетки. Посмотрим на пример кода:


Попытка
    Ворд = СоздатьОбъект("Word.Application");
Исключение
    Предупреждение("Microsoft Word не установлен!");
    Возврат;
КонецПопытки;

Док = Ворд.Documents.Add(); // Создаем новый пустой документ
Выборка = СоздатьОбъект("Справочник.Номенклатура");
// Допустим, мы печатаем товары из определенной группы
Выборка.ВыбратьЭлементы();

Пока Выборка.ПолучитьЭлемент() = 1 Цикл
    // Работаем с текущей позицией курсора (Selection)
    Селекшн = Ворд.Selection;
    
    // Устанавливаем параметры шрифта (здесь ограничений в 100 нет!)
    Селекшн.Font.Size = 120;
    Селекшн.Font.Bold = 1;
    Селекшн.TypeText(Выборка.Наименование);
    
    // Вставляем разрыв страницы (константа wdPageBreak = 7)
    // Чтобы этикетки не слипались
    Селекшн.InsertBreak(7);
КонецЦикла;

Ворд.Visible = 1; // Показываем результат пользователю

Использование метода InsertBreak(7) позволяет объединить все данные в одном файле. Пользователю останется только нажать кнопку "Печать" один раз для всего пакета документов.

Метод 3. Внешняя компонента Yoksel (TableDoc)

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

Проанализируем преимущества этого подхода:

  1. Отсутствие лимитов: Вы можете программно установить Шрифт.Размер = 120, и Yoksel корректно это отобразит.
  2. Экспорт: Легкое сохранение в форматы PDF или Excel с сохранением идеального форматирования.
  3. Управление печатью: Более гибкая настройка параметров принтера.

Пример работы с Yoksel (после регистрации компоненты yoksel.dll):


// Создаем объект табличного документа Yoksel
ТабДок = СоздатьОбъект("ТабличныйДокумент");
// Загружаем макет или заполняем ячейки
Ячейка = ТабДок.Область(1, 1);
Ячейка.Текст = "КРУПНЫЙ ТЕКСТ";
// Устанавливаем размер шрифта напрямую
Ячейка.Шрифт.Размер = 120;
// Показываем в фирменном просмотре
ТабДок.Показать();

Метод 4. Автоматический подбор размера шрифта

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

Для этого в цикле проверяется ширина текста, и, если она превышает ширину области, размер шрифта уменьшается. В 1С 7.7 это можно реализовать через проверку количества символов или с использованием метода ШиринаТаблицы(). Рассмотрим логику:


// Примерная логика подбора
Размер = 120;
МаксСимволов = 15; // Эмпирически определенный предел для 120 шрифта
ДлинаНазвания = СтрДлина(НаименованиеТовара);

Если ДлинаНазвания > МаксСимволов Тогда
    // Пропорционально уменьшаем шрифт
    Размер = Цел(Размер * (МаксСимволов / ДлинаНазвания));
    // Ограничим снизу, чтобы не было слишком мелко
    Если Размер < 20 Тогда Размер = 20; КонецЕсли;
КонецЕсли;

Метод 5. Вставка текста как графического объекта

Если штатные шрифты все же не подходят, можно использовать вставку объектов Microsoft WordArt через OLE. Объекты WordArt внутри таблицы 1С воспринимаются как картинки. Вы можете растягивать их за "ручки" управления в макете до любого размера, и текст внутри будет масштабироваться автоматически, сохраняя высокую четкость при печати.

Для этого в макете выберите меню "Вставить объект" -> "Объект Microsoft WordArt". После создания объекта вы сможете программно обращаться к нему, если это необходимо, хотя чаще такие объекты используются в статических макетах, где меняется только масштаб всей страницы.

Выводы и рекомендации

Выяснив все технические возможности, подведем итог:

  1. Если нужно быстро и без кода — используйте Масштаб страницы (например, шрифт 60 и масштаб 200%).
  2. Если требуется идеальное качество и гибкость — устанавливайте компоненту Yoksel.
  3. Если важна группировка в один файл для Word — используйте OLE-автоматизацию с методом InsertBreak(7).
  4. Для предотвращения "вылета" текста всегда проверяйте длину строки и используйте либо автоподбор шрифта, либо свойство ячейки "Забивать".

Используя эти методы, вы сможете победить ограничения 1С 7.7 и обеспечить склад качественными и читабельными этикетками любого размера.

← На главную