В процессе работы с 1С:Бухгалтерией предприятия 3.0 (БП3) пользователи часто сталкиваются с необходимостью модифицировать типовые печатные формы, например, акт сверки взаимных расчетов. При этом возникает задача сохранить оригинальную, типовую версию формы и одновременно иметь доступ к своей, скорректированной. Из обычного пользовательского режима "Предприятие" возможность прямого копирования типового макета с последующим созданием отдельной команды печати отсутствует, что приводит к вопросу: "Возможно ли скопировать типовой макет печатной формы акта сверки для его модификации, сохранив при этом исходный вариант?" Рассмотрим, как можно решить данную проблему, используя доступные механизмы платформы 1С:Предприятие.
Начнем с ответа на часто возникающий вопрос: можно ли реализовать такую задачу "без конфигуратора", то есть исключительно в режиме "Предприятие"? К сожалению, для полноценного решения, которое позволит вам иметь две независимые печатные формы (типовую и модифицированную) с отдельными командами печати, работа в конфигураторе является обязательной. Режим "Предприятие" предназначен для выполнения бизнес-процессов, ввода данных, формирования отчетов и использования уже готового функционала. Изменение структуры метаданных, добавление новых макетов или переопределение логики вывода печатных форм — это задачи, требующие инструментов разработки, доступных только в конфигураторе.
Хотя в режиме "Предприятие" существует возможность редактирования некоторых макетов печатных форм через раздел НСИ и Администрирование -> Печатные формы, отчеты и обработки -> Макеты печатных форм, этот механизм позволяет лишь вносить изменения в существующий макет. Он не дает возможности создать его полноценную копию, которая будет существовать параллельно с оригиналом и иметь свою собственную команду печати. Таким образом, для достижения поставленной цели нам потребуется обратиться к средствам разработки.
Наиболее распространенным и рекомендуемым способом для добавления собственных печатных форм или модификации существующих без изменения основной конфигурации является использование Внешних Печатных Форм (ВПФ). ВПФ представляют собой отдельные файлы с расширением .epf, которые подключаются к базе 1С в режиме "Предприятие". Этот подход позволяет сохранить конфигурацию на поддержке, что упрощает обновление.
.epf его легко подключить в любой базе без необходимости запуска конфигуратора на каждом рабочем месте.Для создания ВПФ нам потребуется выполнить ряд шагов в конфигураторе. Рассмотрим их подробнее:
ПФ_MXL_АктСверкиВзаимныхРасчетов и находится в общем макете или макете соответствующего документа (например, АктСверкиВзаимныхРасчетов).Ctrl+A, Ctrl+C) и вставляем его в новый макет, который мы создадим в нашей внешней обработке (вкладка "Макеты" внешней обработки).СведенияОВнешнейОбработке(): Эта функция возвращает структуру, описывающую ВПФ (тип, версия, список команд и объекты, к которым она относится).Печать(): Основная процедура, которая формирует печатную форму. Она должна получить данные, заполнить макет и вернуть готовый табличный документ.Пример структуры, которую возвращает функция СведенияОВнешнейОбработке():
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.АктСверкиВзаиморасчетов"); // Указываем, к какому объекту привязываем ВПФ
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяПечатнаяФорма");
ПараметрыРегистрации.Вставить("Наименование", "Акт сверки взаимных расчетов (моя версия)");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ТаблицаКоманд = Новый ТаблицаЗначений;
ТаблицаКоманд.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
ТаблицаКоманд.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
НоваяСтрока = ТаблицаКоманд.Добавить();
НоваяСтрока.Представление = "Акт сверки взаимных расчетов (моя)";
НоваяСтрока.Идентификатор = "ПечатьАктСверкиМой";
НоваяСтрока.Использование = "Печать"; // Указываем, что это команда печати
НоваяСтрока.ПоказыватьОповещение = Истина;
НоваяСтрока.Модификатор = "АктСверки"; // Модификатор для привязки к форме
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
// Процедура печати
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// Здесь реализуем логику получения данных
// Например:
// Документ = МассивОбъектов[0];
// ... получаем данные из Документа ...
// Получаем наш макет
Макет = ПолучитьМакет("НашМакетАктаСверки"); // Имя нашего макета, созданного в ВПФ
// Создаем табличный документ и заполняем его
ТабличныйДокумент = Новый ТабличныйДокумент;
// ... заполнение ТабличногоДокумента данными и макетом ...
// Добавляем в коллекцию печатных форм
ИмяМакета = "ПечатьАктСверкиМой"; // Идентификатор команды, которую мы задали выше
Заголовок = "Акт сверки взаимных расчетов (моя)";
КоллекцияПечатныхФорм.Добавить(ИмяМакета, Заголовок, ТабличныйДокумент);
КонецПроцедуры
Важно помнить, что логика получения данных для акта сверки может быть достаточно сложной. Мы рекомендуем изучить, как формируется типовой акт сверки в конфигурации, чтобы правильно получить все необходимые данные.
.epf.После того как файл .epf создан и протестирован, его можно подключить в пользовательском режиме:
.epf.После подключения ваша новая печатная форма появится в списке доступных при печати документа "Акт сверки расчетов с контрагентами", рядом с типовой формой.
Расширения конфигурации — это более современный и гибкий механизм для доработки функционала конфигурации без изменения ее самой и снятия с поддержки. Расширения позволяют не только добавлять новый функционал, но и изменять поведение существующих объектов. Этот способ также требует работы в конфигураторе.
Рассмотрим шаги по созданию расширения для нашей задачи:
ПФ_MXL_АктСверкиВзаимныхРасчетов (или аналогичный). Щелкнем по нему правой кнопкой мыши и выберем Добавить в расширение. Это создаст копию макета внутри расширения.ПФ_MXL_АктСверкиВзаимныхРасчетов мы можем создать твойпрефикс_ПФ_MXL_АктСверкиВзаимныхРасчетов.Ctrl+Shift+F) по названию типовой печатной формы (например, "ПФ_MXL_АктСверкиВзаимныхРасчетов") или по названию команды печати, которую вы видите в документе "Акт сверки взаиморасчетов".
// Оригинальная процедура, например, ДобавитьКомандыПечатиВКоллекцию(КоллекцияКоманд)
// ... типовой код регистрации команды ...
// ПодключаемыеКоманды.Добавить(КомандаПечатьАктСверки, "Акт сверки взаимных расчетов", ТипКомандыПечати.Печать);
// Наша новая команда:
Команда = КоллекцияКоманд.Добавить();
Команда.Идентификатор = "ПечатьАктСверкиМой"; // Уникальный идентификатор
Команда.Представление = "Акт сверки взаимных расчетов (моя)"; // Имя, которое увидят пользователи
Команда.Тип = Тип("ДокументСсылка.АктСверкиВзаиморасчетов"); // Тип объекта, для которого команда
Команда.МенеджерПечати = "МенеджерПечатиМоихАктовСверки"; // Можем создать свой менеджер печати или указать существующий
Команда.Использование = "Печать"; // Указываем, что это команда печати
// Внутри процедуры МенеджерПечатиМоихАктовСверки.Печать(..., ИмяМакета)
// мы будем получать наш макет твойпрефикс_ПФ_MXL_АктСверкиВзаимныхРасчетов
Например, в заимствованном модуле (если это, к примеру, модуль объекта или модуль менеджера документа), мы можем добавить свою процедуру:
Процедура ПечатьАктСверкиМой(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// Здесь та же логика, что и для ВПФ, но с учетом того, что макет находится в расширении
// Документ = МассивОбъектов[0];
// ...
Макет = ОбщиеМакеты.твойпрефикс_ПФ_MXL_АктСверкиВзаимныхРасчетов; // Обращаемся к макету в расширении
ТабличныйДокумент = Новый ТабличныйДокумент;
// ... Заполнение ТабличногоДокумента ...
КоллекцияПечатныхФорм.Добавить("ПечатьАктСверкиМой", "Акт сверки взаимных расчетов (моя)", ТабличныйДокумент);
КонецПроцедуры
После применения расширения в режиме "Предприятие" появится новая команда печати для акта сверки, которая будет выводить вашу модифицированную форму, а типовая форма останется доступной без изменений.
Мы уже упоминали этот способ в контексте невозможности создания копии, но для полноты картины рассмотрим его как вариант, если требуется лишь внести "косметические" изменения и наличие двух отдельных форм не критично. Этот метод не позволяет создать копию, но дает возможность изменить типовой макет без конфигуратора.
Итак, мы выяснили, что для того чтобы иметь одновременно типовую и свою модифицированную печатную форму акта сверки взаимных расчетов в 1С:Бухгалтерии предприятия 3.0, необходимо использовать либо Внешние Печатные Формы (ВПФ), либо Расширения Конфигурации. Оба эти метода требуют работы в конфигураторе и наличия навыков программирования на встроенном языке 1С. ВПФ подойдут, если вы хотите создать полностью независимую форму. Расширения предпочтительнее для более глубокой интеграции и модификации существующих команд печати.
Механизм редактирования существующих макетов непосредственно в режиме "Предприятие" является очень ограниченным и не позволяет решить задачу создания двух независимых форм. Поэтому, если ваша цель — сохранение типовой формы и добавление рядом с ней своей, скорректированной, то ваш путь лежит через разработку в конфигураторе. Это позволит вам не только реализовать желаемый функционал, но и обеспечить стабильность работы системы при дальнейших обновлениях.