Почему в УПД выводится краткое наименование номенклатуры вместо полного в 1С:УТ 10.3 и как это исправить?

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

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

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

Выясняем техническую причину проблемы

Многие программисты и системные администраторы удивляются: при анализе кода макета и запроса формирования УПД отчетливо видно, что в выборку попадает поле НаименованиеПолное (или Номенклатура.НаименованиеПолное). Тем не менее, на печать все равно выводится краткий вариант. Проанализируем, почему это происходит:

  1. Баг в функциях постобработки текста: В УТ 10.3 вывод текстового представления номенклатуры редко выполняется «напрямую». Программа проверяет, ведется ли по товару учет в разрезе характеристик, серий или номеров ГТД. Для формирования итоговой строки вызываются специальные функции из общих модулей (например, ФормированиеПечФорм или УчетНДС). В некоторых релизах обновлений разработчики допускали ошибку, передавая в эти функции в качестве базового текста краткое Наименование, из-за чего полное наименование полностью игнорировалось.
  2. Сбой сопоставления параметров в макетах: Обновления УПД под требования законодательства часто сопровождаются переработкой макетов печатных форм. В процессе обновления конфигурации сопоставление полей макета могло измениться, и коде заполнения области строки вместо параметра, отвечающего за полное наименование, по ошибке стал заполняться параметр с кратким системным наименованием.
  3. Влияние модулей ЭДО: Если в системе установлены сторонние модули для отправки электронных документов (например, Диадок, СБИС) или используется встроенный сервис 1С-ЭДО, эти модули могут использовать собственные алгоритмы для генерации как XML-файлов, так и визуальных печатных форм, переопределяя стандартное поведение системы.

Поскольку в пользовательских настройках 1С:УТ 10.3 нет секретного переключателя вроде «Выводить полное наименование в УПД», решать проблему придется техническими методами. Рассмотрим три практических способа устранения этой ошибки без изменения основной конфигурации.

Способ 1. Создание и подключение внешней печатной формы (ВПФ)

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

Разберем по шагам, как адаптировать печать УПД через внешнюю обработку:

  1. Откроем базу в режиме Конфигуратор.
  2. Найдем встроенную печатную форму УПД. Обычно она находится в макетах документа РеализацияТоваровУслуг или СчетФактураВыданный, либо формируется через функции общего модуля печати.
  3. Создадим новую внешнюю обработку (файл с расширением .epf).
  4. Перенесем в нее модуль печати и макет УПД из конфигурации.
  5. В коде внешней обработки найдем запрос, который собирает данные для вывода на печать. Нам нужно убедиться, что для номенклатуры выбирается именно полное наименование. Код запроса должен выглядеть примерно следующим образом:

Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РеализацияТовары.Номенклатура КАК Номенклатура,
    |	ВЫРАЗИТЬ(РеализацияТовары.Номенклатура.НаименованиеПолное КАК СТРОКА(1000)) КАК ТоварНаименование,
    |	РеализацияТовары.Количество КАК Количество,
    |	РеализацияТовары.Цена КАК Цена,
    |	РеализацияТовары.Сумма КАК Сумма
    |ИЗ
    |	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТовары
    |ГДЕ
    |	РеализацияТовары.Ссылка = &Ссылка";

Обратите внимание на использование конструкции ВЫРАЗИТЬ(... КАК СТРОКА(1000)). Поле НаименованиеПолное имеет неограниченную длину, и в некоторых СУБД (или при определенных соединениях в запросах) это может приводить к ошибкам или обрезанию строки, поэтому явное приведение типов обезопасит вывод данных.

Далее найдем в коде обработки цикл вывода строк в макет. Нам нужно принудительно назначить параметру области макета наше полученное полное наименование:


Пока ВыборкаСтрок.Следующий() Цикл
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    // Принудительно передаем полное наименование в параметр макета
    ОбластьСтрока.Параметры.Товар = ВыборкаСтрок.ТоварНаименование;
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

После сохранения файла обработки перейдем в режим 1С:Предприятие и зарегистрируем ее в системе:

  1. Откроем меню: Сервис — Дополнительные отчеты и обработки — Дополнительные внешние печатные формы.
  2. Добавим новый элемент, укажем наименование формы и загрузим наш файл .epf.
  3. В табличной части укажем типы документов, для которых будет доступна эта печатная форма (например, Реализация товаров и услуг и Счет-фактура выданный).

Теперь пользователи смогут выбирать исправленную форму УПД из меню «Печать» в документе.

Способ 2. Использование механизма расширений (для платформы 8.3)

Если ваша база УТ 10.3 работает под управлением платформы 1С:Предприятие 8.3 (пусть даже и в режиме совместимости с версией 8.2), мы можем применить современный механизм расширений конфигурации (файлы с расширением .cfe).

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

  1. В Конфигураторе зайдем в меню Конфигурация — Расширения конфигурации и добавим новое расширение.
  2. Найдем общий модуль, отвечающий за формирование печатной формы УПД (например, УчетНДС или ФормированиеПечФорм), кликнем по нему правой кнопкой мыши и выберем Добавить в расширение.
  3. В модуле расширения создадим процедуру-перехватчик с директивой &Вместо или &После. Например, переопределим функцию формирования названия товара:

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

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

Способ 3. Экспресс-проверка учета характеристик и серий

Проанализируем еще одну интересную закономерность. Часто краткое наименование выводится не для всей номенклатуры подряд, а только для определенных позиций. Проведем простой эксперимент:

  1. Создадим тестовый документ продажи и добавим туда две позиции номенклатуры: одну простую, а вторую — с ведением учета по характеристикам или сериям.
  2. Сформируем УПД на печать.
  3. Если для простого товара выводится полное наименование, а для товара с характеристикой — краткое, значит, проблема кроется в алгоритме склейки строки наименования с характеристиками.

В качестве быстрого временного решения (если у вас нет возможности прямо сейчас привлечь программиста для создания ВПФ) можно проверить настройки ведения учета серий и характеристик. Если для этих товаров характеристики не являются обязательными или были включены по ошибке — их отключение в карточке номенклатуры вернет стандартный вывод полного наименования на печать.

Подведем итоги. В типовой конфигурации УТ 10.3 нет штатной галочки для управления выводом наименований в УПД. Наилучшим выходом из ситуации является подключение внешней печатной формы или использование расширения конфигурации. Это гарантирует корректность печатных форм для ваших контрагентов и сохранит возможность автоматического обновления программы в будущем.

← На главную