В Документе Установка цен номенклатуры в событие "Перед записью" вставляю процедуру проверки цен на МРЦ, В итоге при нажатии на "Провести и закрыть" выскакивает предупреждение что цена в такой-то строке ниже МРЦ, но при этом документ проводиться и закрывается. Как сделать чтобы при обнаружении неправильной цены вернуться в форму документа. Как выйти из стандартной команды?

Проблема решена. Как обычно ответ лежал на поверхности. Поместил процедуру в событие "ПослеЗаписиНаСервере" и все заработало.
---
при записи данные уже записаны, но отказаться от записи можно.
---
хххх.записывать = ложь,
---
предупреждение это лишь сообщение, а форма закрывается и оно улетучивается. Нужно использовать процедуру сообщения, куда передавать отказ и все само собой станет.
---
Можно на примере если не трудно. Пож-та!
Процедура в расширении конфигурации. Все что знаю перепробовал не помогает.

```1c
    &НаКлиенте
    Процедура АлкоПослеЗаписиПеред(ПараметрыЗаписи)
    Для каждого Строка из Объект.Товары Цикл
    МРЦ = ПолучитьМРЦ(Строка.Номенклатура,Строка.ВидЦены);
    Если ЗначениеЗаполнено(МРЦ) Тогда
    //Сообщить(" + Строка.Номенклатура + " - " + МРЦ + " цена - " + Строка.Цена);
    Если Число(Строка.Цена) < Число(МРЦ) Тогда
    ВызватьИсключение "Цена на - " + Строка.Номенклатура + " должна быть не ниже МРЦ: " + МРЦ;
    //?????

    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
---
а знаешь почему? потому что процедура "ПослеЗаписи()"

Добавь эти действия в "ПередЗаписью()" или "ПриЗаписи()"
---
Перед записью пробовал. Не работает, и при том перед записью еще не записана новая цена и на соответствие проверяется старая цена, соответственно не выдается ошибка а после записывается уже новая, возможно неправильная цена на товар.
---
при записи данные уже записаны, но отказаться от записи можно.
---
на соответствие проверяется старая цена
Добавь в соответствие новую цену и проверяй в событие "Перед записью"
---
В описании: (1) в событие "Перед записью"
В вашем коде:
(6) Процедура АлкоПослеЗаписиПеред
Пишите, что проверка в одном месте, по факту в другом.
(6) &НаКлиенте
На форме делаете? Не надо так, перенесите в событие ПередЗаписью модуля объекта и будет вам счастье. В событие ПослеЗаписи формы уже произошло событие закрыть, поэтому никакие вызовы исключения тут не помогут
---
Перед записью не записана еще цена которую нужно проверить. Так что счастья это не принесет.
---
Вот это уже осложняет задачку. Попробуйте переопределить ОбработкаПроведения в модуле объекта, раз с раширениями работаете, то пкм по функции и добавить в расширение и выбрать после, там уже вставьте вашу функцию проверки и если она сработает, тогда отказ = истина; В теории должно сработать, но не уверен.
Другой вариант в разы сложнее. Раз ждёте результата записи, значит это скорее всего какой-то регистр, в котором можно определить описание событий ПередЗаписью и ПриЗаписи в модуле набора записей и уже там прописать проверку. В типовой УТ это реализовано в регистрах накопления с использованием менеджера временных таблиц. Запоминаются данные до записи и сравниваются с данными после записи и если что не так, то в отказ. Местами этот отказ уходит в менеджер записи документа и там проходит описание отказа для пользователя. Так реализованы проверки на отрицательный остаток или дублирование движений. Очень интересная реализация, советую в ней разобраться.
---
Конфигурация на поддержке, поэтому делаю в расширении конфигурации а в модуле объекта в расширении процедура "перед записью" не доступна
---
отказ = истина;
---
Процедура в расширении конфигурации. Все что знаю перепробовал не помогает.

```1c
    &НаКлиенте
    Процедура АлкоПослеЗаписиПеред(ПараметрыЗаписи)
    Для каждого Строка из Объект.Товары Цикл
    МРЦ = ПолучитьМРЦ(Строка.Номенклатура,Строка.ВидЦены);
    Если ЗначениеЗаполнено(МРЦ) Тогда
    //Сообщить(" + Строка.Номенклатура + " - " + МРЦ + " цена - " + Строка.Цена);
    Если Число(Строка.Цена) < Число(МРЦ) Тогда
    ВызватьИсключение "Цена на - " + Строка.Номенклатура + " должна быть не ниже МРЦ: " + МРЦ;
    //?????

    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```
---
Вызвать исключение ("Ошибка такая то");
---
Вызываю но при нажатии на кнопку "Ок" документ закрывается а нужно вернуться к редактированию цен.

Процедура в расширении конфигурации. Все что знаю перепробовал не помогает.

```1c
    &НаКлиенте
    Процедура АлкоПослеЗаписиПеред(ПараметрыЗаписи)
    Для каждого Строка из Объект.Товары Цикл
    МРЦ = ПолучитьМРЦ(Строка.Номенклатура,Строка.ВидЦены);
    Если ЗначениеЗаполнено(МРЦ) Тогда
    Если Число(Строка.Цена) < Число(МРЦ) Тогда
    ВызватьИсключение "Цена на - " + Строка.Номенклатура + " должна быть не ниже МРЦ: " + МРЦ;
    //?????

    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
```