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