Внешние печатные формы в 1С:Предприятие — это отдельные файлы (.ert или .epf), которые позволяют гибко настраивать вывод документов на печать без изменения основной конфигурации. Их редактирование требуется, когда стандартный макет не подходит под бизнес-процессы компании: нужно добавить логотип, изменить порядок полей, скорректировать шрифты или добавить дополнительные реквизиты. Однако работа с внешними формами имеет свои нюансы: от правильного открытия в конфигураторе до сохранения без потери связей с базой.

Эта статья поможет разобраться, как редактировать внешнюю печатную форму в 1С 8.3 и 1С 8.2, даже если вы не профессиональный программист. Мы рассмотрим пошаговый процесс — от поиска файла формы на диске до тестирования изменений в пользовательском режиме. Особое внимание уделим типичным ошибкам, которые приводят к потере данных или некорректному выводу документов. А для опытных пользователей приведём примеры кода для расширенной настройки.

1. Где хранятся внешние печатные формы в 1С

Прежде чем редактировать форму, её нужно найти. Внешние печатные формы могут храниться в трёх местах:

  • 📁 Каталог шаблонов базы данных — обычно это подпапка ExtForms или Templates в директории информационной базы. Путь можно узнать в конфигураторе через Файл → Открыть → Выбрать каталог ИБ.
  • 💾 Локальный компьютер пользователя — если форма была сохранена вручную, она может лежать в любой папке (часто на рабочем столе или в Документы).
  • ☁️ Сервер 1С — в файловом варианте работы или на веб-сервере (для клиент-серверных баз). Доступ требует прав администратора.

Чтобы точно определить расположение:

  1. Откройте 1С:Предприятие в режиме конфигуратора (Запуск → Конфигуратор).
  2. Перейдите в Файл → Открыть и выберите тип файлов Внешние печатные формы (.ert, .epf).
  3. Если форма прикреплена к документу, её путь можно увидеть в свойствах объекта метаданных (например, в справочнике Дополнительные отчёты и обработки).
💡

Если форма не находится, проверьте настройки прав доступа в Администрирование → Пользователи. Возможно, ваша учётная запись не имеет прав на просмотр внешних файлов.

Важно: в клиент-серверном варианте работы пути к формам могут отличаться от файлового. Например, в 1С:Управление торговлей 11 внешние формы часто хранятся в подкаталоге Ext\PrintForms на сервере. Уточните расположение у администратора базы, если не уверены.

2. Как открыть внешнюю печатную форму для редактирования

Для редактирования формы её нужно открыть в конфигураторе или в внешнем редакторе (например, в Notepad++ для простого текстового редактирования). Рассмотрим оба способа.

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

Это самый надёжный метод, так как конфигуратор проверяет синтаксис и предлагает подсказки:

  1. Запустите 1С:Предприятие в режиме конфигуратора.
  2. Выберите Файл → Открыть и укажите путь к файлу формы (.ert или .epf).
  3. Если форма прикреплена к базе, найдите её в дереве метаданных: Общие → Дополнительные отчёты и обработки.
  4. Дважды кликните на форму — откроется встроенный редактор.

Способ 2: Редактирование во внешнем редакторе

Подходит для быстрых правок (например, изменения текста или параметров макета). Используйте программы вроде Notepad++, Sublime Text или Visual Studio Code с плагином для синтаксиса :

  • 📄 Откройте файл .ert как текстовый документ.
  • 🔍 Найдите нужные разделы по ключевым словам (например, &НаСервере, Макет.Параметры).
  • ⚠️ Не изменяйте структуру модуля (например, порядок процедур) — это может привести к ошибкам при компиляции.
📊 Какой редактор вы используете для работы с 1С?
Встроенный конфигуратор
Notepad++
Visual Studio Code
Другой

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

3. Структура внешней печатной формы: что можно редактировать

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

Компонент Описание Что можно изменить
Модуль формы Содержит процедуры и функции на языке , отвечающие за логику формирования документа. Добавлять новые процедуры, изменять алгоритмы заполнения данных, корректировать условия вывода.
Макет Визуальная часть формы (таблицы, текстовые блоки, изображения). Хранится в формате .mxl или .xls. Изменять расположение полей, шрифты, цвета, добавлять логотипы, редактировать шапку/подвал.
Параметры Настройки, передаваемые форме при вызове (например, ДокументОбъект, Период). Добавлять новые параметры, изменять типы данных (например, с Строка на Число).
Реквизиты Дополнительные данные, используемые в форме (например, Логотип, Подпись). Добавлять новые реквизиты, изменять их свойства (видимость, доступность).

