Раз в неделю мы с заботой отбираем самые полезные новости для пользователя 1С!
Служба заботы ООО "Инженер-Центр" :)
Волжский
|Волгоград
|Камышин
Есть в 1С:Управление Торговлей такая хорошая штука. Там контроль остатков товаров можно устанавливать на разных уровнях. Можно по складу и организации. Тогда всё будет хорошо и правильно – программа не даст списывать товар, если его нет на складе у этой организации. Можно отключить контроль остатков в целом по организации. Тогда если организация будет отгружать товары с какого-то склада, то программа будет ориентироваться на общий остаток товара на этом складе.
Пример: наша организация «А» отгружает 10 штук товара со склада Главный. За самой организацией «А» на этом складе числится 3 штуки товара и 7 штук за другими организациями (за «Б» - 4 штуки и за «В» - 3 штуки). Программа отгрузит 10 штук товара от организации «А», причём теперь за организацией будет числиться отрицательный остаток – (минус) – 7 штук. За другими организациями («Б» и «В») так и останется те же плюс 7 штук. В целом по складу Главный будет 0 штук товара. То есть при отгрузке мы будем отгружать столько товара, сколько есть на складе Главный, а не у данной организации «А» на этом складе. Чтобы выровнять ситуацию с отрицательными остатками мы должны продать товар со склада Главный от других наших организаций «Б» и «В» нашей организации «А».
То есть сделать Расходные Накладные от организаций «Б» и «В» в адрес организации «А». И отдельно сделать Приходные Накладные в организации «А» от организаций «Б» и «В».
И тут начинается головная боль. Как правило, своих организаций немало – обычно не меньше пяти штук. Складов тоже хватает. Продажи идут одна за одной, и разбираться товар, чьей организации и от кого продан времени нет. Можно оформлять документы на перепродажу от одной нашей организации к другой – день в день. Но это не очень рационально.
Пример: на складе Главный лежит 10 штук товара, 1 штука за организацией «А», 9 штук за организацией «Б». Десять дней подряд у организации «А» покупают этот товар по 1 штуке в день. Если будем оформлять перепродажи каждый день, то придётся оформить 9 документов Расхода и 9 документов Прихода. А если будем оформлять перепродажу через десять дней, то увидим, что на второй день можно сделать одну перепродажу от «Б» к «А» на все 9 штук недостающего товара. И всё. У «А» сразу весь нужный товар в наличии и всё хорошо. Дополнительных перепродаж не нужно. В результате оформлено два документа вместо 18.
Из примера вроде бы всё понятно. Закрывать отрицательные остатки перепродажами лучше не ежедневно, а за какой-то выбранный период. И алгоритм решения этой задачи тоже вроде бы очевиден. Посмотрели остатки на начало периода: организация «А» - 1 штука, организация «Б» - 9 штук. Посмотрели остатки на конец периода: организация «А» - минус 9 штук, организация «Б» - плюс 9 штук. Сделали продажу от «Б» к «А» на начало периода. Вот и весь анализ.
Но это неполный анализ. Представим себе, что идёт четвёртый день продаж: у организации «А» - минус 2 штуки, у организации «Б» - 9 штук. И тут организация «Б» продаёт 7 штук своего товара и в этот же день ей приходит 7 штук этого же товара. На конец периода картина та же: «А» - минус 9 штук, «Б» - плюс 9 штук. Но мы не можем сделать перепродажу от «Б» к «А» на начало периода на все 9 штук. Потому что на четвёртый день получиться, что «Б» нечего будет продавать – у неё не будет нужных 7 штук – они уже у «А». Можно конечно сделать обратную продажу от «А» к «Б» требуемых 7 штук товара. Потом опять продажу от «Б» к «А» на 7 штук. Но это увеличивает обороты между нашими организациями, а нам этого не надо. Правильно было бы теперь сделать две продажи от «Б» к «А»: одна продажа во второй день на 2 штуки, вторая продажа в четвёртый день на 7 штук. Это был бы рациональный вариант.
Становится понятно, что по одним начальным и конечным остаткам товаров за выбранный период мы не получим всей нужной информации для рационального закрытия отрицательных остатков. Нужно перебирать весь выбранный период по всем движениям товара, которые в этом периоде были.
Попробуем это сделать. Итак, день первый: «А» продаёт 1 штуку, товара ей хватает. День второй: «А» продаёт одну штуку, товара не хватает. Надо сделать в этот же день продажу от «Б». Пока на 1 штуку. Запомним этот день – это второй день. День третий: «А» продаёт 1 штуку, опять не хватает, опять нужна продажа от «Б». Теперь уже всего нужно продать от «Б» две штуки. И эти две штуки мы можем продать датой второго дня.
День четвёртый: «А» продаёт одну штуку, опять не хватает, опять продажа от «Б». Всего надо забрать от «Б» - уже три штуки, у «Б» остается 6 штук. И тут, в этот же четвёртый день, следом идет продажа 7 штук от самой «Б». А у «Б» только 6 штук. 1 штуку мы только что отдали «А». Отнимем эту 1 штуку у «А». Для продажи от «Б» к «А» у нас набралось 3 штуки, одну вернём назад, получается, что мы набрали всего 2 штуки для продажи. То есть второго дня мы можем продать от «Б» к «А» только две штуки. Теперь у нас следом идёт приход на «Б» 7 штук, и можно продолжить. Вот теперь мы снова запоминаем четвёртый день – день, когда мы можем сделать продажу от «Б» к «А». И начинаем снова накапливать количество, которое мы можем продать этим четвертым днём. 1 штуку продать можем.
День пятый – десятый: «А» продаёт по 1 штуке, эту штуку мы забираем у «Б». Накапливаем количество, которое мы можем продать от «Б» начиная с четвёртого дня. К концу 10 дня у нас набирается 7 штук. Это количество мы можем продать четвёртым днём. Получаем, что мы должны сделать две продажи от «Б» к «А»: вторым днём – 2 штуки, четвёртым днём – 7 штук.
Итак, едва начав решать задачу закрытия отрицательных остатков – мы сразу же столкнулись с трудностями. И возможно столкнёмся ещё. Поэтому прежде чем развивать красоту своей мысли – задумаемся над тем, чем можем затрудниться. Понятно, что мы начинаем перебирать наши остатки, начиная с какой-то даты, пока вдруг не увидим, что в результате очередной расходной накладной (с одной из наших организаций и с одного из наших складов) мы вдруг получаем по этой организации и складу отрицательный остаток.
Сразу же из этого железного правила сделаем вывод: если остатки любого товара по каждому складу в целом больше или равны нулю, то и по всем организациям остатки этого товара тоже больше или равны нулю. Это понятно – сумма всех складов это же и есть сумма всех организаций. Если части больше или равны нулю, то и сумма частей будет больше или равна нулю. Причём это должно соблюдаться в каждый момент времени.
Вот мы попадаем в какой-то расходной накладной на какой-то товар и видим, что по этой организации и складу у нас «минус». Нам ровно перед этой расходной накладной надо закрыть этот возникающий «минус». На эти организацию и склад перебрасываем недостающее количество товара с других организаций и складов.
Казалось бы, чего проще – посмотрел у какой организации, на каком складе товара больше всего и взял, сколько нужно оттуда. Но это недальновидное решение. То есть, нам надо смотреть в даль. Ведь мы рассматриваем период времени, за который у нас были и приходы и расходы. А вдруг мы возьмём сейчас столько, сколько нам нужно, а нам в следующий период времени не хватит. Ну, например, смотрим период из пяти дней, во второй день забираем с какой-то организации и склада 100 штук для закрытия текущего «минуса». А когда доходим до пятого дня, то видим, что там уже по этому складу был полный ноль, а мы в «прошлом» сняли 100 штук и теперь на складе минус 100. Мы нарушили наше железное правило – склад стал отрицательным.
Сразу вывод: если мы закрываем наши отрицательные остатки на каком-то периоде времени, то нам надо следить, чтобы наши переброски с организации на организацию не повредили «в будущем» неотрицательному остатку по складам в целом. То есть нам надо знать полный остаток товара «минус», которого мы закрываем по всем складам. Причем на момент каждого движения этого товара за период, который мы анализируем. И даже проще – нам надо знать – какой минимальный остаток этого товара был на каждом складе за период от момента нашего «минуса» до конца нашего анализа. Поясним – мы смотрим пять дней, во второй день «ловим минус» - надо смотреть какой минимальный остаток товара был от того момента как мы «поймали минус» до конца пятого дня. Вот этот минимальный остаток по складу нам превышать нельзя, иначе склад уйдёт в «минус».
Поэтому когда будем забирать товар (для закрытия «минуса») с чужого склада – нам надо смотреть – не превышаем ли мы минимальный остаток этого товара в уже состоявшемся «будущем». Причём наталкиваемся вот на такую интересную штуку. Мы не можем анализировать любой отрезок времени.
Поясним. Возможно, мы работаем в июне, и знаем, что наделали отрицательных остатков в мае и пока ещё их не закрыли. Так вот мы не сможем закрыть май отдельно, не анализируя ситуацию июня. Ведь если мы отработаем только отрезок мая, то где гарантия, что мы после наших перебросок не ушли в «минуса» где-то в июне. То есть, когда мы начинаем наш анализ – мы вынуждены его делать от выбранной точки времени и до конца нашей работы. То есть до сегодняшнего дня. И это без вариантов. Иначе запросто получим «минуса» по складу за пределами анализируемого периода. А этого допустить никак нельзя!
Вот такой непростой анализ получается. Надо смотреть не только на остатки в той точке, где у нас возник «минус», но и анализировать – как наши переброски повлияют на идущие после них движения этого товара. Причём смотреть это надо по всем организациям и до сегодняшнего момента.
Ну, допустим, посмотрели мы минимальные остатки по складам от точки закрытия и до сего дня, взяли самый большой остаток. То есть со складом, откуда будем брать товар для закрытия «минуса» мы определились. Надо теперь определяться с организацией, у которой мы этот товар будем забирать. Опять возникает дилемма. На момент закрытия нашего «минуса» мы, конечно, легко получим все остатки нужного товара по выбранному складу в разрезе наших организаций, хранящих товары на этом складе. Опять возникает соблазн взять самый большой остаток. Но тут же возникает опасение, а как это скажется на будущих остатках организации, у которой мы берём товар на выбранном складе?
То, что в будущем положительный остаток нашей организации вдруг станет отрицательным из-за наших перебросок – это не очень большая беда. Мы его закроем, так же как закрываем текущие отрицательные остатки. Однако и тут хотелось бы выбрать какие-нибудь разумные ограничения.
Мы предлагаем ввести ограничение при выборе организации, от которой будем забирать товар. Нам надо знать минимальные положительные и максимальные отрицательные остатки по организациям. От момента, когда забираем товар для переброски и до конца. Зачем? Минимальные положительные остатки по организациям и складу надо знать, чтобы не выходить на новые «минуса» по организациям. Максимальные отрицательные остатки по этой организации надо знать, чтобы избегать забора товара с уже «минусовой» организации. Хотя может сложиться ситуация когда максимальные отрицательные остатки есть на всех организациях. Тогда хотя бы выбирать наименьший из максимальных отрицательных остатков у организаций.
Теперь мы видим, что для правильного анализа закрытия отрицательных остатков нам надо собрать немало предварительной информации.
1. Надо пройтись по всем движениям всех товаров, которые имеют отрицательные остатки. Причём период прохода надо брать от выбранной даты до сегодняшнего дня. С этими движениями нам надо будет работать.
2. Надо собрать минимальные остатки по всем складам от момента возникновения каждого «минуса» до сегодняшнего дня. Для контроля остатков по складу.
3. Надо собрать минимальные положительные и максимальные отрицательные остатки по организациям и складам от момента возникновения каждого «минуса» до сегодняшнего дня. Для выбора организации, с которой будем забирать товар для закрытия «минуса».