Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 11:01

Регистры накопления. Я хочу понять правильно ли я сделал задание.

Автор micahbell, 10 окт 2024, 17:53

0 Пользователей и 1 гость просматривают эту тему.

micahbell

Само задание:

Нужно создать два движения по СостояниюСкладов в конструкторе: одно с расходом, где в склад записывается СкладОтправитель, а второе с приходом, где в Склад записывается СкладПолучатель.

Не совсем понимаю как это должно правильно функционировать.

Движения вот такие:

Процедура ОбработкаПроведения(Отказ, Режим)
Движения.СостояниеСкладов.Записывать = Истина;

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


// Расход
Движение = Движения.СостояниеСкладов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Вид = СкладОтправитель;
Движение.Количество = ТекСтрокаТовары.Количество;
КонецЦикла;

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


Для лучшего ознакомления вот вам выгрузка.

alexandr_ll

micahbell, Что именно непонятно? Движения вроде верные. Проведение документа дает ошибку?

micahbell

alexandr_ll, Ну вот я просто и хотел убедиться что движения верные.

LexaK

micahbell, вообще бред полный!!!
записи Движения это  перемещения Чего-то между Чем-то
т.е. перемещение Товаров между складами (в вашем случае)

Где в ваших проводках Товар?

Почему в поле Вид присваиваете Склады?
если помогло нажмите: Спасибо!

evt_alex

Ваше решение совершенно неверное - в обработке проведения отсутствуют движения по измерениям "Товар" и "Склад".
Но, что самое главное, неверно спроектирован регистр накопления с названием "СостояниеСкладов". В нём 1 ресурс (Количество)  и 3 измерения: Склад (СправочникСсылка.Склады), Товар (СправочникСсылка.Товары) и Вид (СправочникСсылка.Склады). Зачем здесь 2 измерения с одинаковым типом "СправочникСсылка.Склады" ?

Начнем с регистра накопления вида "Остатки". Название "СостояниеСкладов" для него совершенно не подходит. "Система стандартов и методик разработки конфигураций" гласит, что "Имена регистров накопления рекомендуется задавать во множественном числе и образовывать от описания списка записей, которые содержатся в регистре" ( см.  https://its.1c.ru/db/v8std#content:550:hdoc ). Поэтому в Вашем случае Здесь было бы лучше назвать "ТоварыНаСкладах" или "ТоварныеЗапасы". Так было бы сразу понятнее предназначение регистра.
   Далее определить для регистра два измерения: Товар (СправочникСсылка.Товары)  и Склад (СправочникСсылка.Склады) и один ресурс: Количество.  Важно: движения должны обеспечивать выведение остатков ресурса «в ноль». Результат примерно такой:

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

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

// регистр ТоварыНаСкладах Расход
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Склад = СкладОтправитель;
Движение.Товар = ТекСтрокаТовары.Товар;
Движение.Количество   = ТекСтрокаТовары.Количество;
КонецЦикла;

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

evt_alex

Так как имеется расход, списание товара, дополнительно необходимо реализовать контроль отрицательных остатков и для клиент-серверного варианта работы - использовать механизм управляемых блокировок. Здесь не показано.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск