Как настроить печать ТОРГ-12 на одном листе в 1С?

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

Стандартная печатная форма товарной накладной ТОРГ-12 в программах 1С часто не помещается на один лист, даже если в ней всего 10-15 строк. Это приводит к лишнему расходу бумаги и неудобствам при работе с документами. Проблема заключается в том, что стандартный макет и алгоритм печати рассчитаны на определенное количество строк и при превышении этого лимита автоматически вставляют разрыв страницы.

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

Способ 1: Пользовательские настройки без изменения конфигурации

Эти методы доступны любому пользователю и не требуют специальных прав или доступа к режиму «Конфигуратор». Они идеально подходят для разовых корректировок.

Вариант А: Удаление принудительных разрывов страницы

Иногда макет может содержать принудительно установленные разрывы страниц. Их можно убрать непосредственно перед печатью. Разберем по шагам:

  1. Сформируйте печатную форму ТОРГ-12.
  2. В открывшемся окне табличного документа нажмите кнопку «Еще» (или иконку с тремя точками) и выберите пункт «Изменить макет...». Документ перейдет в режим редактирования.
  3. Снова нажмите «Еще» и выберите «Настройка печати».
  4. В открывшемся окне найдите опцию, связанную с разрывами страниц (например, «Удалить разрыв страницы») и активируйте ее.
  5. После этого отправьте документ на печать.

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

Вариант Б: Экспорт в Excel

Это самый простой и универсальный обходной путь. Если нужно быстро уместить документ на один лист, не вникая в настройки 1С, выполните следующие действия:

  1. Сформируйте ТОРГ-12 в 1С.
  2. Сохраните печатную форму в файл формата Excel (XLS/XLSX).
  3. Откройте сохраненный файл в Microsoft Excel или другом табличном редакторе.
  4. Перейдите в меню «Файл» -> «Печать» (или «Параметры страницы»).
  5. В настройках масштабирования выберите опцию «Вписать лист на одну страницу».

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

Способ 2: Редактирование макета в Конфигураторе

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

Пошаговая инструкция:

  1. Откройте конфигурацию в режиме «Конфигуратор».
  2. В дереве метаданных найдите документ, для которого формируется ТОРГ-12 (например, РеализацияТоваровУслуг).
  3. Разверните ветку документа и перейдите в раздел «Макеты». Найдите макет с названием ТОРГ12.
  4. Откройте макет двойным кликом. Вы увидите его структуру, похожую на таблицу Excel.
  5. Что можно изменить для экономии места:
    • Удалить пустые строки. Часто в макетах есть пустые строки-разделители для визуальной красоты. Например, как было предложено на форуме, можно попробовать удалить строку под номером 27, если она является разделителем.
    • Уменьшить высоту строк. Выделите строки в шапке, подвале или табличной части и вручную уменьшите их высоту. Даже несколько сэкономленных миллиметров на каждой строке могут дать нужный эффект.
    • Изменить ориентацию страницы. Как ни странно, для некоторых макетов смена ориентации с альбомной на книжную (Файл -> Параметры страницы) позволяет вместить больше строк по вертикали за счет более компактного расположения колонок.
  6. После внесения изменений сохраните конфигурацию и обновите базу данных (клавиша F7).

Важно: всегда делайте резервную копию перед внесением изменений в конфигурацию. Стандартные макеты можно вернуть к исходному состоянию через меню Действия -> Установить стандартные настройки в окне макета.

Способ 3: Программная доработка печатной формы

Это наиболее гибкий и правильный с точки зрения разработки метод. Он позволяет не просто "ужать" макет, а научить программу автоматически подбирать масштаб, если содержимое не помещается на страницу. Основная работа ведется в модуле объекта или модуле менеджера документа.

Анализ стандартного механизма печати

Давайте разберемся, почему 1С переносит строки. В коде формирования печатной формы используется метод ПроверитьВывод(). Он проверяет, помещается ли указанный набор областей (например, очередная строка товара и подвал документа) на оставшееся место на текущей странице. Если нет — вставляется разделитель страницы.

Посмотрим на пример логики из типовой конфигурации (например, УТ 10.3):


...
// Проверяем, помещается ли следующая строка вместе с подвалами на странице
Если Ном <> 1 И НЕ ТабДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
    // Если не помещается, выводим итоги по странице
    ТабДокумент.Вывести(ОбластьИтоговПоСтранице);
    
    // Вставляем разделитель и выводим заголовок на новой странице
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    ОбластьЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
    ТабДокумент.Вывести(ОбластьЗаголовокТаблицы);
    ...
КонецЕсли;

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

Реализация автоматического масштаба

Самый правильный подход — создать внешнюю печатную форму. Это позволит не изменять основную конфигурацию и не потерять доработки при обновлении. Скопируйте стандартную процедуру печати ТОРГ-12 во внешнюю обработку и доработайте ее.

В конце процедуры, перед тем как показать или отправить на печать табличный документ (ТабДокумент), добавьте проверку и установку масштаба.

  1. Сначала установите свойство АвтоМасштаб в Ложь, чтобы мы могли проверить реальное размещение.
  2. Сформируйте весь документ в переменную ТабДокумент.
  3. После формирования проверьте, помещается ли он на одну страницу. Если нет — включите автомасштаб.

Пример кода:


Функция Печать() Экспорт

    // ... здесь идет весь стандартный код формирования ТабДокумент ...
    // Весь документ уже сформирован в переменной ТабДокумент
    
    // Устанавливаем принудительно, чтобы проверка сработала корректно
    ТабДокумент.АвтоМасштаб = Ложь;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; // или Портрет
    
    // Проверяем, помещается ли весь документ на одну страницу по высоте
    Если ТабДокумент.КоличествоСтраниц() > 1 Тогда
        // Если страниц больше одной, включаем автоматический подбор масштаба
        ТабДокумент.АвтоМасштаб = Истина;
    КонецЕсли;
    
    Возврат ТабДокумент;

КонецФункции

Свойство АвтоМасштаб = Истина пытается вписать содержимое по ширине страницы. Чтобы вписать и по высоте, иногда приходится дополнительно управлять свойством МасштабПечати, подбирая значение (например, 90, 85 и т.д.) в цикле до тех пор, пока КоличествоСтраниц() не станет равно 1.

Таким образом, мы рассмотрели несколько подходов к решению одной задачи. Выбор зависит от ваших целей: для быстрой разовой печати подойдет экспорт в Excel, для постоянного решения для всех пользователей — доработка макета или создание внешней печатной формы с программным масштабированием.

← На главную