При автоматизации документооборота в 1С часто возникает задача программного формирования УПД. Основная сложность заключается в том, что статус документа (1 — УПД+СФ или 2 — первичный документ) не является простым реквизитом, который можно изменить прямым присвоением. Разберем, как устроена эта логика и как влиять на формирование печатной формы.
В типовых конфигурациях, таких как Бухгалтерия предприятия 3.0, статус УПД определяется динамически в момент формирования печатной формы. Система не хранит «статус» как статичное поле в базе данных, а вычисляет его на основании состава данных документа и настроек учета. Основной алгоритм заложен в макеты 1137. Система автоматически «повышает» статус до 1, если обнаруживает в документе наличие суммы НДС, интерпретируя это как необходимость формирования счета-фактуры.
В объектах, участвующих в формировании УПД, таких как документ Реализация товаров и услуг или Счет-фактура выданный, используется специальный булев флаг ЭтоУниверсальныйДокумент. Этот реквизит является индикатором для печатной формы, что документ должен рассматриваться именно как универсальный передаточный документ.
Убедитесь, что при создании объекта кодом вы корректно устанавливаете это значение:
// Пример установки флага при создании или изменении документа
Объект.ЭтоУниверсальныйДокумент = Истина;
Объект.Записать();
Если в вашем документе присутствует НДС (даже в размере нескольких копеек), система принудительно будет стремиться выставить статус 1. Это обусловлено методологией учета: УПД со статусом 1 заменяет собой и первичный документ, и счет-фактуру. Если же ваша задача — получить статус 2 (исключительно первичный документ), рассмотрите следующие варианты:
НДС.НДС присутствует, но вы хотите статус 2, возможно, необходимо пересмотреть логику формирования движений по регистру НДС, так как именно наличие записей в этом регистре часто является триггером для статуса 1.Для глубокой отладки логики формирования печатной формы рекомендуем обратить внимание на процедуры, отвечающие за подготовку данных. Именно там происходит «магия» выбора статуса. Разберем ключевые места:
ПодготовитьДанныеШапкиСчетаФактуры1137 — процедура в общем модуле УчетНДС. Здесь происходит сбор данных для печати и определяется, как именно будет выведена шапка УПД.ЗаполнитьОсновнуюЧастьУПД_5_02 — процедура в модуле ОбменСконтрагентамиБП. Она отвечает за заполнение структуры данных для УПД на основе версии формата 5.02.Чтобы понять, какое условие срабатывает в вашем случае, используйте отладчик. Поставьте точку останова в этих процедурах и проследите, какие параметры передаются в запрос данных для печати. Вы увидите, какие именно поля или реквизиты документа влияют на итоговое значение переменной статуса.
Если автоматическое определение не дает нужного результата, выполните следующие действия:
ВидыОперацийРеализацияТоваров). Неверный вид операции может менять поведение документа при печати.ПараметрыПечати. Часто туда передаются настройки, которые переопределяют поведение системы для конкретного экземпляра документа.Консоли запросов с параметрами вашего документа. Это позволит увидеть, какие именно значения «тормозят» получение статуса 2.Помните, что вмешательство в типовые модули 1С — крайняя мера. Старайтесь сначала добиться нужного результата настройкой данных самого документа (флаг ЭтоУниверсальныйДокумент, отсутствие сумм НДС, корректный вид операции), так как это обеспечит стабильность при обновлении конфигурации.