Как исключить пункт из списка хозяйственных операций в документе "Заявка на расходование денежных средств" в 1С:ERP?

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

Часто при внедрении и настройке системы 1С:ERP возникает необходимость ограничить выбор пользователями определенных видов хозяйственных операций в документах казначейства. Например, при создании документа "Заявка на расходование денежных средств" в выпадающем списке реквизита "Хозяйственная операция" присутствуют лишние значения, которые сбивают операторов с толку. Рассмотрим подробнее, почему простое удаление значения из свойств реквизита не дает результата, и разберем по шагам правильные методы решения этой задачи.

Почему не работает удаление из свойства "Список выбора"?

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

Проанализируем ситуацию: в сложных конфигурациях, таких как 1С:ERP, управление доступностью и видимостью элементов формы реализовано через сложную логику событий. Список выбора формируется и перестраивается динамически. Это происходит не только при открытии документа, но и при изменении связанных реквизитов (например, при выборе контрагента, договора, кассы или банковского счета). Система выполняет клиент-серверный вызов и заново заполняет список доступных операций стандартными значениями с помощью серверных процедур, таких как ЗаполнитьСписокХозяйственныхОпераций и ЗаполнитьСписокХозяйственныхОперацийЛокализация.

Решение 1: Использование расширений конфигурации (Программный метод)

Разберем самый надежный метод скрытия пункта для программистов. Категорически не рекомендуется снимать основную конфигурацию с поддержки и комментировать типовой код (например, внутри процедур заполнения списков) прямо в форме документа. Это сильно усложнит дальнейшие обновления базы.

Оптимальным решением является создание Расширения конфигурации. Посмотрим на алгоритм действий:

  1. Создайте новое расширение или откройте существующее.
  2. Добавьте форму документа "Заявка на расходование денежных средств" в расширение.
  3. Перехватите обработчик события ПриСозданииНаСервере с помощью аннотации &После.
  4. В добавленной процедуре расширения обратитесь к элементу формы и программно удалите ненужное значение из его списка выбора.

Таким образом, после того как типовой код 1С сформирует полный список операций, ваше расширение "подчистит" его, удалив запрещенный пункт. При этом типовая конфигурация останется на замке.

Решение 2: Отключение через функциональные опции системы

Выясним причину появления некоторых операций. Списки доступных хозяйственных операций в 1С:ERP формируются динамически на основе настроек системы. Многие виды операций напрямую привязаны к Функциональным опциям, которые находятся в разделе "НСИ и администрирование".

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

Решение 3: Разграничение прав и профилей групп доступа

Если стоит задача не просто скрыть пункт визуально, а строго запретить определенным менеджерам создавать заявки с конкретной хозяйственной операцией, правильнее использовать настройку ролей. В 1С:ERP присутствуют гибкие профили для работы с подсистемой Казначейства.

Ограничив права доступа на уровне записей (RLS) или через специфические роли, мы добьемся того, что даже если пользователь попытается выбрать запрещенную операцию или скопировать старый документ с ней, система выдаст ошибку прав доступа при попытке записи или проведения заявки.

Решение 4: Ограничения через Статьи движения денежных средств (ДДС)

Часто задачу финансового контроля путают с необходимостью скрытия самой хозяйственной операции на форме. Если ваша главная цель — ограничить нецелевые расходы, в 1С:ERP существует встроенный механизм привязки "Статей ДДС" к конкретным операциям.

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

Подводя итог, всегда начинайте анализ задачи с возможностей типовой настройки (Функциональные опции и Статьи ДДС). И только если типового функционала недостаточно для скрытия конкретного пункта, прибегайте к программной доработке через механизм Расширений конфигурации.

← На главную