Почему не заполняется поле «Основание» в ТОРГ-12 при создании реализации из рабочего места «Накладные к оформлению» в 1С:УТ 11?

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

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

Выясняем причину незаполнения поля «Основание»

Проблема, как правило, проявляется, когда документ РТиУ создается не напрямую на основании конкретного «Заказа клиента», а через промежуточные рабочие места, такие как «Накладные к оформлению». В таких сценариях система не всегда может однозначно определить единственный документ-основание для автоматического заполнения поля.

  1. Логика заполнения по умолчанию: В 1С:УТ 11 реализован сложный алгоритм автоматического заполнения реквизитов печатных форм. В первую очередь система ищет прямой «документ-основание», например, «Заказ клиента», чтобы взять из него необходимую информацию. Если РТиУ создается не напрямую на основании одного «Заказа клиента», а, к примеру, из рабочего места «Накладные к оформлению», где может быть обработка нескольких заказов или иных источников, то поле «Основание» может оставаться пустым.

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

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

Мы видим, что проблема чаще всего кроется в логике определения основания, когда нет прямой и однозначной связи с одним «Заказом клиента» в момент создания документа РТиУ.

Разбираем решения проблемы

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

1. Ручное заполнение поля «Основание»

Самый простой, но наименее удобный способ — это ручное заполнение поля непосредственно перед печатью.

  1. Откройте документ «Реализация товаров и услуг».

  2. Перейдите на вкладку «Дополнительно» или откройте окно «Реквизиты печати ТОРГ-12» (в зависимости от версии и настроек формы).

  3. В поле «Основание» вручную выберите или введите необходимую информацию (например, «Заказ клиента» и его номер с датой).

  4. После заполнения сможете распечатать ТОРГ-12 с указанным основанием.

Этот метод подходит для редких случаев, но при большом объеме документов становится крайне трудоемким.

2. Установка запрета на проведение РТиУ с незаполненным полем «Основание»

Для предотвращения выпуска документов без указанного основания можно настроить систему таким образом, чтобы она не позволяла проводить РТиУ, если поле «Основание» не заполнено.

  1. В конфигураторе или с помощью расширения мы можем добавить проверку при проведении документа «Реализация товаров и услуг».

  2. Если поле Основание (или связанное с ним поле Сделка, как упоминали на форуме) пустое, то система должна выдавать ошибку и не давать провести документ.

Такой подход гарантирует, что все исходящие ТОРГ-12 будут иметь заполненное основание, но все равно требует ручного заполнения при его отсутствии.

3. Автоматическое заполнение поля «Основание» с помощью расширения конфигурации (рекомендуемый подход)

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

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

Шаг 1: Создание и настройка расширения

Нам потребуется создать новое расширение или использовать существующее.

  1. Откройте конфигурацию в режиме Конфигуратор.

  2. Через меню Конфигурация -> Расширения конфигурации откройте список расширений.

  3. Создайте новое расширение, если его нет, или выберите существующее для доработки.

  4. Добавьте в расширение документ «Реализация товаров и услуг», который мы будем модифицировать. Для этого найдите документ в дереве метаданных конфигурации, кликните по нему правой кнопкой мыши и выберите «Добавить в расширение».

  5. В расширении откройте форму документа «Реализация товаров и услуг». Найдите процедуру ПриОткрытии или событие ПриОткрытии формы.

  6. Создайте обработчик события «Перед» для процедуры ПриОткрытии. Это позволит нам выполнить наш код до того, как отработает стандартная логика открытия формы.

Шаг 2: Добавление кода для автоматического заполнения

В созданный обработчик события добавим код, который будет заполнять поле «Основание» и сопутствующие реквизиты, опираясь на связанный «Заказ клиента».

Предполагаем, что у документа «Реализация товаров и услуг» есть реквизит ЗаказКлиента, который содержит ссылку на соответствующий заказ. Наша задача — использовать данные этого заказа для формирования строки основания.

Вот пример кода, который мы можем использовать:


