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