Рассмотрим частую ситуацию, возникающую в программе 1С:ERP Управление предприятием. Пользователь с правами на производство выполняет деление этапа. В результате создаются два новых этапа, один из которых успешно переходит в статус «Проведен», а второй не проводится, выдавая ошибку вида:
«Номенклатура: [Имя], Склад: [Имя склада], Назначение: [Заказ клиента]. Заказано для обеспечения больше, чем требуется на [N] шт.»
При этом пользователи с полными административными правами осуществляют аналогичное деление без проблем, после чего обеспечение переформировывается корректно. Разберем по шагам, почему возникает такое поведение и выясним причину блокировки.
Проанализируем ситуацию. Ошибка возникает из-за механизмов контроля обособленного обеспечения. Материалы в исходном этапе зарезервированы или заказаны обособленно под жесткое Назначение (например, под конкретный Заказ клиента). В момент деления этапа потребность в этих материалах в исходном документе уменьшается. Платформа проверяет регистры и видит, что под данное Назначение уже обеспечено (или заказано) большее количество материалов, чем требуется теперь, после уменьшения.
Администратор с полными правами обходит этот контроль, так как у него есть привилегии на фоновый пересчет регистров обеспечения, изменение документов-оснований и игнорирование ряда строгих проверок. Пользователю с ограниченным профилем не хватает прав для автоматического перераспределения обособленных запасов.
Посмотрим на самое корректное и штатное решение, если бизнес-логика предприятия допускает небольшие излишки в обособлении.
Допускается обособление товаров сверх потребности.После активации этой настройки система перестанет жестко блокировать проведение документа при превышении заказанного количества над расчетной потребностью. Документ будет проведен, а излишки обеспечения пользователь сможет распределить или снять позднее.
Если изменять глобальные настройки системы нельзя, рассмотрим другой подход — организационный. Обучим пользователей правильному алгоритму действий перед делением.
Не обеспечивать (или отмените резервирование партий).Так как под полными правами ошибка не воспроизводится, проанализируем профиль проблемного пользователя. Причина кроется в нехватке прав на смежные объекты.
Убедитесь, что у производственного профиля есть необходимые роли. Пользователю могут требоваться права на чтение и минимальное изменение документа-основания (Заказа клиента, Направления деятельности), к которому привязано Назначение. Также проверьте наличие прав на инициализацию фоновых заданий, которые отвечают за пересчет графика обеспечения в момент проведения документа. Обязательно проверьте ограничения на уровне RLS (доступ к складам готовой продукции и кладовым).
Если ни один из типовых методов не подходит, а деление этапов должно работать бесшовно для ограниченных ролей, можно прибегнуть к программному вмешательству.
Суть метода заключается в том, чтобы с помощью расширения конфигурации «окаймить» точку проверки остатков и обеспечения при проведении этапа. В расширении перехватывается процедура контроля, и для конкретного документа (или при выполнении специфического сценария деления) принудительно отключается возврат ошибки контроля остатков. Это позволит документу записаться, после чего типовые фоновые задания 1С выровняют регистры обеспечения.