При работе с типовой конфигурацией 1С:Бухгалтерия 3.0 часто возникают ситуации, когда требуется доработать внешнюю печатную форму УПД. Одной из самых частых задач является принудительное заполнение реквизитов Грузоотправитель и Грузополучатель. Рассмотрим, как подойти к этой задаче профессионально и каких ошибок при этом следует избегать.
В типовой архитектуре 1С:Бухгалтерии печатная форма УПД формируется на основе данных, хранящихся в документе Счет-фактура выданный. Если в этом документе данные о грузоотправителе или грузополучателе не заполнены, печатная форма, использующая типовые алгоритмы, будет оставлять эти поля пустыми. Первым делом мы рекомендуем проверить заполнение карточки контрагента и самого документа Счет-фактура выданный.
Если штатных настроек недостаточно и требуется вмешательство в код, разработчики часто пытаются локализовать типовые процедуры. Для этого необходимо обратиться к общему модулю УправлениеПечатью. Основная сложность заключается в вызове процедуры ВывестиТабличныйДокументВКоллекцию.
Рассмотрим структуру вызова:
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИдентификаторФормы",
"Наименование",
ДанныеДляПечати,,
"ИдентификаторФормы"
);
Чтобы внести изменения, многие пытаются скопировать типовую процедуру УчетНДС.ПечатьУниверсальныхПередаточныхДокументов981 в модуль своей внешней печатной формы. Однако, простое копирование кода часто приводит к ошибке Слишком много параметров. Это происходит потому, что типовая процедура ожидает строго определенный набор аргументов, а при переносе в свой модуль контекст выполнения меняется.
Чтобы доработка прошла успешно и печатная форма работала корректно, следуйте этим рекомендациям:
Сервера.ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати. Это позволяет избежать конфликтов при интеграции вашей формы в комплект печатных форм документа.1С:Предприятия. Поставьте точку останова в месте вызова ПечатьУниверсальныхПередаточныхДокументов и посмотрите, какие именно параметры система считает «лишними» или «недостающими».Вместо полного копирования всей логики УчетНДС, попробуйте следующий подход:
Создайте собственную процедуру вывода, которая сначала получает данные из типовых объектов СчетФактураВыданный, затем вносит в них нужные вам корректировки (заполняет грузоотправителя/грузополучателя, если они пустые), и только после этого передает измененные данные в стандартный макет.
// Пример логики подготовки данных перед выводом
Процедура ПолучитьДанныеДляПечати(Объект)
Данные = ПолучитьДанныеИзДокумента(Объект);
Если ПустаяСтрока(Данные.Грузоотправитель) Тогда
Данные.Грузоотправитель = ПолучитьГрузоотправителяПоУмолчанию(Объект);
КонецЕсли;
Возврат Данные;
КонецПроцедуры
Помните, что УПД — это сложный документ, объединяющий функционал Счета-фактуры и Накладной. Любое изменение в коде требует тщательного тестирования в режиме 1С:Предприятие, чтобы не нарушить структуру вывода налоговых данных и формирования итоговых сумм.
Если вы столкнулись с ошибкой при компиляции, проанализируйте сигнатуру (список параметров) функции, которую вы вызываете. Скорее всего, вы пропустили какой-либо необязательный параметр, который в типовой конфигурации имеет значение по умолчанию, либо наоборот — передали лишнюю структуру данных.