powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / принцип склада первым пришёл, первым ушёл
16 сообщений из 16, страница 1 из 1
принцип склада первым пришёл, первым ушёл
    #39948575
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Вот возник вопрос.

У меня есть БД на access.
Есть 3 таблицы
1.Поступление
Код товара, количество, цена, дата, код склада

2.Списание
Код товара, количество,дата, код склада

3.Перемещение со склада на другие склады
Код товара, количество,дата, код склада отправителя, код склада получателя

Дело в том, что мне нужно знать состояние склада по цене о том количестве и цене которая осталась. Не просто по цене товара а по цене, и количестве что осталась на складе, так как цена меняется. Количество меняется по списанию и поступлению в кубометрах и не в ровном количестве так как ведётся учёт кубометров брёвен и досок. Мне нужна подсказка как организовать модель либо написать код на VB с пересчётом в дополнительную таблицу. Какие идеи братцы?
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948589
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarok, цена товара на складе - средневзвешенная, цена товара по приходу LIFO.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948601
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, про ЛИФО прочитал.
А как это реализуется в Access?
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948685
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarok,
стоимость остатков сложили с приходом и поделили все на общее количество.
а реализуется это сложнее чем обычно. поскольку нужно иметь ввиду 2 цены - для прибыли цена на складе, для прогнозов и пр. цена последнего прихода.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948704
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первым пришел - первым ушел - это FIFO (first in, first out), а не LIFO...
Хотя бы Вики почитали...
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948720
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7i,

Действительно. На самом деле реализация очень сложна запросами и я видел что кто то использует Tsql.
Я решил написать vb код который перенесёт данные в дополнительную хранимую таблицу и я смогу узнать цену по остаткам, но что на конкретную дату пока не придумал как реализовать таблицу, в которую будет вносить данные мой код.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948727
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarok,

Сталкивался с подобной задачей в 2010 в СУБД Оракл. Год имеет значение в том смысле, что было тогда в Оракле, может теперь есть и в Аксцессе.

Там радиоактивные отходы помещались в контейнеры и удалялись. Они там разного типа. И заказчик хотел иметь возможность знать состояние на контейнера на дату.

Тут как бы межстрочные вычисления (навигация), которые не предполагает реляционная модель данных. Поэтому чтобы остаться в рамках SQL нужны какие-то дополнительные его расширения. У Оракла уже тогда были аналитические ф-ии. Но не просто аналитические ф-ии, а возможность создавать пользовательские. Эти ф-ии как бы реализовывают некоторые возможности межстрочных вычислений, но стандартных для этой задача не хватило. Я даже назвал ф-ю типа POPUP (точно уже не помню).


Т.е. как вариант, посмотреть в последних версиях аксцесса есть ли аналитические ф-ии вообще, и поддерживаются ли пользовательские.

Или еще что-то эдакое в плане запросов в Аксцессе.
Например, в Аксцессе в QBE было, например, эдакое - запросы, возвращающие кросс таблицы. Может и еще что-то налабали.

Иначе, скорее всего, придется переходить к решениям, выходящим за рамки SQL, QBE: наверное, получать Рекордсеты в VB(Васик) и ходить в циклах там между строками.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948740
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо городить огороды с пользовательскими функциями. Всё равно всё не так просто...
Хотя, метод FIFO легко организуется средствами SQL.

Добавьте таблицу склада (остатков). Там, кроме прочих, должны быть поля цены прихода (закупки), количества,
номер партии (по сути, порядковый номер), ссылка на документ прихода и т.д. (что понадобиться по логике).
При приходе, если есть остатки того же предмета, всё равно создается новая запись и её номер партии увеличивается на 1
от максимального по остаткам этого предмета.
Если остатков нет, номер партии равен 1.
При расходе выбирается предмет с меньшим номером партии (элементарной сортировкой остатков по предмету).
Если по текущей строке остатков недостаточно, также выбирается следующая строка. И т.д. и т.п.
Естественно, при расходе нужные строки склада модифицируюся (уменьшается количество).
При достижении нулевого количества, строка удаляется.

Это всё элементарная база построения попредметного учета с документопотоком.
Для начала достаточно таблиц:
- предметы (объекты)
- склад
- заголовки документов
- строки документов
- справочники (коды документов, субъекты и т.п.)

К субъектам относятся места хранения, клиенты, поставщики и т.п.
Все документы - приходные, расходные, вспомогательные (перемещения и т.п.) храняться в указанных
таблицах. Цепочки последовательности документов (история документопотока) организуются через ссылку
на предыдущий документ в заголовке документа. Строки документов не дублируюся, а привязаны к заголовку последнего
документа.

