Как вывести сокращенное наименование организации в счете-фактуре в 1С:ERP через расширение?

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

В практической работе бухгалтерии крупных предприятий часто возникает эстетическая и экономическая проблема: полное официальное наименование организации (например, «Общество с ограниченной ответственностью "Научно-производственное объединение Западный Альянс Машиностроения"») при печати счетов-фактур и УПД растягивает строку «Продавец» на три, а то и четыре строчки. В результате печатная форма выглядит перегруженной, а сам документ из-за этого может не поместиться на одном листе, увеличивая расход бумаги.

Главный бухгалтер логично требует выводить в поле «Продавец» короткое рабочее или сокращенное наименование (например, «ООО "НПО ЗАМ"»). Но как реализовать это в типовой и заблокированной от изменений конфигурации 1С:ERP Управление предприятием 2 (или 1С:Комплексная автоматизация)?

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

Почему стандартные методы редактирования макета не работают?

Первая мысль, которая возникает у многих специалистов — изменить макет печатной формы через стандартный интерфейс в меню «Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм». Однако в случае со счетом-фактурой и УПД этот фокус не сработает.

Дело в том, что в ячейку макета передается уже готовая, склеенная в коде текстовая строка (параметры ПредставлениеПоставщика или ПредставлениеПродавца). Программа динамически собирает её по следующему шаблону:

[ПолноеНаименованиеОрганизации] + [, ИНН] + [, КПП] + [, АдресРегистрации]

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

Почему внешняя печатная форма — не лучший выбор в данном случае?

Внедрение внешней печатной формы (ВПФ) — это классический и безопасный способ кастомизации документов. Но у него есть два существенных недостатка в контексте данной задачи:

  1. Путаница пользователей: При регистрации ВПФ в списке выбора команды «Печать» появляется дополнительная строчка. Пользователи (менеджеры, бухгалтеры по реализации) начинают путаться, какую именно форму нужно выбирать, что приводит к ошибкам.
  2. Законодательные обновления: Формы счетов-фактур и УПД регулярно меняются на законодательном уровне (вспомним введение прослеживаемости товаров, изменения под Постановление № 534 и др.). Внешнюю печатную форму придется каждый раз переписывать вручную вслед за обновлениями релиза ERP.

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

---

Где в коде 1С:ERP формируются данные для печати?

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

Основная функция, которая собирает реквизиты юридического лица в структуру:

ФормированиеПечатныхФорм.СведенияОЮрФизЛице(Организация, Дата)

Далее эта структура передается в метод формирования итогового текста:

ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, "ПолноеНаименование, ...")

Разберем два эффективных способа решения нашей задачи с помощью расширения.

---

Способ А. Глобальная подмена через общий модуль (Самый простой способ)

Если бухгалтерия согласна с тем, чтобы сокращенное наименование выводилось во всех печатных формах компании (не только в счете-фактуре, но и в Торг-12, Актах, Расходных накладных и т. д.), самым простым и надежным решением будет перехват функции получения сведений об организации.

Выполним следующие шаги по реализации:

  1. Создадим новое расширение конфигурации (или откроем существующее) и снимем признак «Безопасный режим» (если планируется использование серверных вызовов).
  2. Добавим в расширение общий модуль ФормированиеПечатныхФорм (в зависимости от релиза ERP это может быть ФормированиеПечатныхФормСервер или аналогичный модуль, где расположена функция получения сведений).
  3. Применим к функции СведенияОЮрФизЛице аннотацию &После (&After). Это позволит нам перехватить возвращаемую структуру данных и скорректировать её «на лету» без нарушения типовой логики.

Разберем пример программного кода для общего модуля расширения:


&После("СведенияОЮрФизЛице")
Функция Расш1_СведенияОЮрФизЛице(ЮрФизЛицо, ДатаПериода, ДляФизЛицаТолькоИнициалы = Истина, БанковскийСчет = Неопределено)
    
    // Результат работы стандартной функции — это структура "Результат" со сведениями о контрагенте или организации
    // Проверим, что переданный объект является нашей организацией
    Если ЗначениеЗаполнено(ЮрФизЛицо) 
        И ТипЗнч(ЮрФизЛицо) = Тип("СправочникСсылка.Организации") Тогда
        
        // Подменяем полное наименование на сокращенное
        Если ТипЗнч(Результат) = Тип("Структура") Тогда
            
            Если Результат.Свойство("ПолноеНаименование") И Результат.Свойство("СокращенноеНаименование") Тогда
                
                // Если сокращенное наименование заполнено, подставляем его вместо полного
                Если ЗначениеЗаполнено(Результат.СокращенноеНаименование) Тогда
                    Результат.ПолноеНаименование = Результат.СокращенноеНаименование;
                КонецЕсли;
                
            КонецЕсли;
            
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

Преимущества этого способа:

---

Способ Б. Локальная замена только для счетов-фактур и УПД (Точечный метод)

Что делать, если сокращенное наименование требуется выводить строго в счете-фактуре и УПД, а в остальных документах (например, в официальных договорах или регламентированных актах) обязательно должно оставаться полное наименование?

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

Выполним пошагово:

  1. Добавим в расширение обработку Обработка.ПечатьОбщихФорм.
  2. Перенесем в расширение процедуру ЗаполнитьТабличныйДокументСчетФактура (или актуальную для вашей версии ERP процедуру печати, например, по Постановлению № 534).
  3. Применим к процедуре аннотацию &После.

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


&После("ЗаполнитьТабличныйДокументСчетФактура")
Процедура Расш1_ЗаполнитьТабличныйДокументСчетФактура(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ОпцииПечатиСчетаФактуры, КомплектыПечати = Неопределено)
    
    // Задаем переменные с наименованиями нашей организации
    // В реальной практике их можно получать динамически из справочника Организации
    ПолноеНазваниеОрганизации = "Общество с ограниченной ответственностью ""Научно-производственное объединение Западный Альянс Машиностроения""";
    СокращенноеНазваниеОрганизации = "ООО ""НПО ЗАМ""";
    
    // Обходим ячейки сформированного табличного документа
    Для Строка = 1 По ТабличныйДокумент.ВысотаТаблицы Цикл
        Для Колонка = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл
            
            ОбластьЯчейки = ТабличныйДокумент.Область(Строка, Колонка);
            
            // Если в ячейке содержится полное наименование, производим точечную замену подстроки
            Если Найти(ОбластьЯчейки.Текст, ПолноеНазваниеОрганизации) > 0 Тогда
                ОбластьЯчейки.Текст = СтрЗаменить(ОбластьЯчейки.Текст, ПолноеНазваниеОрганизации, СокращенноеНазваниеОрганизации);
            КонецЕсли;
            
        КонецЦикла;
    КонецЦикла;
    
КонецПроцедуры

Если на вашем предприятии счета-фактуры выписываются в формате УПД (Универсальный передаточный документ), аналогичным образом необходимо перехватить процедуру заполнения реквизитов шапки УПД, например, ЗаполнитьРеквизитыШапкиУПД в той же обработке.

Преимущества этого способа:

---

Важные рекомендации по работе с расширениями в 1С:ERP

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

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

← На главную