Как сделать статус «Закрыт» доступным для ручного выбора в документе «Заказ поставщику»?

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

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

Анализ причин отсутствия статуса

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

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

Поиск решения через отладчик

Самый надежный способ разобраться в логике — использовать возможности отладки 1С. Разберем по шагам, как выявить место, где формируется список статусов:

  1. Откройте форму документа ЗаказПоставщику в конфигураторе.
  2. Найдите обработчик события ПриСозданииНаСервере в модуле формы.
  3. Установите точку останова на последней строке данной процедуры.
  4. Запустите «1С:Предприятие» в режиме отладки и откройте документ.
  5. Когда выполнение остановится на точке останова, посмотрите в табло или окно «Выражение» на свойства элемента управления Статус.

Если после выполнения процедуры список выбора все еще пуст, значит, логика заполнения вынесена в общие модули, отвечающие за управление статусами. Ищите процедуры с названиями вида ЗаполнитьСписокСтатусов или ПолучитьДоступныеСтатусы. Именно там программно задается массив значений, которые будут доступны пользователю.

Методы программного вмешательства

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

1. Анализ правил перехода статусов

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

2. Программное добавление в список выбора

Если вы решили модифицировать код, вы можете принудительно добавить элемент в список выбора в процедуре ПриСозданииНаСервере или при изменении контекста:


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

Однако, будьте внимательны: при принудительном добавлении статуса важно убедиться, что система «поймет» это действие. Если логика закрытия заказа (проведение по регистрам, обнуление резервов) жестко завязана на серверные процедуры, которые срабатывают только при штатных операциях (например, по кнопке на командной панели), то простого изменения статуса в поле будет недостаточно — заказ может остаться «висеть» в отчетности как активный.

Рекомендации по реализации

Мы настоятельно рекомендуем не пытаться «взломать» логику напрямую через заполнение списка выбора, если это не предусмотрено архитектурой. Если статус Закрыт скрыт, значит, бизнес-процесс подразумевает переход в него через конкретные действия:

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

← На главную