Почему услуги не выводятся в печатной форме расходной накладной в 1С:УТ 11 и как это изменить

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

При работе с конфигурацией 1С:Управление торговлей 11 (а также в ERP и Комплексной автоматизации 2) пользователи и программисты часто сталкиваются с ситуацией: в документе «Реализация товаров и услуг» присутствуют и товары, и услуги, однако при печати «Расходной накладной» (или ТОРГ-12) услуги бесследно исчезают из списка. Разберемся подробнее, почему так происходит, какая логика заложена разработчиками «1С» и как технически решить эту задачу, если бизнес-процессы компании требуют вывода всех позиций в одном листе.

Анализируем причину: методология учета и классические формы

Прежде всего, проанализируем ситуацию с точки зрения методологии бухгалтерского и складского учета. В типовых решениях «1С» печатная форма «Расходная накладная» является упрощенным аналогом формы ТОРГ-12. Согласно законодательству и правилам документооборота, товарная накладная предназначена исключительно для учета движения товарно-материальных ценностей (ТМЦ).

Услуги, в отличие от товаров, не имеют материальной формы, их невозможно хранить на складе или физически «отгрузить». Следовательно, включение услуг в документ, фиксирующий отпуск ТМЦ, методологически некорректно. Для подтверждения факта оказания услуг используется «Акт об оказании услуг». Если мы посмотрим на нижнюю часть формы ТОРГ-12, то увидим подписи «Груз получил» и «Груз принял», что явно указывает на перемещение физических объектов.

Разбор кода: где скрывается фильтр

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


Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
    УсловиеПоТипуНоменклатуры = "ИСТИНА";
Иначе
    УсловиеПоТипуНоменклатуры = "РеализацияТоваровУслуг.Номенклатура.ТипНоменклатуры В 
        |(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))";
КонецЕсли;

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

Особенности для внешних пользователей

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

Универсальный передаточный документ (УПД) как стандартное решение

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

Технические сложности доработки через расширение

Посмотрим на ситуацию со стороны программиста. Когда поступает задача «сделать так, чтобы услуги печатались и в обычной накладной», мы сталкиваемся с тем, что процедура формирования данных для печати в современных версиях УТ 11 очень объемная. Рассмотрим основные трудности:

  1. Использование менеджеров печати: Логика сбора данных вынесена в модули менеджеров, где используются сложные запросы с множеством временных таблиц.
  2. Объем кода: Процедуры могут занимать сотни строк, и простое копирование их в расширение с аннотацией &Вместо создает проблемы при обновлении конфигурации.
  3. Зависимости: Код печати тесно связан с внутренними механизмами платформы и другими модулями (например, ФормированиеПечатныхФорм).

Для решения этой проблемы без полной замены типового кода рекомендуется использовать один из двух подходов:

Вариант 1: Внешняя печатная форма (ВПФ)

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

Вариант 2: Расширение с использованием &ИзменениеЗапроса

В современных версиях платформы можно попытаться перехватить запрос, если он вынесен в отдельную функцию. Однако в УТ 11 запрос часто формируется динамически внутри большой процедуры. В таком случае в расширении можно использовать метод СтрЗаменить(), чтобы найти в тексте запроса условие фильтрации по типу номенклатуры и заменить его на строку "ИСТИНА".

Рассмотрим пример того, как это может выглядеть схематично в расширении:


&Вместо("СформироватьДанныеДляПечатиНакладной")
Процедура Мой_СформироватьДанныеДляПечатиНакладной(ПараметрыПечати, ...)
    // Здесь либо полностью свой код, 
    // либо вызов оригинальной процедуры с последующей корректировкой таблиц
КонецПроцедуры

Подводим итоги

Проанализировав ситуацию, мы понимаем, что отсутствие услуг в накладной — это не ошибка, а методологическая позиция фирмы «1С». Если ваша компания не боится отступления от классических форм ТОРГ-12, наиболее рациональным путем будет:

Таким образом, мы выяснили причину поведения программы и рассмотрели варианты действий для адаптации системы под нужды конкретного бизнеса.

← На главную