Как запретить изменение вида цен в 1С:Комплексная автоматизация 2.2 без использования соглашений

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

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

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

Почему не работает стандартное ограничение прав

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

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

Вариант 1. Использование общего типового соглашения

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

  1. В разделе администрирования продаж включим использование типовых соглашений с клиентами.
  2. Создадим одно типовое соглашение, в котором укажем признак Доступно для всех партнеров и зафиксируем требуемый вид цен (например, Оптовая).
  3. Зададим статус соглашения Действует.
  4. У менеджеров отключим роль Отклонение от условий продаж.

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

Вариант 2. Настройка минимально допустимых цен

Если требуется сохранить полную свободу выбора вида цен, но гарантировать, что менеджеры не продадут товар ниже определенного порога, настроим диапазон цен продажи:

  1. Перейдем в справочник Виды цен.
  2. По гиперссылке Настроить диапазон допустимых цен укажем Вид минимально допустимых цен продажи.
  3. У пользователей с ролью менеджера продаж снимем право Отклонение от условий продаж.

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

Вариант 3. Блокировка реквизитов через расширение конфигурации

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

Посмотрим на пример логики процедуры в модуле формы документа РеализацияТоваровИУслуг или ЗаказКлиента:


&НаСервере
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Проверяем, есть ли у текущего пользователя полные права
    Если Не РольДоступна("ПолныеПрава") Тогда
        // Блокируем изменение вида цены в шапке и табличной части
        Элементы.ВидЦены.Доступность = Ложь;
        Элементы.ТоварыВидЦены.Доступность = Ложь;
        Элементы.ТоварыЦена.Доступность = Ложь;
    КонецЕсли;
    
КонецПроцедуры

Такой способ полностью оставляет конфигурацию на стандартной поддержке, сохраняя простоту работы пользователей и надежно исключая человеческий фактор.

Вариант 4. Контроль проведения через подписку на событие

Для автоматической сверки цен документа реализации с ценами исходного заказа клиента создадим подписку на событие ОбработкаПроверкиЗаполнения или ПередЗаписью для документа РеализацияТоваровИУслуг.

Разберем алгоритм проверки: если в документе реализации заполнено поле ЗаказКлиента, код в цикле сверяет строки табличной части Товары с соответствующими строками заказа. При обнаружении несовпадения цены формируется сообщение об ошибке, а переменной Отказ присваивается значение Истина.

Вариант 5. Административная настройка формы

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

  1. Откроем форму документа РеализацияТоваровИУслуг под пользователем с полными правами.
  2. Через меню Еще — Изменить форму снимем доступность или видимость для полей Вид цены и Цена.
  3. В разделе НСИ и администрирование — Настройки пользователей и прав скопируем настройки текущей формы менеджерам по продажам.

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

← На главную