При работе в программе «1С:Управление торговлей 11 (Базовая версия)» пользователи и начинающие разработчики часто сталкиваются с необходимостью кастомизации печатных форм, в частности Универсального передаточного документа (УПД). Попытка решить эту задачу стандартным для версий ПРОФ путем — включением возможности изменения конфигурации — в базовой версии приводит к серьезным техническим и лицензионным проблемам. В этой статье мы подробно разберем, как устроена печать УПД в УТ 11, почему в базовой версии категорически запрещено менять конфигурацию напрямую, и как решить задачу правильно с помощью механизма внешних печатных форм.
Рассмотрим ситуацию, когда разработчик пытается «как обычно» включить возможность редактирования конфигурации с сохранением поддержки в базовой версии 1С:Управление торговлей. Это действие влечет за собой критические последствия:
Таким образом, единственным легальным, безопасным и технически верным способом изменения печатных форм в базовой версии является разработка и подключение Внешней печатной формы (ВПФ).
Для того чтобы создать внешнюю печатную форму, нам необходимо понять, как система формирует УПД в типовом решении. Разберем по шагам эту цепочку вызовов:
1. Точка входа и менеджер печати: В документах продажи (например, РеализацияТоваровУслуг или СчетФактураВыданный) в модуле менеджера прописана команда печати УПД. Однако сам документ печать не выполняет. Он перенаправляет вызов на специальный общий менеджер печати. Строка инициализации выглядит следующим образом:
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
2. Обработка «ПечатьОбщихФорм»: Именно в этой обработке находится макет УПД. Но если вы откроете модуль менеджера этой обработки, то увидите лишь вызов экспортной процедуры Печать(), которая перенаправляет выполнение дальше.
3. Общие модули учета НДС: Непосредственное заполнение параметров макета и вывод областей происходят в специализированных общих модулях, отвечающих за учет НДС. В зависимости от релиза конфигурации это могут быть модули УчетНДСПечатьКлиентСервер, УчетНДСКлиентСервер или ФормированиеПечатныхФорм. В этих модулях расположены такие ключевые процедуры, как:
СформироватьПечатныеФормыУПД() — собирает данные документов запросами и инициализирует табличный документ;ЗаполнитьТабличнуюЧастьУПД() — отвечает за вывод строк номенклатуры, расчет налогов и сумм;ЗаполнитьЗначенияСвойств() — типовой механизм 1С, который автоматически сопоставляет имена параметров макета с полями выборки данных и заполняет их.Чтобы внести свои изменения в УПД (например, добавить дополнительный текст, логотип или изменить логику вывода параметров) и при этом сохранить базу на поддержке, выполним следующие шаги по созданию внешней печатной формы:
Запустите Конфигуратор, выберите меню Файл -> Новый -> Внешняя обработка. Сохраните файл на диск под понятным именем (например, ВнешняяПечатнаяФормаУПД.epf).
Для того чтобы 1С смогла распознать нашу обработку как печатную форму и привязать ее к документам, в модуле объекта обработки необходимо прописать обязательную экспортную функцию СведенияОВнешнейОбработке(). Рассмотрим пример этого кода:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Наименование = "Универсальный передаточный документ (модифицированный)";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
// Указываем документы, к которым привязываем форму
ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетФактураВыданный");
// Настройка команды печати
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "УПД (модифицированный)";
НоваяКоманда.Идентификатор = "УПД_Мод";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипЗапускаВызовСерверногоМетода();
НоваяКоманда.Вывод = ИспользованиеВыводаСобытия.Печать;
Возврат ПараметрыРегистрации;
КонецФункции
При нажатии пользователем кнопки печати БСП вызывает в модуле объекта нашей обработки процедуру Печать(). Мы должны принять параметры, сформировать табличный документ и вернуть его обратно в систему:
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПараметрыПечати = Новый Структура;
// Проверяем, что вызвана именно наша команда
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "УПД_Мод");
Если ПечатнаяФорма <> Неопределено Тогда
// Вызываем функцию формирования табличного документа
ПечатнаяФорма.ТабличныйДокумент = СформироватьУПД(МассивОбъектовНазначения, ОбъектыПечати);
ПечатнаяФорма.СинонимМакета = "УПД (модифицированный)";
КонецЕсли;
КонецПроцедуры
Скопируйте макет УПД из типовой обработки ПечатьОбщихФорм в созданную внешнюю обработку. Теперь вы можете свободно редактировать этот макет в своей обработке: добавлять новые колонки, менять текст в ячейках, переопределять имена параметров.
Функция СформироватьУПД() должна содержать логику формирования документа. Самый простой способ ее реализации — скопировать логику из общего модуля УчетНДСПечатьКлиентСервер, заменить обращения к типовому макету на обращение к макету нашей внешней обработки (через метод ПолучитьМакет()) и дописать присвоение собственных параметров. Проанализируем пример вывода области строки с добавлением своего реквизита:
// Пример заполнения кастомного параметра в строке УПД
ОбластьСтроки = Макет.ПолучитьОбласть("Строка");
ЗаполнитьЗначенияСвойств(ОбластьСтроки.Parameters, ДанныеСтроки);
// Добавляем заполнение собственного параметра, которого нет в типовой форме
ОбластьСтроки.Параметры.МойКастомныйПараметр = "Спец. условия доставки: " + ДанныеСтроки.ДополнительноеСвойство;
ТабличныйДокумент.Вывести(ОбластьСтроки);
После сохранения файла внешней обработки выполните следующие действия в режиме пользователя:
ВнешняяПечатнаяФормаУПД.epf. Приложение автоматически заполнит параметры регистрации на основе функции СведенияОВнешнейОбработке().Теперь в документах «Реализация товаров и услуг» в меню «Печать» появится ваш новый пункт «УПД (модифицированный)», который будет выводить форму с вашими изменениями, а конфигурация вашей базы останется полностью типовой и обновляемой!
Выясним, как быстро определить, какая конфигурация и лицензия используются на компьютере. Для этого в режиме «1С:Предприятие» откройте главное меню (три точки или шестеренка в правом верхнем углу окна программы) и выберите пункт «О программе».
В появившемся окне обратите внимание на следующие блоки:
Управление торговлей (базовая), редакция 11.X. Если в скобках написано «измененная» — значит, правила поддержки нарушены, и автоматическое обновление работать не будет.Получена лицензия: Базовая однопользовательская. Если там указана ПРОФ-лицензия или эмулятор, это повод проверить легальность использования программного обеспечения.Использование внешних печатных форм и обработок — это стандартный, надежный и профессиональный инструмент адаптации базовых версий программ «1С» под индивидуальные требования бизнеса без нарушения целостности системы.