Как изменить печатную форму счета на оплату в 1С:Бухгалтерии 3.0 базовой версии

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

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

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

Особенности базовой версии конфигурации

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

  1. Редактирование макетов печатных форм непосредственно в пользовательском режиме предприятия.
  2. Подключение внешних отчетов и обработок через Библиотеку стандартных подсистем (БСП).

Способ 1. Редактирование макета в пользовательском режиме

Разберем самый быстрый и доступный способ изменения счета, не требующий написания программного кода.

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

Рассмотрим по шагам, как отредактировать макет счета:

  1. Перейдем в раздел Администрирование, выберем пункт Печатные формы, отчеты и обработки и откроем справочник Макеты печатных форм.
  2. Найдем в списке макет с именем Счет на оплату (принадлежащий документу СчетНаОплатуПокупателю).
  3. Нажмем кнопку Изменить. Откроется табличный документ, доступный для редактирования.
  4. Внесем необходимые правки: изменим текст статических надписей, скорректируем ширину колонок, параметры шрифта, рамки или цвет ячеек. Важно: не удаляйте и не переименовывайте системные параметры в угловых скобках (например, <Номер>, <Дата>, <Контрагент>), иначе процедура формирования печатной формы может завершиться с ошибкой.
  5. Сохраним изменения по кнопке Записать и закрыть. В списке макет будет визуально отмечен специальным значком, указывающим на то, что используется отредактированная версия.

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

Штатная настройка без изменения макета (логотип и факсимиле)

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

  1. Перейдем в раздел Главное — Организации и откроем карточку нужной организации.
  2. Развернем блок Логотип и печать.
  3. Загрузим изображения логотипа, факсимиле печати и подписей должностных лиц, а также заполним поле дополнительных условий для покупателя. При выборе штатной команды Печать — Счет на оплату (с печатью и подписями) программа автоматически подставит эти данные.

Способ 2. Создание внешней печатной формы (ВПФ)

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

Разберем по шагам алгоритм переноса логики счета во внешнюю обработку:

  1. Создадим новую внешнюю обработку в конфигураторе (или в отдельной рабочей базе для разработки).
  2. В модуле объекта внешней обработки объявим обязательную экспортную функцию для регистрации в подсистеме дополнительных отчетов и обработок:
    
    Функция СведенияОВнешнейОбработке() Экспорт
        ПараметрыРегистрации = Новый Структура;
        ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
        ПараметрыРегистрации.Вставить("Версия", "1.0");
        ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
        ПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма счета на оплату");
        
        Назначение = Новый Массив;
        Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
        ПараметрыРегистрации.Вставить("Назначение", Назначение);
        
        ТаблицаКоманд = Новый ТаблицаЗначений;
        ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
        ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
        ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
        ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
        ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
        
        НоваяСтрока = ТаблицаКоманд.Добавить();
        НоваяСтрока.Представление = "Счет на оплату (внешний)";
        НоваяСтрока.Идентификатор = "СчетЗаказВПФ";
        НоваяСтрока.Использование = "ВызовСерверногоМетода";
        НоваяСтрока.ПоказыватьОповещение = Ложь;
        НоваяСтрока.Модификатор = "ПечатьДокументов";
        
        ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
        Возврат ПараметрыРегистрации;
    КонецФункции
    
  3. Добавим в обработку табличный макет. Скопируем его из документа СчетНаОплатуПокупателю типовой конфигурации.
  4. Создадим в модуле объекта стандартную экспортную процедуру формирования печатных форм:
    
    Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
        ПараметрыПечати = Новый Структура;
        
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетЗаказВПФ") Тогда
            ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, ПараметрыПечати);
            УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СчетЗаказВПФ", "Счет на оплату (внешний)", ТабличныйДокумент);
        КонецЕсли;
    КонецПроцедуры
    
  5. Перенесем процедуру формирования документа из модуля менеджера документа СчетНаОплатуПокупателю (процедура Печать и вспомогательные функции формирования табличного документа) в модуль объекта нашей обработки. Обратим внимание: получение макета в модуле объекта обработки выполняется через инструкцию ЭтотОбъект.ПолучитьМакет("ИмяМакета"). Все вызываемые неэкспортные методы модуля менеджера переносим как локальные процедуры обработки.
  6. Сохраним внешнюю обработку в файл с расширением .epf.
  7. Подключим готовую обработку в пользовательском режиме базовой базы через меню Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки.

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

← На главную