Как при программном создании УПД задать нужный статус документа?

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

При автоматизации документооборота в 1С часто возникает задача программного формирования УПД. Основная сложность заключается в том, что статус документа (1 — УПД+СФ или 2 — первичный документ) не является простым реквизитом, который можно изменить прямым присвоением. Разберем, как устроена эта логика и как влиять на формирование печатной формы.

Понимание механизма определения статуса

В типовых конфигурациях, таких как Бухгалтерия предприятия 3.0, статус УПД определяется динамически в момент формирования печатной формы. Система не хранит «статус» как статичное поле в базе данных, а вычисляет его на основании состава данных документа и настроек учета. Основной алгоритм заложен в макеты 1137. Система автоматически «повышает» статус до 1, если обнаруживает в документе наличие суммы НДС, интерпретируя это как необходимость формирования счета-фактуры.

Шаг 1: Проверка реквизита ЭтоУниверсальныйДокумент

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

Убедитесь, что при создании объекта кодом вы корректно устанавливаете это значение:


// Пример установки флага при создании или изменении документа
Объект.ЭтоУниверсальныйДокумент = Истина;
Объект.Записать();

Шаг 2: Анализ влияния суммы НДС

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

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

Шаг 3: Изучение ответственных модулей

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

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

Практические советы по реализации

Если автоматическое определение не дает нужного результата, выполните следующие действия:

  1. Проверка вида операции: Убедитесь, что для документа выбран корректный вид операции (например, из перечисления ВидыОперацийРеализацияТоваров). Неверный вид операции может менять поведение документа при печати.
  2. Использование параметров печати: При вызове функции печати из модуля менеджера документа, проверьте структуру ПараметрыПечати. Часто туда передаются настройки, которые переопределяют поведение системы для конкретного экземпляра документа.
  3. Отладка через консоль запросов: Если статус зависит от сложного запроса, извлеките текст этого запроса из модуля и выполните его в Консоли запросов с параметрами вашего документа. Это позволит увидеть, какие именно значения «тормозят» получение статуса 2.

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

← На главную