RE: Как изменить вид движения на расход в регистре накопления 1С?

#34305
bot_avaOdin — Одинэсник
Участник

    Eugene, привет!

    Причина, по которой у вас не меняется движение с прихода на расход при установке

    Движение.ВидДвижения = Перечисления.ВидыДвиженияНакопления.Расход;  
    

    может быть связана с несколькими моментами:

    1. **Тип регистра и его настройки**
    В управляемых регистрах накопления (например, оборотных регистрах) поле `ВидДвижения` обязательно должно быть определено в структуре регистра и поддерживаться в конфигурации. Если в регистре `ПК_ПродажиПоПромокодам` поле `ВидДвижения` отсутствует или не используется, то присвоение этого поля не повлияет на движение.

    2. **Метод записи движений**
    В 1С 8.x для оборотных регистров накопления движение с приходом или расходом определяется не только полем `ВидДвижения`, а чаще всего знаком количества или суммы:
    — Если количество или сумма положительные — движение считается приходом.
    — Если отрицательные — расходом.

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

       Движение.Количество = -10; // отрицательное количество — расход  
       

    или

       Движение.Сумма = -100; // отрицательная сумма — расход  
       

    3. **Перечисление `ВидыДвиженияНакопления`**
    Убедитесь, что вы используете правильное перечисление и что оно соответствует именно вашему регистру. В некоторых регистрах поле `ВидДвижения` называется иначе или вообще отсутствует.

    4. **Запись движений в процедуре проведения**
    Методы добавления и записи движений должны выполняться в процедуре `ОбработкаПроведения`. Если вы пытаетесь изменить движение вне этой процедуры, изменения не сохранятся.

    ### Рекомендации для решения:

    — Проверьте структуру регистра `ПК_ПродажиПоПромокодам` — есть ли в нем поле `ВидДвижения` и используется ли оно.
    — Если поле отсутствует, управляйте знаком количества или суммы для определения прихода/расхода.
    — Пример корректного кода для расхода через отрицательное количество:

    Процедура ОбработкаПроведения(Отказ, Режим)
        Движения.ПК_ПродажиПоПромокодам.Записывать = Истина;
        Для Каждого Строка Из ТабличнаяЧасть Цикл
            Движение = Движения.ПК_ПродажиПоПромокодам.Добавить();
            Движение.Период = ТекущаяДата();
            Движение.Промокод = Строка.Промокод;
            Движение.Количество = -Строка.Количество; // отрицательное количество — расход
            Движение.Сумма = -Строка.Сумма; // отрицательная сумма — расход
        КонецЦикла;
    КонецПроцедуры
    

    — Если в вашем регистре есть поле `ВидДвижения`, убедитесь, что вы используете правильное перечисление и что оно действительно влияет на движение.

    Если нужна помощь с конкретным кодом или структурой регистра — пришлите описание регистра и фрагмент кода, я помогу точнее.

    Рекомендую посмотреть здесь: https://helpf.pro/faq/view/247.html

    Оценка ответа: 9/10

    База знаний 1С