Наиболее частые правки касаются макета и модуля. Например:

  • 🖼️ В макете: добавление логотипа компании в шапку документа, изменение шрифта для сумм.
  • 📝 В модуле: корректировка процедуры ПриКомпоновкеРезультата для фильтрации строк таблицы.
Пример кода для добавления логотипа

// В процедуре "ПриКомпоновкеРезультата" макета:

Макет.Параметры.Вставить("Логотип", Новый Картинка(ПутьКФайлуЛоготипа));

Макет.Область("Шапка").Параметры.Логотип = Макет.Параметры.Логотип;

Внимание: если форма использует внешние данные (например, подгружает курсы валют из интернета), убедитесь, что после редактирования не нарушились связи с источниками. Например, изменение имени параметра ДатаКурса на ДатаАктуальности может привести к ошибке, если этот параметр используется в запросе к внешнему API.

4. Пошаговая инструкция по редактированию формы

Рассмотрим универсальный алгоритм редактирования на примере добавления нового реквизита в печатную форму Счёт на оплату.

Сделать резервную копию файла формы|Проверить права доступа к каталогу|Открыть форму в конфигураторе|Убедиться, что база не заблокирована другими пользователями-->

Шаг 1: Резервное копирование

Перед любыми изменениями сохраните оригинальную версию формы. Для этого:

  1. Скопируйте файл .ert в отдельную папку (например, Backup_ПечатныеФормы).
  2. Если форма прикреплена к базе, экспортируйте её через Файл → Сохранить как.

Шаг 2: Редактирование макета

Допустим, нужно добавить строку с условиями оплаты в нижнюю часть счёта:

  1. Откройте форму в конфигураторе и перейдите на вкладку Макеты.
  2. Выберите макет ПечатнаяФорма и нажмите Редактировать.
  3. Добавьте новую текстовую область внизу таблицы с данными. Задайте ей имя, например, УсловияОплаты.
  4. В свойствах области укажите источник данных — реквизит документа или статический текст.

Шаг 3: Изменение модуля

Теперь свяжем новую область с данными:

Процедура ПриКомпоновкеРезультата(ДокументОбъект, Результат)

// Добавляем условия оплаты из реквизита документа

Макет.Область("УсловияОплаты").Параметры.Текст = ДокументОбъект.УсловияОплаты;

КонецПроцедуры

Шаг 4: Тестирование

Проверьте изменения в пользовательском режиме:

  1. Откройте документ, для которого предназначена форма (например, Счёт на оплату).
  2. Нажмите Печать → Ваша форма.
  3. Убедитесь, что новые данные отображаются корректно.
💡

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

Если форма не открывается или выдаёт ошибку, проверьте:

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

5. Типичные ошибки и как их избежать

При редактировании внешних печатных форм пользователи часто сталкиваются с одними и теми же проблемами. Вот самые распространённые ошибки и способы их решения:

⚠️ Внимание: Если после редактирования форма перестала открываться, проверьте версию платформы . Формы, созданные в 1С 8.3.20, могут не работать в 8.3.15 из-за изменений в языке запросов.
Ошибка Причина Решение
Ошибка компиляции модуля Опечатка в коде, пропущенная запятая или точка с запятой. Проверьте синтаксис в конфигураторе (подсветятся красным ошибки). Используйте отладчик (F5).
Не найден макет "ПечатнаяФорма" Изменено имя макета в модуле, но не в файле формы. Убедитесь, что имена макетов совпадают в коде и в свойствах формы.
Данные не выводятся в печатной форме Неверно указан источник данных для области макета. Проверьте привязку параметров в процедуре ПриКомпоновкеРезультата.
Доступ запрещён при сохранении Недостаточно прав на запись в каталог формы. Запустите конфигуратор от имени администратора или измените права на папку.

Ещё одна частая проблема — исчезновение логотипа после редактирования. Это происходит, если:

  • 🖼️ Картинка была вставлена как внешний файл, а путь к ней изменился.
  • 🔄 Формат логотипа не поддерживается (используйте .png или .jpg).
  • 📁 Файл логотипа был перемещён или удалён.

Чтобы избежать потери логотипа, встраивайте его непосредственно в макет формы через конфигуратор (Вставить → Картинка → Из файла) и выбирайте опцию Хранить в макете.

6. Расширенные возможности: программное редактирование

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

Пример 1: Динамическое изменение шрифта

Допустим, нужно выделять просроченные счета красным цветом:

Процедура ПриКомпоновкеРезультата(ДокументОбъект, Результат)

Если ДокументОбъект.ДатаОплаты < ТекущаяДата() Тогда

Макет.Область("Сумма").Параметры.ЦветТекста = Новый Цвет(255, 0, 0); // Красный

КонецЕсли;

КонецПроцедуры

Пример 2: Добавление данных из справочника

Если в счёте нужно выводить контактное лицо клиента, которого нет в стандартных реквизитах:

Процедура ПриКомпоновкеРезультата(ДокументОбъект, Результат)

Контрагент = ДокументОбъект.Контрагент;

КонтактноеЛицо = Контрагент.КонтактноеЛицо.Наименование;

Макет.Область("Контакты").Параметры.Контакт = КонтактноеЛицо;

КонецПроцедуры

Для работы с внешними данными (например, курсами валют) можно использовать HTTP-запросы:

Функция ПолучитьКурсВалюты(Валюта, Дата)

URL = "https://api.exchangerate-api.com/v4/latest/" + Валюта;

HTTPСоединение = Новый HTTPСоединение(URL);

Ответ = HTTPСоединение.Получить();

Возврат JSON.Прочитать(Ответ.ПолучитьТекст()).rates.RUB; // Пример для рубля

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

⚠️ Внимание: При использовании внешних API убедитесь, что сервер имеет доступ в интернет, а в настройках платформы разрешены HTTP-запросы (Администрирование → Настройки программы → Прочие настройки).

Пример 3: Многостраничные формы

Если документ не помещается на один лист, настройте автоматический перенос:

Макет.Параметры.АвтоПереносСтраниц = Истина;

Макет.Область("Таблица").Параметры.ПереноситьНаСледующуюСтраницу = Истина;

Для сложных форм (например, с динамическим количеством строк) используйте вложенные таблицы и настройку МинимальнаяВысотаСтроки.

7. Сохранение и обновление формы в базе

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

Способ 1: Обновление через конфигуратор

