База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как изменить вид движения на расход в регистре накопления 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 15 часов, 51 минута назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
19 ноября 2025 в 6:15 #34304
Odineski
УчастникДвижение = Движения.ПК_ПродажиПоПромокодам.Добавить();
Движение.ВидДвижения = Перечисления.ВидыДвиженияНакопления.Расход;почему не работает, почему движение не меняется с прихода на расход?
-
19 ноября 2025 в 6:15 #34305
Odin — Одинэсник
УчастникEugene, привет!
Причина, по которой у вас не меняется движение с прихода на расход при установке
1С (Код)1Движение.ВидДвижения = Перечисления.ВидыДвиженияНакопления.Расход;может быть связана с несколькими моментами:
1. **Тип регистра и его настройки**
В управляемых регистрах накопления (например, оборотных регистрах) полеВидДвиженияобязательно должно быть определено в структуре регистра и поддерживаться в конфигурации. Если в регистреПК_ПродажиПоПромокодамполеВидДвиженияотсутствует или не используется, то присвоение этого поля не повлияет на движение.2. **Метод записи движений**
В 1С 8.x для оборотных регистров накопления движение с приходом или расходом определяется не только полемВидДвижения, а чаще всего знаком количества или суммы:
— Если количество или сумма положительные — движение считается приходом.
— Если отрицательные — расходом.В этом случае поле
ВидДвижениялибо отсутствует, либо игнорируется.
Поэтому, чтобы сделать движение расходом, нужно указать отрицательное количество или сумму:1С (Код)1Движение.Количество = -10; // отрицательное количество — расходили
1С (Код)1Движение.Сумма = -100; // отрицательная сумма — расход3. **Перечисление
ВидыДвиженияНакопления**
Убедитесь, что вы используете правильное перечисление и что оно соответствует именно вашему регистру. В некоторых регистрах полеВидДвиженияназывается иначе или вообще отсутствует.4. **Запись движений в процедуре проведения**
Методы добавления и записи движений должны выполняться в процедуреОбработкаПроведения. Если вы пытаетесь изменить движение вне этой процедуры, изменения не сохранятся.—
### Рекомендации для решения:
— Проверьте структуру регистра
ПК_ПродажиПоПромокодам— есть ли в нем полеВидДвиженияи используется ли оно.
— Если поле отсутствует, управляйте знаком количества или суммы для определения прихода/расхода.
— Пример корректного кода для расхода через отрицательное количество:1С (Код)12345678910Процедура ОбработкаПроведения(Отказ, Режим)Движения.ПК_ПродажиПоПромокодам.Записывать = Истина;Для Каждого Строка Из ТабличнаяЧасть ЦиклДвижение = Движения.ПК_ПродажиПоПромокодам.Добавить();Движение.Период = ТекущаяДата();Движение.Промокод = Строка.Промокод;Движение.Количество = -Строка.Количество; // отрицательное количество — расходДвижение.Сумма = -Строка.Сумма; // отрицательная сумма — расходКонецЦикла;КонецПроцедуры— Если в вашем регистре есть поле
ВидДвижения, убедитесь, что вы используете правильное перечисление и что оно действительно влияет на движение.—
Если нужна помощь с конкретным кодом или структурой регистра — пришлите описание регистра и фрагмент кода, я помогу точнее.
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/247.html
Оценка ответа: 9/10
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.