Это, очень коротко, основные вехи... просто небольшой толчок для осмысления задачи...
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948742
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i,

Вроде, там на дату: надо ответь сколько оставалось в любой момент в прошлом. Т.е. тогда, вроде, надо хранить историю состояний склада. И поддерживать. Если я правильно понял.

В моем случае пользовательская функция оказалась самым "ленивым" решением. Ведь информация уже есть в схеме. Остается ее извлечь как-то.

Впрочем, написал просто про возможный вариант. Не настаиваю. Проектировщик часто стоит перед альтернативами.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948743
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7i, народ использует FIFO ,партионный учет-но это уровень курсовиков, здесь же речь как про разработку - а это по другому.
в бизнесе используется последняя цена прихода - а это "Last in First Out" - LIFO.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948746
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleckoв бизнесе используется последняя цена прихода - а это "Last in First Out" - LIFO.

А текущее налоговое законодательство это разрешает?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948748
IRagnarok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alecko,

Думаю FIFO больше подойдёт, так как у меня пришла доска по одной цене в кубометрах(посчитаем как количество)
А потом пришла такая же по другой цене в кубометрах. На складе даже при одинаковых параметрах это будет 2 разных доски с 2 разными ценами в остатках, а при продаже/использовании будет списываться первая по приходу доска.

Допустим:
Опустим сейчас дату
Приход:
Доска 2.5 кубометра 100 руб
Доска 3 кубометра 150 руб

Продажа:
Доска 4 кубометра = ? (тут уже идёт 2.5 доски за 100 руб и 1.5 доски за 150 руб)
Количество то нечётное.
Я решил написать код который будет генерировать подтаблицу к продажам и разбивать остатки партий прихода до нужного количества.
Использую Vb скрипт.

Даже если это ЛЕНИВОЕ решение то поверьте, организовав всё через вычисляемые таблицы они долго не прослужат, так как информации очень много и МОЖНО найти решение, но потом база будет тупо виснуть от такого "Велосипеда"
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948750
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IRagnarok,
1. Таблица склада позволяет легко получать текущее состояние (остатки) предметов.
2. Прошлые состояния (на любую дату) получают алгебраическим суммированием текущих остатков и
истории движения (документы и их строки). Приход вычитается, расход прибавляется. Естественно, что в заголовках
документов (движение) есть дата.

Если у Вас боевая, а не учебная задача, то указанная Вами структура, мягко говоря, нерациональна.
У Вас три указанные таблицы (см. первое сообщение) являются, по сути, строками документов.
Их можно объединить в одну таблицу. Но нужна ещё таблица заголовков, номенклатура (предметы), склад,
справочные таблицы (как я и писал).
Тогда и всякие FIFO легко строить. И не надо никаких вычисляемых таблиц. Всё делается хранимыми
процедурами и довольно быстро.

P.S. Рассждения здесь о том, что бизнесу нужна только последняя цена закупки, мне вообще кажутся какой-то дичью...
Для оперативного расчета цены продажи нужна средневзвешенная цена закупки. Все более-менее серьезные системы
учета (продажи) работают по средневзвешенной цене. Не в обиду было сказано...
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948779
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

А текущее налоговое законодательство это разрешает?

для текущего налогового законодательства есть средневзвешенная цена остатков, LIFO исключительно для зарабатывания денег-счета, кп, прогнозы изменения цен и пр.
IRagnarok, т.е доски из одной партии, цена которых привязана скажем к баксу, купленные в разное время это 2 разных доски? что-то здесь не то. Это пока цветочки, Вы ещё доберетесь до момента, когда склад получателя вернет часть продукции отправителю.
тем не менее успехов в разработке.
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39948818
qwertEHOK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсть 3 таблицы
1.Поступление
Код товара, количество, цена, дата, код склада

2.Списание
Код товара, количество,дата, код склада

3.Перемещение со склада на другие склады
Код товара, количество,дата, код склада отправителя, код склада получателя

это все 1 таблица

ID операции, Тип Операции, Номер_Накладной, Дата, пользователь

а уже в таблице накладных у вас и цена и код склада

Для каждого изменения цены делайте таблицу переоценки
...
Рейтинг: 0 / 0
принцип склада первым пришёл, первым ушёл
    #39951591
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то все изобретают велосипеды.
На форуме была ОГРОМНАЯ тема про проектирование БД для склада.
Там обсосано ФСЁ. И ФИФО и ЛИФО.

Ищите
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / принцип склада первым пришёл, первым ушёл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]