Когда требуется изменить единицу хранения остатков в справочнике номенклатуры, не всегда понятно, что и в какой последовательности делать, когда по данной номенклатуре уже есть движения в регистрах.
Когда это пара документов, недавно введенных, здесь все ясно: отменяем проведение документов, меняем единицу хранения остатков, перезаполняем документы и проводим их. Но когда документов более сотни, да еще в закрытом периоде, в который лезть нельзя? Заводить новую номенклатуру - теряем данные по продажам.
В общем, предлагаю решение в виде алгоритма, который можно использовать для написания своих обработок.
Но предварительно рассмотрим пример из реальной жизни.
Номенклатура (назовем ее «Строительный материал»), как правило, поставщиком продается в метрах кубических, да и заказчик, делая заявку, тоже оперирует кубическими метрами.
Пользователи, естественно, ввели Базовую единицу – м3.
Единица хранения остатков сформировалась как м3 и Коэффициент = 1; (напомню, что коэффициент это количество Базовых единиц в одной единице измерения). Но все дело в том, что данный стройматериал поставляется в паллетах по 10 упаковок по 15 листов в упаковке. Каждый лист имеет размеры 1100х580х55 мм. Соответственно на складе кладовщики реально оперируют не метрами кубическими, а паллетами, упаковками, а потом еще и в розницу стали листами отгружать. Исходя из этого логично было сделать единицей хранения остатков - «Лист», как минимальную единицу измерения.
Но что было сделано в итоге:
№ |
Наименование |
Коэфф. |
М3 |
1 |
|
Лист |
0,03509 |
|
Упаковка |
0,52635 |
|
Паллет |
5,2635 |
Из примера видно, что разрядность у «Коэфф» после нуля достигает 5 знаков. В типовом решении разрядность коэффициента только три разряда после запятой, но если их отбросить, то некорректно будут считаться остатки. (В моем случае клиент пошел на то, что изменили разрядность, как количества, так и коэффициента до 6 знаков и внесли изменения в проведение документов).
Собственно, перед нами задача описать алгоритм перевода из метров кубических в листы и получить следующую картину:
№ |
Наименование |
Коэфф. |
М3 |
28,498 (1/0,03509) |
|
Лист |
1 |
|
Упаковка |
15 |
|
Паллет |
150 |
- Во всех записях регистров накопления и бухгалтерии по нашей номенклатуре изменяем количество. Для пересчета используем формулу: Количество(новое) = Количество(из регистра) *Коэфф (старой ед.хран.)/Коэфф(новой ед.хран.);
- Меняем в карточке Номенклатуры единицу хранения остатков на новую.
- Устанавливаем новую базовую ед. изм. из единицы хранения остатков.
- Пересчитываем коэффициенты всех ед. измерения номенклатуры по формуле: К = К / Кнов.ед.изм ;
№ |
Наименование |
Коэфф. |
М3 |
1/0,03509 = 28,498 |
|
Лист |
0,03509/0,03509 = 1 |
|
Упаковка |
0,52635/0,03509 = 15 |
|
Паллет |
5,2635/0,03509 = 150 |
5. Обновляем коэффициент в табличных частях документов (саму ед. изм. в документе не меняем, пересчетов количества не производим)
Для того, чтобы записывать без ошибок наборы записей регистров, объекты справочников и документов, устанавливаем признак ОбменДанными.Загрузка = Истина;