Версия для печати темы (https://pro1c.org.ua/index.php?s=a13710ba5083d8accc8e713f3e8c1918&showtopic=31507)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С Предприятие 8 _ Отказ при вводе на основании

Автор: Vofka 23.08.16, 15:33

Ситуация
Есть заказы с сайта, которые приходят в 1С в виде отдельных документов "заказы с сайты". Эти заказы обрабатывает менеджер и на основании заказа с сайта вводит заказ покупателя и дальше уже процесс известен. В компании действуют акционные предложения для новых клиентов. Соответственно, один и тот же реальный клиент может зарегистрироваться на сайте под разными учетными записями и активировать себе акцию. Специально или просто забыл, что уже есть зарегистрированная учетка. Когда заказ с сайта приходит в 1С, менеджер созванивается с клиентом и уточняет детали. В ходе этого разговора может выяснится, что это действующий клиент, который уже что-то покупал. А для такого клиента акция не должна работать.

Задача
Сделать что-то, чтобы менеджер не мог оформить заказ покупателя.

Решение
Вариантов решения может быть много. Мне больше всего нравится сценарий, когда при вводе на основании программа скажет "извините, но больше нельзя". Когда происходит ввод на основании, срабатывает событие ОбработкаЗаполнения. Мы первым делом идем туда и хотим там вставить Отказ. Но зайдя внутрь этой процедуры, с грустью констатируем тот факт, что там нету Отказа. Ищем другой сценарий вывода сообщения? Если бы так, то не было бы смысла создавать тему smile.gif .

Что же делать? Можем создать свою кнопку ввода на основании, где выполнить все проверки и в случае успеха программно сформировать, заполнить и открыть ново создаваемый документ. Но так не охота же заморачиваться с этим. Вот если бы можно было в ОбработкеЗаполнения Отказ влепить...

Но Отказ влепить нельзя. Нашел я в интернете и мне понравился следующий способ. Он, возможно, не очень элегантен и гибок, но с данной задачей справляется нормально. Для того, чтобы прервать выполнение ОбработкиЗаполнения и отказаться от создания документа - будем генерировать ошибку сами. Вот так:

ВызватьИсключение("Извините, но больше нельзя");



Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua