Всем доброго времени суток !! Сегодня наткнулся к такому вопросу :

Хочу создать условие в общем модуле в Обработке Проведения, т.е условно записывать движения документов.

Мой не рабочий код :

```1c
    Процедура ОбработкаПроведения(Отказ, Режим)

    // регистр ВзаиморасчетыСПоставщиками Расход
    Если Не Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) тогда
    Движения.ВзаиморасчетыСПоставщиками.Записывать = Истина;
    Движение = Движения.ВзаиморасчетыСПоставщиками.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Поставщик = Поставщик;
    Движение.ГруппаПоставщика = ГруппаПоставщика;
    Движение.Сумма = ОплатаПоставщику;
    Иначе
    Отказ = Истина;
    КонецЕсли;

    // регистр Деньги Приход
    Движения.Деньги.Записывать = Истина;
    Движение = Движения.Деньги.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Кошелек = Кошелек;
    Движение.Сумма = Выручка;

    // регистр Управленческий
    Движения.Управленческий.Записывать = Истина;
    Движение = Движения.Управленческий.Добавить();
    Движение.Период = Дата;
    Движение.СчетДт = СчетДт;
    Движение.СчетКт = СчетКт;
    Движение.Сумма = Выручка;

    // регистр Управленческий
    Движения.Управленческий.Записывать = Истина;
    Движение = Движения.Управленческий.Добавить();
    Движение.Период = Дата;
    Движение.СчетДт = СчетДтОплатаПоставщикам;
    Движение.СчетКт = СчетКтОплатаПоставщикам;
    Движение.Сумма = ОплатаПоставщику;

    КонецПроцедуры
```

или все таки что то я не понимаю ?
---
Давайте уже учиться говорить правильно, а? Ну что за "отказ в общем модуле"? Что за "обработка проведения в общем модуле"?
Трудно написать "Использование флага Отказ в обработке проведения"? Трудно написать "обработка проведения в модуле объекта" (хотя больше её и находиться негде)?

По теме:
1. В случае, если необходимо, чтобы документ был проведен, но не формировались движения - тогда надо его проверять в начале и делать возврат, без всяких отказов.

```1c
    Процедура ОбработкаПроведения(Отказ, Режим)
    Если Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
    Возврат;
    КонецЕсли;
    КонецПроцедуры
```

2. В случае, если надо чтобы документ был записан, но не проведен - тогда такие вещи надо контролировать перед записью

```1c
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
    РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
    КонецЕсли;
    КонецПроцедуры
```

3. В случае, если надо просто запретить запись такого документа, то только тогда включаем флаг Отказа от транзакции:

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

По теме:
1. В случае, если необходимо, чтобы документ был проведен, но не формировались движения - тогда надо его проверять в начале и делать возврат, без всяких отказов.

```1c
    Процедура ОбработкаПроведения(Отказ, Режим)
    Если Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
    Возврат;
    КонецЕсли;
    КонецПроцедуры
```

2. В случае, если надо чтобы документ был записан, но не проведен - тогда такие вещи надо контролировать перед записью

```1c
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение И Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
    РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения;
    КонецЕсли;
    КонецПроцедуры
```

3. В случае, если надо просто запретить запись такого документа, то только тогда включаем флаг Отказа от транзакции:

```1c
    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
    Сообщить("Алярм!");
    Отказ = Истина;
    КонецЕсли;
    КонецПроцедуры
```
---
По теме:
1. В случае, если необходимо, чтобы документ был проведен, но не формировались движения - тогда надо его проверять в начале и делать возврат, без всяких отказов. Отказ выдаст ошибку проведения и отменит транзакцию.

так тоже пробовал не получается
---
Автоматическое удаление движений у документа проверь. Если там нет автоматического удаления, то при перепроведении они останутся конечно же, если использовать мое условие.
---
Проведение: Разрешить
Оперативное проведение: Разрешить
Удаление движений: Удалять автоматически при отмене проведения

вот так стоит
---
ОК. Тогда вот так

```1c
    Процедура ОбработкаПроведения(Отказ, Режим)
    Движения.ВзаиморасчетыСПоставщиками.Записывать = Истина;
    Движения.Деньги.Записывать = Истина;
    Движения.Управленческий.Записывать = Истина;
    Если Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
    Возврат;
    КонецЕсли;
    КонецПроцедуры
```
---
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ВзаиморасчетыСПоставщиками.Записывать = Истина;
Движения.Деньги.Записывать = Истина;
Движения.Управленческий.Записывать = Истина;
Если Поставщик = Справочники.Поставщики.НайтиПоНаименованию("Наша фирма",1) Тогда
Возврат;
КонецЕсли;
КонецПроцедуры

так вообще перестал записывать
---
Что перестал записывать? Движения? Так и не должен. Я же написал - у документа должен стоять признак проведен, но движения формироваться не должны.
Именно так и твой код работает.

Можно как-то подробнее расшифровывать свои ответы? У меня столько пива нет, чтобы пытаться фантазировать...
---
значит так. У меня документ оказания услуг в котором есть реквизиты: "Номенклатура", "Поставщик", "СуммаПоставщика". Этот документ сейчас формирует Движения по "РегистрНакопления.ВзаиморасчетыСПоставщиками" Измерения: "Поставщик", Ресурс: "СуммаПоставщика".

Теперь вопрос:

Я хочу условно записывать эти движения. Допустим если в документе реквизит"Поставщик" = "Наша фирма" тогда не записывать движения (здесь имеется ввиду движения по регистру накопления). А все остальное как обычно, ничего не должно меняться. Еще раз повторяю: - Нужно пропускать только записи движения по Регистру Накопления при выполнении условии !
---
Тогда условия надо ставить только на один регистр. И Отказ не использовать вообще. Потому что Отказ действет на ВСЮ транзакцию. Убери выделенное условие.
---
все равно движения записывается
---
Оказывается условие не выполняется из-за дублей
---
После того как перепробовал все отказы, возвраты подумал может дело все таки в общем модуле ? а вообще есть возможность задать условия в Общем модуле документа (в Процедуре Обработка проведения) ?
---
Обработка проведения не может располагаться в общем модуле. У документа нет общего модуля.
---
оувв извиняюсь в модуле объекта.