В процессе работы с казначейским подсистемами в прикладных решениях 1С (таких как «1С:Управление торговлей», «1С:Комплексная автоматизация» или «1С:ERP Управление предприятием») пользователи часто сталкиваются с неочевидным поведением интерфейса. Типичная ситуация: ответственный сотрудник открывает документ Заявка на расходование денежных средств, пытается перевести его в статус Согласована, но в выпадающем списке поля Статус доступны только значения Не согласована и Отклонена. При этом статус Согласована (и часто К оплате) попросту отсутствует.
В этой статье мы подробно разберем, почему так происходит, изучим внутренние механизмы конфигурации на уровне программного кода и рассмотрим практические сценарии решения данной проблемы как для разработчиков (через Конфигуратор), так и для системных администраторов (в режиме «1С:Предприятие»).
Для того чтобы понять логику поведения формы документа, обратимся к его программному коду в Конфигураторе. В модуле формы документа Заявка на расходование денежных средств заполнение доступных статусов выполняется динамически на сервере при открытии формы или изменении ее параметров.
Проанализируем ключевую процедуру, которая отвечает за формирование списка доступных статусов:
&НаСервере
Процедура УстановитьСписокСтатусов()
СписокВыбора = Элементы.Статус.СписокВыбора;
Если Не ПравоСогласования ИЛИ Не ПравоУтверждения Тогда
СписокВыбора.Очистить();
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована);
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Отклонена);
Если ПравоСогласования
ИЛИ Объект.Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована Тогда
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована);
КонецЕсли;
Если ПравоУтверждения
ИЛИ Объект.Статус = ...СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате Тогда
СписокВыбора.Добавить(Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Как мы видим из представленного алгоритма, система жестко ограничивает выбор пользователя, если у него отсутствуют специализированные права. Если переменные ПравоСогласования и ПравоУтверждения принимают значение Ложь, стандартный список выбора очищается, оставляя пользователю возможность только перевести заявку в состояния Не согласована или Отклонена.
Теперь выясним, откуда берутся значения этих переменных. Для этого обратимся к коду инициализации прав:
ПравоСогласования = ПраваПользователяПовтИсп.СогласованиеЗаявокНаРасходованиеДенежныхСредств();
ПравоУтверждения = ПраваПользователяПовтИсп.УтверждениеЗаявокНаРасходованиеДенежныхСредств();
Далее перейдем в общий модуль ПраваПользователяПовтИсп и найдем описание функции СогласованиеЗаявокНаРасходованиеДенежныхСредств:
Функция СогласованиеЗаявокНаРасходованиеДенежныхСредств(Пользователь = Неопределено) Экспорт
Возврат Пользователи.РолиДоступны("СогласованиеЗаявокНаРасходованиеДенежныхСредств", Пользователь, Ложь);
КонецФункции
Таким образом, видимость статусов напрямую завязана на наличие у текущего пользователя определенных ролей конфигурации:
СогласованиеЗаявокНаРасходованиеДенежныхСредств — отвечает за появление статуса Согласована.УтверждениеЗаявокНаРасходованиеДенежныхСредств — отвечает за появление статуса К оплате.Хотя разработчики могут увидеть эти роли в Конфигураторе, администратору системы нет необходимости вносить изменения в структуру метаданных. В типовых конфигурациях 1С (ERP, КА, УТ) управление ролями реализовано в пользовательском интерфейсе через механизм Профилей групп доступа.
Рассмотрим по шагам, как предоставить пользователю права на согласование и утверждение заявок:
В типовой поставке программных продуктов 1С часто отсутствует готовый предопределенный профиль, содержащий исключительно роль согласования заявок (чтобы, например, дать эти права только руководителям подразделений). Нам необходимо создать его вручную:
Согласование заявок на расходование денежных средств.Право переводить заявки в статус К оплате по умолчанию делегировано сотрудникам финансовых служб. В системе уже есть готовый инструмент для этого:
Утверждение заявок на расходование денежных средств.К оплате.Рассмотрим несколько важных архитектурных решений в 1С, которые помогут сделать процесс казначейства еще более удобным и автоматизированным.
Пользователям, согласующим платежи, неудобно заходить в каждую отдельную заявку для ручной смены статуса. Проанализируем интерфейс системы: в разделе Казначейство предусмотрено специализированное рабочее место Заявки к согласованию.
В данном рабочем месте согласующее лицо видит интерактивный список всех документов, ожидающих решения. Пользователь может выделить несколько строк зажатием клавиши Ctrl или Shift и в один клик утвердить или отклонить весь пул документов с помощью кнопок командной панели: Согласовать заявки или Отклонить заявки.
В крупных холдингах и компаниях со сложной оргструктурой простого линейного согласования одной роли бывает недостаточно. Например, когда заявку сначала должен согласовать руководитель отдела, затем категорийный менеджер, после этого ИТ-директор (если это покупка оборудования), и только в конце — финансовый департамент.
Поскольку типовой конструктор сложных маршрутов в ERP/УТ отсутствует, идеальным решением является настройка бесшовной интеграции с «1С:Документооборот». В такой связке процесс выглядит следующим образом:
Заявка на расходование денежных средств в учетной системе.Согласована.Иногда даже при наличии роли СогласованиеЗаявокНаРасходованиеДенежныхСредств пользователь не может провести документ в статусе Согласована. Выясним причину этой проблемы: она кроется в механизме контроля лимитов расходования денежных средств.
Если в системе включен контроль лимитов по бюджетам, и сумма заявки превышает доступный остаток по статье движения денежных средств (ДДС) или подразделению, проведение документа заблокируется. Для обхода этого ограничения пользователю необходимо назначить дополнительную важную роль — Согласование заявок на расходование денежных средств сверх лимита. Только при наличии этой роли система позволит провести «перелимитную» заявку в статусе Согласована или К оплате.