Если форма хранится как внешний файл:

  1. Сохраните изменения в конфигураторе (Файл → Сохранить).
  2. Обновите форму в базе:
    • Откройте Дополнительные отчёты и обработки.
    • Найдите вашу форму и нажмите Обновить.
  • Очистите кэш (Сервис → Очистить кэш), если изменения не применяются.
  • Способ 2: Замена файла вручную

    Если форма подключена через путь к файлу:

    1. Закройте все сеансы , работающие с этой формой.
    2. Замените старый файл .ert на отредактированный.
    3. Перезапустите 1С:Предприятие.
    4. Важно: если форма используется в распределённой базе (например, с несколькими филиалами), обновление нужно провести на всех узлах. Для этого:

      • 📤 Экспортируйте форму в файл.
      • 📥 Импортируйте её на каждом сервере через Администрирование → Обмен данными.
      💡

      После обновления формы проверьте её работу в тестовом режиме (Сервис → Отладка → Тестирование и исправление). Это поможет выявить скрытые ошибки до использования в боевой базе.

      Если после обновления форма не отображается в списке печатных форм:

      • 🔄 Перезагрузите (иногда кэш не обновляется сразу).
      • 🔧 Проверьте привязку формы к документу в метаданных (Общие → Печатные формы).
      • 📌 Убедитесь, что имя файла формы совпадает с указанным в настройках.

      8. Оптимизация и ускорение печатных форм

      Если печатная форма работает медленно (например, при формировании большого счёта), используйте следующие приёмы оптимизации:

      • 🚀 Кэширование данных: Если форма часто использует одни и те же справочники (например, Номенклатура), загружайте их один раз в начале процедуры и используйте локальные переменные.
      • 📊 Оптимизация запросов: Избегайте вложенных циклов по большим таблицам. Используйте ОБЪЕДИНИТЬ вместо нескольких отдельных запросов.
      • 🖼️ Сжатие изображений: Логотипы и подписи в формате .png занимают меньше места, чем .bmp.
      • 📄 Ленивая загрузка: Если форма многостраничная, подгружайте данные для следующей страницы только при её формировании.

    Пример оптимизированного кода для загрузки номенклатуры:

    Процедура ПриКомпоновкеРезультата(ДокументОбъект, Результат)
    

    // Загружаем номенклатуру один раз

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ

    | Номенклатура.Ссылка КАК Ссылка,

    | Номенклатура.Артикул КАК Артикул

    |ИЗ

    | Справочник.Номенклатура КАК Номенклатура

    |ГДЕ

    | Номенклатура.Ссылка В (&СписокНоменклатуры)";

    Запрос.УстановитьПараметр("СписокНоменклатуры", ДокументОбъект.ТабличнаяЧасть.ВыгрузитьКолонку("Номенклатура"));

    РезультатЗапроса = Запрос.Выполнить();

    ТаблицаНоменклатуры = РезультатЗапроса.Выгрузить();

    // Используем предварительно загруженные данные

    Для Каждого Строка Из ДокументОбъект.ТабличнаяЧасть Цикл

    НайденнаяНоменклатура = ТаблицаНоменклатуры.Найти(Строка.Номенклатура);

    Если НайденнаяНоменклатура <> Неопределёно Тогда

    Макет.Область("СтрокаТаблицы").Параметры.Артикул = НайденнаяНоменклатура.Артикул;

    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры

    Для форм с большим количеством строк (например, Акт выполненных работ с сотнями позиций) используйте постраничное формирование:

    Макет.Параметры.ПостраничныйВывод = Истина;
    

    Макет.Параметры.КоличествоСтрокНаСтранице = 30;

    Это уменьшит нагрузку на сервер и ускорит печать.

    FAQ: Частые вопросы по редактированию печатных форм

    Можно ли редактировать внешнюю печатную форму без конфигуратора?

    Да, но с оговорками. Простые правки (например, изменение текста или параметров макета) можно сделать в текстовом редакторе типа Notepad++. Однако для изменений в модуле или сложных макетов лучше использовать конфигуратор, так как он проверяет синтаксис и предлагает подсказки по коду.

    Если у вас нет доступа к конфигуратору, попробуйте:

    1. Сделать резервную копию файла формы.
    2. Открыть его в Notepad++ и найти нужный раздел по ключевым словам.
    3. После редактирования проверить форму в тестовом режиме.

    Для редактирования макетов в формате .mxl можно использовать специализированные инструменты, например, 1C:Enterprise Development Tools (EDT).

    Почему после редактирования форма перестала открываться?

    Наиболее вероятные причины:

    • 🔹 Ошибка синтаксиса в модуле (пропущена точка с запятой, опечатка в имени процедуры).
    • 🔹 Несовместимость версий — форма редактировалась в новой версии , а база работает на старой.
    • 🔹 Повреждение файла (например, при сохранении в неподходящей кодировке).
    • 🔹 Отсутствие прав на чтение/запись файла.

    Чтобы восстановить работоспособность:

    1. Вернитесь к резервной копии формы.
    2. Проверьте файл на наличие ошибок в конфигураторе.
    3. Убедитесь, что версия платформы совпадает с версией, в которой редактировалась форма.
    Как добавить в форму данные, которых нет в документе?

    Если нужно вывести в печатной форме данные, отсутствующие в основном документе (например, текущий курс доллара или контактное лицо контрагента), используйте один из методов:

    1. Добавление реквизита в документ:
      • Откройте конфигуратор и добавьте новый реквизит в метаданные документа.
      • Обновите форму, чтобы она могла получать это значение.

    Минус: требует изменения конфигурации, что не всегда возможно.

  • Загрузка данных из справочника:
    Контрагент = ДокументОбъект.Контрагент;
    

    КонтактноеЛицо = Контрагент.КонтактноеЛицо.Наименование;

    Подходит, если данные хранятся в связанных справочниках.

  • HTTP-запросы к внешним источникам:
    КурсДоллара = ПолучитьКурсВалюты("USD", ТекущаяДата());

    Используйте для динамических данных (например, курсов валют).

  • Хранение данных в параметрах формы:

    Если данные статичные (например, реквизиты компании), добавьте их как параметры макета:

    Макет.Параметры.Вставить("АдресКомпании", "г. Москва, ул. Ленина, д. 1");
  • Как сделать, чтобы форма автоматически подставляла текущую дату?

    Чтобы в печатной форме всегда отображалась актуальная дата, используйте функцию ТекущаяДата() в модуле формы. Например:

    Процедура ПриКомпоновкеРезультата(ДокументОбъект, Результат)
    

    Макет.Область("ДатаПечати").Параметры.Дата = ТекущаяДата();

    КонецПроцедуры

    Если нужно выводить дату в определённом формате (например, 01 января 2026 г.), используйте функцию Формат():

    Макет.Область("ДатаПечати").Параметры.ТекстДата = Формат(ТекущаяДата(), "ДФ='dd MMMM yyyy г.'");

    Для многопользовательских баз учитывайте, что ТекущаяДата() берётся с сервера , а не с локального компьютера пользователя.

    Можно ли вернуть стандартную печатную форму после редактирования?

    Да, для этого:

    1. Удалите внешнюю печатную форму из списка дополнительных отчётов (Администрирование → Печатные формы).
    2. Если форма была прикреплена как файл, удалите или переименуйте её в каталоге хранения.
    3. Очистите кэш (Сервис → Очистить кэш).
    4. Перезапустите 1С:Предприятие.

    После этого система будет использовать стандартную форму из конфигурации. Если стандартная форма была изменена,