Как изменить печатную форму Счет на оплату без доступа к хранилищу конфигурации

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

В процессе разработки в крупных компаниях программисты часто сталкиваются с ситуацией, когда прямое редактирование конфигурации невозможно из-за использования Хранилища конфигурации или строгих политик безопасности. Рассмотрим типичную задачу: необходимо изменить текст в печатной форме «Счет на оплату», добавив в поле «Назначение платежа» информацию о договоре, при этом не имея возможности захватить объекты в хранилище. Разберем несколько эффективных способов решения этой задачи, от использования расширений до внешних обработок.

Метод 1. Использование расширений конфигурации

Использование расширений — это современный и наиболее предпочтительный способ изменения логики типовых конфигураций (ERP, УТ 11, КА 2). Он позволяет вносить изменения, не снимая основную конфигурацию с поддержки и не требуя монопольного доступа к хранилищу.

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

Рассмотрим пошагово, как это реализовать:

  1. Создаем новое расширение в базе (через меню «Конфигурация» — «Расширения конфигурации»).
  2. Находим в основной конфигурации документ СчетНаОплатуПокупателю (в некоторых версиях это может быть ЗаказКлиента, если счет печатается из него).
  3. Находим в модуле менеджера документа процедуру, отвечающую за подготовку данных для печати. Обычно она называется СформироватьСтруктуруПараметровПечати или находится внутри основной процедуры Печать.
  4. Добавляем эту процедуру в расширение. Важно использовать аннотацию &После (After), чтобы наша логика сработала сразу после выполнения типового кода.

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


&После("ЗаполнитьПараметрыНазначенияПлатежа")
Процедура Расш1_ЗаполнитьПараметрыНазначенияПлатежа(ПараметрыПечати, ДанныеДокумента)
    // Добавляем информацию о договоре в уже сформированную строку
    ДоговорСсылка = ДанныеДокумента.Договор;
    Если ЗначениеЗаполнено(ДоговорСсылка) Тогда
        ПараметрыПечати.НазначениеПлатежа = ПараметрыПечати.НазначениеПлатежа + " по договору № " + ДоговорСсылка.Номер + " от " + Формат(ДоговорСсылка.Дата, "ДЛФ=D");
    КонецЕсли;
КонецПроцедуры

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

Метод 2. Внешняя печатная форма (ВПФ)

Если политика компании запрещает использование расширений (например, из-за требований к стабильности или безопасности), отличным выходом станет создание Внешней печатной формы. Этот объект хранится в справочнике «Дополнительные отчеты и обработки» и никак не затрагивает код конфигурации.

Разберем процесс создания такой формы:

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

Пример функции регистрации внешней обработки:


Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
    ПараметрыРегистрации.Наименование = "Счет на оплату (с договором)";
    ПараметрыРегистрации.Команды.Добавить("СчетСДоговором", "Счет на оплату (с договором)", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
    Возврат ПараметрыРегистрации;
КонецФункции

После регистрации в режиме «1С:Предприятие» у пользователей появится дополнительный пункт в меню «Печать».

Метод 3. Редактирование пользовательских макетов

Выясним, можно ли обойтись без программирования вообще. В современных версиях 1С есть мощный инструмент — «Макеты печатных форм».

Рассмотрим алгоритм действий:

  1. Переходим в раздел «Администрирование» — «Печатные формы, отчеты и обработки».
  2. Открываем пункт «Макеты печатных форм».
  3. Находим в списке «Счет на оплату» и нажимаем кнопку «Изменить».
  4. Откроется табличный редактор, очень похожий на Excel. Здесь можно изменить статический текст (например, «Оплата по счету») или изменить оформление.

Важное ограничение: если в макете нет параметра «Договор», просто вписать его в треугольных скобках <Договор> может быть недостаточно. Если программный код документа не передает данные договора в макет, ячейка останется пустой. Однако, если договор уже присутствует в структуре данных печати, этот способ будет самым быстрым и безопасным.

Метод 4. Настройка шаблонов назначения платежа

В конфигурациях 1С:ERP и 1С:Управление торговлей 11 текст назначения платежа часто формируется на основе настроек в справочнике «Организации» или «Банковские счета».

Проанализируем этот функционал:

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

Технический нюанс: Как работать в копии без хранилища

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

  1. Зайдите в меню «Конфигурация» — «Хранилище конфигурации».
  2. Выберите пункт «Администрирование хранилища» (если есть права) или просто «Отключить от хранилища».
  3. После отключения вы сможете свободно редактировать любые объекты в этой конкретной базе-копии.

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

Резюме

Для решения задачи по изменению печатной формы в условиях ограниченного доступа лучше всего подходит Расширение конфигурации с использованием аннотации &После. Это минимизирует риски при обновлениях и позволяет быстро внедрить изменения. Если же расширения запрещены — используйте Внешнюю печатную форму. Оба метода позволяют добавить вывод договора в «Назначение платежа», не затрагивая стабильность основной конфигурации.

← На главную