&НаКлиенте
Процедура Расш1_ПриОткрытииПеред(Отказ)
    Попытка
        // Проверяем, есть ли ссылка на Заказ клиента
        СсылкаНаЗаказ = ЭтотОбъект.ЗаказКлиента;
        Если СсылкаНаЗаказ.Пустая() Тогда
            Возврат; // Если заказа нет, ничего не делаем
        КонецЕсли;

        // Получаем дату и номер из Заказа клиента
        // Используем поля ДатаПоДаннымКлиента и НомерПоДаннымКлиента,
        // если они используются в вашей конфигурации, иначе Дата и Номер
        ДатаЗаказаКлиента = СсылкаНаЗаказ.ДатаПоДаннымКлиента;
        НомерЗаказаКлиента = СсылкаНаЗаказ.НомерПоДаннымКлиента;

        // Заполняем реквизиты документа для печати
        ЭтотОбъект.ОснованиеДата = ДатаЗаказаКлиента;
        ЭтотОбъект.ОснованиеНомер = НомерЗаказаКлиента;

        // Форматируем дату для вывода в строку основания
        ДатаЗаказаКлиентаСтрока = Формат(ДатаЗаказаКлиента, "ДЛФ=Д");

        // Формируем полную строку основания
        ЭтотОбъект.Основание = "Заказ клиента " + НомерЗаказаКлиента + " от " + ДатаЗаказаКлиентаСтрока;

        // Примечание: В некоторых случаях может потребоваться явная запись объекта,
        // но для формы документа это чаще всего происходит автоматически.
        // Если возникнут проблемы с сохранением, можно попробовать:
        // ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);

    Исключение
        // Обработка ошибок, если ЗаказКлиента или его поля недоступны/пусты
        // Например, можно вывести сообщение пользователю или записать в журнал регистрации
        // Сообщить("Ошибка при автоматическом заполнении основания: " + ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

Мы анализируем код по шагам:

  1. &НаКлиенте Процедура Расш1_ПриОткрытииПеред(Отказ): Это клиентская процедура, которая выполняется перед стандартной процедурой открытия формы документа.

  2. Попытка ... Исключение ... КонецПопытки: Блок для обработки возможных ошибок, например, если поле ЗаказКлиента не заполнено или содержит некорректные данные.

  3. СсылкаНаЗаказ = ЭтотОбъект.ЗаказКлиента;: Мы получаем ссылку на объект «Заказ клиента», который связан с текущей реализацией.

  4. Если СсылкаНаЗаказ.Пустая() Тогда Возврат;: Важная проверка, чтобы избежать ошибок, если заказ не указан. В таком случае процедура просто завершается, не пытаясь получить данные из несуществующего заказа.

  5. ДатаЗаказаКлиента = СсылкаНаЗаказ.ДатаПоДаннымКлиента; и НомерЗаказаКлиента = СсылкаНаЗаказ.НомерПоДаннымКлиента;: Получаем дату и номер заказа. Обратите внимание, что в некоторых конфигурациях могут использоваться поля Дата и Номер вместо ДатаПоДаннымКлиента и НомерПоДаннымКлиента. Мы рекомендуем проверить вашу конфигурацию.

  6. ЭтотОбъект.ОснованиеДата = ДатаЗаказаКлиента; и ЭтотОбъект.ОснованиеНомер = НомерЗаказаКлиента;: Заполняем соответствующие реквизиты объекта реализации, которые используются для вывода в печатную форму.

  7. ДатаЗаказаКлиентаСтрока = Формат(ДатаЗаказаКлиента, "ДЛФ=Д");: Форматируем дату в удобный для отображения в строке вид (например, "01.01.2023").

  8. ЭтотОбъект.Основание = "Заказ клиента " + НомерЗаказаКлиента + " от " + ДатаЗаказаКлиентаСтрока;: Формируем итоговую строку для поля «Основание», объединяя тип документа, его номер и дату.

Шаг 3: Отключение безопасного режима расширения

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

  1. В конфигураторе, в окне Расширения конфигурации, выберите ваше расширение.

  2. В свойствах расширения найдите свойство «Безопасный режим» и установите его значение в «Ложь» или снимите соответствующую галочку.

  3. После этого необходимо обновить конфигурацию базы данных.

Дополнительные аспекты и важность заполнения поля «Основание»

Кроме удобства автоматического заполнения, важно понимать значимость поля «Основание» в ТОРГ-12.

  1. Требования к электронному документообороту (ЭДО): С 1 апреля 2025 года становится обязательным применение формата 5.03 для отправки УПД и счетов-фактур по ЭДО. В этом формате поля «Дата и номер основания» являются обязательными. Незаполнение этих полей приведет к ошибкам при отправке документов и невозможности корректного обмена.

  2. Налоговые последствия: Незаполнение строки «Основание» в ТОРГ-12 может стать причиной споров с налоговыми органами. Это может привести к вопросам относительно правомерности вычета НДС и признания расходов для целей налогообложения прибыли. Корректно оформленные документы — залог успешного прохождения налоговых проверок.

  3. Внешние печатные формы (ВПФ): Если стандартные средства или расширения не полностью удовлетворяют вашим требованиям, вы всегда можете создать внешнюю печатную форму ТОРГ-12. Это дает полный контроль над содержимым и форматом документа, включая поле «Основание», и не требует изменения типовой конфигурации.

Таким образом, автоматизация заполнения поля «Основание» не только упрощает работу пользователей, но и помогает избежать потенциальных проблем с контролирующими органами и ЭДО. Использование расширения конфигурации является современным и рекомендуемым подходом для решения подобных задач в 1С:УТ 11.

← На главную