Как разрешить отмену проведения Путевого листа в 1С:УАТ через форму документа

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

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

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

Анализ статуса документа и его влияния на форму

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

Разберем, почему это происходит: при расчете путевого листа фиксируются данные по выработке, расходу ГСМ и заработной плате водителей. Отмена проведения в этом состоянии может привести к рассогласованию данных в регистрах накопления. В форме документа за это отвечает специализированная процедура управления состоянием. Посмотрим на логику, которая обычно заложена в модуле формы:


&НаСервере
Процедура УправлениеСостояниемФормы(Форма)
    СтатусДокумента = Объект.СтатусПутевогоЛиста;
    Если СтатусДокумента = ПредопределенноеЗначение("Перечисление.СтатусыПутевыхЛистов.Рассчитан") Тогда
        Форма.ТолькоПросмотр = Истина;
        // Кнопка отмены проведения становится недоступной автоматически
    КонецЕсли;
КонецПроцедуры

Чтобы вернуть кнопке активность, необходимо перевести документ в статус «Новый» или «Открыт». После изменения статуса и записи документа форма пересчитает доступность элементов, и команда «Отменить проведение» в меню «Ещё» станет активной.

Программная блокировка в модуле формы

Если изменение статуса не помогло, выясним причину в конфигураторе. Проанализируем модуль управляемой формы документа ПутевойЛист. Нас интересуют обработчики событий ПриЧтенииНаСервере и ПриСозданииНаСервере. Именно там разработчики часто прописывают принудительное отключение стандартных команд.

Найдем в коде строки, отвечающие за состав команд интерфейса. Часто используется обращение к коллекции Элементы. Нам нужно проверить доступность кнопки, которая в платформе 1С обычно называется ФормаОтменитьПроведение.

Пример кода, который может блокировать кнопку:


&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    // Проверка условий для блокировки
    Если ТекущийОбъект.Проведен И Не РольДоступна("ПолныеПрава") Тогда
        Элементы.ФормаОтменитьПроведение.Доступность = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Взаимосвязь с подчиненными документами по ГСМ

Проанализируем ситуацию с топливными документами. Одной из ключевых особенностей 1С:УАТ является строгая последовательность операций с ГСМ. Если на основании путевого листа были созданы и проведены документы Заправка ГСМ или Слив ГСМ, система может блокировать отмену проведения родительского документа прямо в форме.

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

Настройка функциональных опций в режиме «1С:Предприятие»

Прежде чем вносить изменения в код, проверим системные настройки. В некоторых версиях УАТ предусмотрена опция, ограничивающая редактирование закрытых периодов или рассчитанных листов. Разберем шаги для проверки:

  1. Перейдем в раздел «Администрирование» или «УАТ: Настройки программы».
  2. Найдем пункт «Общие настройки».
  3. Проверим наличие флага «Разрешить редактирование закрытых путевых листов».

Если эта опция выключена, кнопка отмены проведения будет заблокирована на уровне платформенных механизмов отображения данных, даже если у пользователя есть соответствующие права в профиле доступа. Включение этой опции (при наличии прав администратора) позволит временно разблокировать команды в форме для внесения корректировок.

Особенности прав доступа и ролей пользователя

Выясним, какие роли назначены пользователю. В отраслевых решениях недостаточно иметь право на Интерактивную отмену проведения для самого объекта метаданных. В 1С:УАТ часто используются дополнительные проверки прав через механизм RLS (Record Level Security) или через программные проверки ролей в коде формы.

Рассмотрим основные роли, влияющие на процесс:

Если в списке документов отмена проведения разрешена, а в форме — нет, это явный признак того, что в коде формы прописана проверка РольДоступна(), которая не совпадает с настройками прав доступа к самому объекту. Проанализируем состав ролей пользователя и при необходимости добавим роль, дающую право на изменение статусов документов.

Использование механизма «Изменить форму»

В редких случаях проблема может быть связана с индивидуальными настройками пользователя. Проверим это простым способом:

  1. В форме документа нажмем кнопку «Ещё».
  2. Выберем пункт «Изменить форму».
  3. В открывшемся окне найдем группу «Командная панель» или «Состав команд».
  4. Убедимся, что напротив команды «Отменить проведение» стоит флажок видимости.

Если флажок стоит, но кнопка все равно серая, значит, работает именно программная блокировка Доступность = Ложь, описанная выше, и решение следует искать в модуле формы или в настройках статусов 1С:УАТ.

← На главную