powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Какой принцип сохранения данных выбрать
71 сообщений из 71, показаны все 3 страниц
Какой принцип сохранения данных выбрать
    #33381298
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Многоуважаемый All, помогите выбрать принцип организации сохранения данных. Документы, такие как Клиенты, Поставщики, Накладные будет иметь кнопки “Сохранить”, “Отмена”. Клиент пишется на Delphi, база MS SQL Server. В общем, остановились на двух вариантах, но интересует ваше мнение относительно только накладных:

1) Вся инфа сразу пишется в базу, т.е. при создании, редактировании, удалении продукции из накладной все это сразу попадает в базу, где срабатываю триггеры, и сразу обновляются таблицы складских остатков. Затем, если тыкается кнопка “Сохранить”, то ничо не делается - типа все сохранено :) и закрывается окно, “Отмена” – длается дикий откат, ведь все надо восстановить в первоначальное состояние.

Преимущества: остатки правятся автоматом триггерами
Недостатки: по сути, вообще некорректный подход, т.е. документ появляется в базе, но кнопка Save еще не нажата; если зависает прога, то документ так и остается, хотя он не был сохранен; Если корректно восстанавливать остатки после “Отмена”, то всю служебную инфу остатков тоже надо куда-то засасывать, а не только ProdID, Qty.

2) Вся инфа по редакированию данных накладной кешируется на клиенте и только когда пользователь тыкает “Сохранить” данные пишутся на сервер, НО тут возникает такая проблема, как заблокировать количество продукции для накладной, ведь данные сразу не пишутся в базу. Возникла такая идея, записывать инфу о продукции из не сохраненных накладных во временную таблицу, так чтоб видели все сессии, а остатки всегда должны рассчитываться с учетом данных в этой временной таблице.

Преимущества: накладная либо пишется, либо нет,
Недостатки: не совсем понятен механизм резервирования остатков во временной таблице, например, если прога зависла, как сделать чтоб данные этой сессии исчезли.

Интересны Ваши мысли по этому поводу, и если есть опыт поделитель, пожалуйста, кто как такое делает.

Alex.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33381350
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Губо говоря, кнопок должно быть три - Отменить, Сохранить , Выполнить.
Все изменения в учетных регистрах - по Выполнить.
Ищите по форуму - про документы было...
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33381468
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне второй вариант кажется единственно возможным.

Alex UstasНО тут возникает такая проблема, как заблокировать количество продукции для накладной, ведь данные сразу не пишутся в базу.
Эта проблема большей частью надумана. Вдруг все 100 продавцов кинутся одновременно продавать последний чайник со склада. Это (в реале) бывает нечасто или у вас много продавцов и мало товара. Лечится установкой условия на количество>0 и реакцией программы, на исключительную ситуацию.

ИМХО все.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33381504
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависи от того, в какой области работает система.
Иногда лучше разделить на провести-распровести.
Для некоторых областей лучшим вариантом будет проведение данных сразу при сохранении.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33381525
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СерегаЭта проблема большей частью надумана.
А за меньшую часть разработчик получает по шее

СерегаВдруг все 100 продавцов кинутся одновременно продавать последний чайник со склада. Это (в реале) бывает нечасто
Если торговать неходовым дешевым товаром, то нечасто. Если недешевым и в хорошем ассортименте - по многим позициям завоз составляет несколько штук (собственно, всего месяц назад два продавца чуть не передрались из-за того, что один из них продал мне последнюю материнку). Если ходовым.. вспоминаю рассказ одного из заказчиков, как ему пришлось объяснять подъезжавшим браткам, что заказанные ими по телефону новейшие понтовые мобильники закончились на складе.

СерегаЛечится установкой условия на количество>0 и реакцией программы, на исключительную ситуацию.
Настолько гениально, что нуждается в дополнительных пояснениях. Хотя бы - установкой куда и на какое именно количество.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33381611
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerА за меньшую часть разработчик получает по шее
От этого все равно не уйти. Главное оплату полностью получить.

softwarerЕсли торговать неходовым дешевым товаром, то нечасто......
Тут и правда надо уточнить кто чем и как торгует. И не путать систему заказов с отгрузкой.

softwarerНастолько гениально, что нуждается в дополнительных пояснениях. Хотя бы - установкой куда и на какое именно количество.
Так на остаток и устанавливается. Можно блокировать минуса, можно предупреждение выдавать, если минуса допустимы. Это по условиям надо смотреть.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33382655
Фотография vma_mnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант сделал так, что все сразу пишется во вспомогательные таблицы, которые практически являются копией рабочих.

Тогда сохранить - хранимка в трансакции переписывает данные в рабочую и удаляет во вспомогательной (здесь можно и остатки переписать, хотя я повесил триггер на рабочие)

Отменить - просто удаление из вспомогательных.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33383026
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет решения. Только организационные.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33383336
Может быть ввести понятие резервирование товара? Плюс разделить на тех кто резервирует и тех кто отпускает. Менеджер резервирует товар. Дальше на скаладе отпускают в порядке поступления и приоритетов менеджеров, например наиглавнейший менеджер может перебить своим заказом заказ какого нибудь поменьше. Я встречался с таким вариантом в фарм. компании, когда резервировали товар несколько человек, а отпуском занимались другие. Резервирование товара не значит что покупатель его гарантировано получит. Гарантии ему могут дать только в момент отгрузки.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33383367
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну очень похоже :)
http://www.sql.ru/forum/actualthread.aspx?tid=145611&hl=%e7%e0%e4%e0%f7%ea%e0#1179068
Правда можно решить еще легче используя SET LOCK TIMEOUT NOT WAIT.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33383417
В догонку. Резервирование товара позволяет как бы разделить процесс во времени. Сначала резервируем из того что есть (остатки минус резерв), затем отпускаем то что зарезервировано.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33384467
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому интересно, как будем делать:

Основополагающий принципы:
- Кеширование самой накладной на сервере
- Короткая транзакция записи
- Резерв продукции в специалной таблице резервов
- Расчет отстатков продукции с учетов таблицы резервов

1) Резерв

При указании кол-ва продукции в накладной, запускается sp
с параметрами SessionID, GUID, PoductID, Qty, где
SessionID - сессия
GUID - уникальный номер, ведь в рамках сессии может быть несколько одноврмеменно набираемых докуметов
PoductID - код продукции
Qty - кол-во

При это, если есть достаточное кол-во продукции, то заносится необходимая инфа в таблицу резерва

2) Сохранение данных

При сохранении, можно выполнить код как на стороне клиента, так и триггерами. В случае триггера
GUID придется писать в шапку накладной. При этом по данным в резерве обновляется склад и очищается резерв.

3) Отмена изменений

Очищается резерв

4) Подсчет остатков, чистка зависших сессий.

При подстчете остатков, необходимо смотреть, все ли сесии в резерве активны,
и если есть подвисшие то кдалять их, и затем считать остатки.

Alex.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33384478
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex UstasЕсли кому интересно, как будем делать:

Основополагающий принципы:
- Кеширование самой накладной на сервере
- Короткая транзакция записи
- Резерв продукции в специалной таблице резервов
- Расчет отстатков продукции с учетов таблицы резервов

Alex.

апшипка, читать так:

Основополагающий принципы:
- Кеширование самой накладной на клиенте
- Короткая транзакция записи
- Резерв продукции в специалной таблице резервов
- Расчет отстатков продукции с учетов таблицы резервов
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33388914
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин Черный плащ абсолютно прав - Alex Ustas ИМХО ошибочно объединил два процесса: процесс резервирования товара и процесс фактической отгрузки.

Накладная не должна использоваться как документ резервирования - она предназначена (в бухучете) для фиксации момента фактического перехода права собственности на товарно-материальные ценности.

Процесс резервирования производится документом "Заказ покупателя". Для того, чтобы избежать ситуации, когда один и тот-же товар оказывается зарезервирован несколькими sales-managers используется механизм "регистр заказов", в котором фиксируются все действующие заказы. При проведении документа "заказ покупателя" проверяется количество товара на складе и количество заказанного. в случае превышения заказов над фактическими остатками включается механизм "заказ поставщику на основании заказа покупателя".

В некоторых случаях целесообразно формировать движение по регистру "Заказы покупателей" сразу же по окончанию ввода строки в документ "Заказ покупателя". Это позволит действовать по принципу "Кто успел, тот и съел" при большом количестве sales-managers.

При реализации данного алгоритма также возникают интересные коллизии, но и их можно решить без появления эксцессов типа "обманутые братки", то бишь заказчики.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33389950
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrryMcAГосподин Черный плащ абсолютно прав - Alex Ustas ИМХО ошибочно объединил два процесса: процесс резервирования товара и процесс фактической отгрузки.

Накладная не должна использоваться как документ резервирования - она предназначена (в бухучете) для фиксации момента фактического перехода права собственности на товарно-материальные ценности.

Процесс резервирования производится документом "Заказ покупателя". Для того, чтобы избежать ситуации, когда один и тот-же товар оказывается зарезервирован несколькими sales-managers используется механизм "регистр заказов", в котором фиксируются все действующие заказы. При проведении документа "заказ покупателя" проверяется количество товара на складе и количество заказанного. в случае превышения заказов над фактическими остатками включается механизм "заказ поставщику на основании заказа покупателя".

В некоторых случаях целесообразно формировать движение по регистру "Заказы покупателей" сразу же по окончанию ввода строки в документ "Заказ покупателя". Это позволит действовать по принципу "Кто успел, тот и съел" при большом количестве sales-managers.

При реализации данного алгоритма также возникают интересные коллизии, но и их можно решить без появления эксцессов типа "обманутые братки", то бишь заказчики.

не, никакой ошибки нет, резервирование идет только под накладную и в процессе создания накладной, для пользователя абсолютно прозрачно и он об этом не подозревает. Это необходимо чтоб не использовать длинные транзакции, т.е. если использовать штатные средатва, то нормальной рабочей проги не получиться, это что-то вроде попытки обмануть природу ;)

А по поводу резервирования Заказом, тут просто такая штука, прога на западный рынок, и у них есть такое понятие как backorders - т.е. недопоставленная продукция, т.е. на основание invoice в который не полностью покрывает sales order можно сгенерировать backorder - т.е. что необходимо допоставить, и усе, нормальная практика.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33389989
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А по поводу резервирования Заказом
Понятно. Схема в данном случае может быть и с накладной. Зависит исключительно от бизнес-процесса. Ничего в этом случае сказать не могу - т.к. не знаю Ваш бизнес процесс.

>>не, никакой ошибки нет, резервирование идет только под накладную и в
>>процессе создания накладной, для пользователя абсолютно прозрачно и он
>>об этом не подозревает. Это необходимо чтоб не использовать длинные
>>транзакции, т.е. если использовать штатные средатва, то нормальной
>>рабочей проги не получиться, это что-то вроде попытки обмануть природу ;)

Можно подробнее? Какие "штатные средства" и откуда возникли "длинные" транзакции?
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390104
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrryMcA>А по поводу резервирования Заказом
Понятно. Схема в данном случае может быть и с накладной. Зависит исключительно от бизнес-процесса. Ничего в этом случае сказать не могу - т.к. не знаю Ваш бизнес процесс.

>>не, никакой ошибки нет, резервирование идет только под накладную и в
>>процессе создания накладной, для пользователя абсолютно прозрачно и он
>>об этом не подозревает. Это необходимо чтоб не использовать длинные
>>транзакции, т.е. если использовать штатные средатва, то нормальной
>>рабочей проги не получиться, это что-то вроде попытки обмануть природу ;)

Можно подробнее? Какие "штатные средства" и откуда возникли "длинные" транзакции?

Ну, имеется ввиду, что задача не может быть решена в лоб, т.е. надо или логически разбивать процесс, на как тут предлагили резервирование, или как Вы предлагали Заказ, или в рамках устоявшегося процесса придумывать какие-то подпорки. Мы пошли по пути подпорок, так понятней и проще конечному пользователю. Т.е. мы хотим, чтоб накладная до сохранения могла под себя подгребать продукцию и другие пользователи уже немогли ее использовать в своих накладных, но тем не менее, пользователь всегда должен иметь возможность нажать Cancel - и все должно откатиться в первоначальное состояние. Транзакции используется короткая, тока на момент записи, когда нажимается кнопка Save.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390126
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Т.е. мы хотим, чтоб накладная до сохранения могла под себя подгребать продукцию и другие пользователи уже немогли ее использовать в своих накладных, но тем не менее, пользователь всегда должен иметь возможность нажать Cancel - и все должно откатиться в первоначальное состояние. Транзакции используется короткая, тока на момент записи, когда нажимается кнопка Save.

Вполне нормальное решение, а не "подпорки" ИМХО.

В аналогичной ситуации было сделано таким образом, что товар резервировался даже не в момент окончания ввода строки с товаром/количеством/суммой в документ, а в момент выбора товара в справочнике номенклатуры (количество задавалось сразу в диалоге) и при изменении количества товара в табличной части документа.

Естественно - при отмене проведения документа или закрытии его без сохранения резерв аннулировался.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390219
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вас спасет ручная оптимистическая / пессимистическая блокировка. Оптимистическая - это что-то похожее на Ваш вариант 1, т.е. в базе может храниться несколько версий данных, при сохранении проверяется, редактировались ли сохраняемые данные за время, пока у вас открыта форма кем-либо. Если да, возникает конфликт (правила разрешения конфликта на вашей совести, т.е. можно последнюю введенную запись оставить или первую, или по времени начала редактирования отсекать). Оптимистическая предполагает, что таких конфликтов будет мало.
Пессимистическая наоборот предполагает, что их будет много, т.е. при редактировании накладной она должна на логическом уровне блокироваться, чтобы никто другой не смог ее редактировать. Т.е. если вы начали редактировать накладную это будет означать, что товары, которые в ней присутствуют, заблокированы, и никто не может изменить их количество или другие параметры на время редактирования.
Я бы предпочел вариант с оптимистической блокировкой, хотя он и немного сложнее в реализации, т.к. насколько я понимаю вероятность возникновения конфликтов невысокая.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390309
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrryMcA>>Т.е. мы хотим, чтоб накладная до сохранения могла под себя подгребать продукцию и другие пользователи уже немогли ее использовать в своих накладных, но тем не менее, пользователь всегда должен иметь возможность нажать Cancel - и все должно откатиться в первоначальное состояние. Транзакции используется короткая, тока на момент записи, когда нажимается кнопка Save.

Вполне нормальное решение, а не "подпорки" ИМХО.

В аналогичной ситуации было сделано таким образом, что товар резервировался даже не в момент окончания ввода строки с товаром/количеством/суммой в документ, а в момент выбора товара в справочнике номенклатуры (количество задавалось сразу в диалоге) и при изменении количества товара в табличной части документа.

Естественно - при отмене проведения документа или закрытии его без сохранения резерв аннулировался.

просто для этого механизма придется организовывать отдельную таблицу под резервы и инфраструкту для поддержания. это и есть подпорки.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390332
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladiChВас спасет ручная оптимистическая / пессимистическая блокировка. Оптимистическая - это что-то похожее на Ваш вариант 1, т.е. в базе может храниться несколько версий данных, при сохранении проверяется, редактировались ли сохраняемые данные за время, пока у вас открыта форма кем-либо. Если да, возникает конфликт (правила разрешения конфликта на вашей совести, т.е. можно последнюю введенную запись оставить или первую, или по времени начала редактирования отсекать). Оптимистическая предполагает, что таких конфликтов будет мало.
Пессимистическая наоборот предполагает, что их будет много, т.е. при редактировании накладной она должна на логическом уровне блокироваться, чтобы никто другой не смог ее редактировать. Т.е. если вы начали редактировать накладную это будет означать, что товары, которые в ней присутствуют, заблокированы, и никто не может изменить их количество или другие параметры на время редактирования.
Я бы предпочел вариант с оптимистической блокировкой, хотя он и немного сложнее в реализации, т.к. насколько я понимаю вероятность возникновения конфликтов невысокая.

ну, тут как бы проблема даже не в собственно редактировании накладной, сама накладная кешируется на клиенте, и только по Save записывается в базу, проблема в том, что если не писать сразу в базу и не корректировать сразу остатки, то как с одной стороны, откатить все изменения произведенные на складе, если нажата кнопка Cancel, а с другой стороны, то что уже введено по не сохраненной накладной должно как-то быть уже не доступно другим пользователем.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390553
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Ustasну, тут как бы проблема даже не в собственно редактировании накладной, сама накладная кешируется на клиенте, и только по Save записывается в базу, проблема в том, что если не писать сразу в базу и не корректировать сразу остатки, то как с одной стороны, откатить все изменения произведенные на складе, если нажата кнопка Cancel, а с другой стороны, то что уже введено по не сохраненной накладной должно как-то быть уже не доступно другим пользователем.
Если не писать сразу в базу, то и откатывать ничего не надо. Другое дело, что если не писать сразу в базу, то за время редактирования могут измениться остатки и на складе уже может не оказаться нужного количества товара.

В общем, можно с успехом работать по обоим вариантам. В случае когда возникает описанный выше конфликт при сохранении, сохранение не производится и надо будет просто обновить данные в форме и предложить пользователю ввести их заново (это по сути дела оптимистическая блокировка в каком-то виде).

В случае, когда информация сразу пишется в базу, возможно несколько вариантов:
1. Ведутся версии изменений, есть поле со статусом "Подтвержден", при этом в случае неподтверждения можно откатиться до предыдущей версии. Выборки делаются только для подтвержденных полей.
2. Ставится статус "Редактируется/не редактируется", при этом записи, которые в данный момент редактируются, недоступны для редактирования другим.
Это по сути дела ваиранты с пессимистической блокировкой с подвариантами "Версионник"/"Блокировочник" :). Т.е. примерно то, что делает сама СУБД с транзакциями, только вручную.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390558
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка для пункта 1:
Выборки делаются только для подтвержденных записей .
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390603
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladiCh
Если не писать сразу в базу, то и откатывать ничего не надо. Другое дело, что если не писать сразу в базу, то за время редактирования могут измениться остатки и на складе уже может не оказаться нужного количества товара.

В общем, можно с успехом работать по обоим вариантам. В случае когда возникает описанный выше конфликт при сохранении, сохранение не производится и надо будет просто обновить данные в форме и предложить пользователю ввести их заново (это по сути дела оптимистическая блокировка в каком-то виде).
...


Дык в том то и дело, в базу информацию об изменяемой накладной и измененных остатках мы не пишем до Save, при этом другие пользователи должны видеть статки
In Stock Product Qty - This Invoice Product Qty. Т.е. вариант, что по Save проверяется а можем ли мы со склада снять такое колво продукции, и если не можем выдать сообщение - не приемлем.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390639
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему тут или в постановке задачи что-то не так, или я ее смысл не понял.
То есть остатки должны пересчитываться до нажатия кнопки Save, сразу после добавления позиции в накладную? С какой целью это делается?
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390654
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот все и рассавили по своим местам - и блокировочники и версионники :))
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390733
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladiChПо-моему тут или в постановке задачи что-то не так, или я ее смысл не понял.
То есть остатки должны пересчитываться до нажатия кнопки Save, сразу после добавления позиции в накладную? С какой целью это делается?

Смотрите:
накладная пишется в базу не сразу, так как она может быть сохронена - Save, или отменена - Cancel. Для этого просто делается кеширование на стороне клиента. тут проблем нема. Проблема в другом, что када создается накладная, и какое-то кол-во продукции уже указано, то оно сразу должно быть недоступно другим юзерам, хотя инвойс еще не сохранен. Для чего так делать? А чтоб другие юзеры не захапали, типа кто первый встал, того и тапки. Иначе, ситуация, когда накладная создана, наживается кнопка Save и тут прога поехала выдавать мессаги - продукции уже нет на складе и так далее. Это плехо.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390744
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanвот все и рассавили по своим местам - и блокировочники и версионники :))

Вы читаете между строк, или просто задом наперед? Эта проблема универсальная, возникнет она и там и там. А здесь обсудается механизм обхода проблемы.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390788
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему в любом случае нужно чтобы добавляемые в накладную товары не влияли на остаток, пока не нажата кнопка "Save". Редактирование товара - это фактически аналог транзакции, просто реализуемой не средствами СУБД, а вашим приложением СУБД. В вашем же варианте получается что транзакция незавершена, а ее результатами уже пользуются. Если у вас ситуация с конфликтами в результате такой "транзакции" возникает слишком часто, значит надо блокировать вручную используемые ресурсы - то есть если вы добавляете товар в свою накладную, то в другую накладную этот товар добавить уже нельзя, пока вы не завершите свою "транзакцию". Или же использовать разные версии данных о товаре, о чем я выше и писал.
Если ситуация когда "прога поедет выдавать мессаги" у вас будет встречаться исчезающе редко, используйте вариант без блокировки. Если чаще - используйте блокировки или версионность. Вы оценивали вероятность возникновения такого рода конфликта?
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390796
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёма-ё...
опять заговариваюсь.

По-моему в любом случае нужно чтобы добавляемые в накладную товары не влияли на остаток, пока не нажата кнопка "Save". Редактирование накладной - это фактически аналог транзакции, просто реализуемой не средствами СУБД, а вашим приложением СУБД. В вашем же варианте получается что транзакция незавершена, а ее результатами уже пользуются. Если у вас ситуация с конфликтами в результате такой "транзакции" возникает слишком часто, значит надо блокировать вручную используемые ресурсы - то есть если вы добавляете товар в свою накладную, то в другую накладную этот товар добавить уже нельзя, пока вы не завершите свою "транзакцию". Или же использовать разные версии данных о товаре, о чем я выше и писал.
Если ситуация когда "прога поедет выдавать мессаги" у вас будет встречаться исчезающе редко, используйте вариант без блокировки. Если чаще - используйте блокировки или версионность. Вы оценивали вероятность возникновения такого рода конфликта?
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33390846
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VladiChёма-ё...
опять заговариваюсь.

По-моему в любом случае нужно чтобы добавляемые в накладную товары не влияли на остаток, пока не нажата кнопка "Save". Редактирование накладной - это фактически аналог транзакции, просто реализуемой не средствами СУБД, а вашим приложением СУБД. В вашем же варианте получается что транзакция незавершена, а ее результатами уже пользуются. Если у вас ситуация с конфликтами в результате такой "транзакции" возникает слишком часто, значит надо блокировать вручную используемые ресурсы - то есть если вы добавляете товар в свою накладную, то в другую накладную этот товар добавить уже нельзя, пока вы не завершите свою "транзакцию". Или же использовать разные версии данных о товаре, о чем я выше и писал.
Если ситуация когда "прога поедет выдавать мессаги" у вас будет встречаться исчезающе редко, используйте вариант без блокировки. Если чаще - используйте блокировки или версионность. Вы оценивали вероятность возникновения такого рода конфликта?

понедельник тока наверное, нераскачигарилися :)

оценить сложно, но ситуаци вполне реальна. т.е. вероятность что кто-то другой захочет отгрузить эту же продукцию большая. Блокировать низзя, так как я могу взять 5 единиц, а на складе 10, и вся продукция будет заблокирована, и накладная теоритически может делаться сколь угодно долго и этот процесс не должен мешать другим.

Т.е. таблица резерва под накладные - это и есть та самая подпорка. Накладная формируется обычным, как привыкл юзер, способом. Та продукция, что указал пользователь в накладной (но еще не сохранил) попадет в таблицу резерва (это чтоб остатки не блокировать). По кнопке Save открывается транзакция и пишется накладная, обновляется склад по данным в таблице резера, чистится таблица резерва. По Cancel: CancelBatch для закешированных данных, очищается резерв. Если напримео прога зависает, то соответственно в резерве остается продукция по уже не существующей накладной. Вот это и есть проблема. Пока думаем, что резерв будет очищаться каждый раз при расчете остатков. Т.е. если сессия исчезла - мочим резерв связанный с этой сессий и расчитываем остатки.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391159
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alex Ustas

Ничего сказать по поводу реализации не имею.

Однако: По Вашим словам я понял, что в системе "резервы" как класс не предусмотрены вовсе. Для нормальной торговой системы такое положение вещей минимум - "нонсенс" (а максимум не скажу - ибо матом). Советую обратить особое внимание на постановку задачи и проработку бизнес логики приложения. Если не в состоянии это сделать сами (как погляжу) - наймите нормального спеца.

best regards!!
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391461
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Ustasоценить сложно, но ситуаци вполне реальна. т.е. вероятность что кто-то другой захочет отгрузить эту же продукцию большая. Блокировать низзя, так как я могу взять 5 единиц, а на складе 10, и вся продукция будет заблокирована, и накладная теоритически может делаться сколь угодно долго и этот процесс не должен мешать другим.
Что мешает "продвинутому" узеру создать накладную (не сохраняя ее!!!) и захапать под себя весь товар (ну типа жадный он, будет один торговать или ему обещали позвонить после обеда и купить много и он страхуется). И все идут лесом. В конце дня он отменяет накладную (ну не позвонили ему) и весь товар валяется непроданным, при том что весь день все орали, что торговать нечем.
ИМХО, ты просто меняешь знак у проблемы не решая ее. Если не хватает товара на складе - то это проблема бизнеса, а не программы и прога должна просто информировать об этом кого нужно, причем заранее (наверное есть какие то нормативы остатков/резервов). Если это происходит через раз, то такой склад закрывать надо, а снабженцев увольнять. ИМХО опять же.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391643
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серега Alex Ustasоценить сложно, но ситуаци вполне реальна. т.е. вероятность что кто-то другой захочет отгрузить эту же продукцию большая. Блокировать низзя, так как я могу взять 5 единиц, а на складе 10, и вся продукция будет заблокирована, и накладная теоритически может делаться сколь угодно долго и этот процесс не должен мешать другим.
Что мешает "продвинутому" узеру создать накладную (не сохраняя ее!!!) и захапать под себя весь товар (ну типа жадный он, будет один торговать или ему обещали позвонить после обеда и купить много и он страхуется). И все идут лесом. В конце дня он отменяет накладную (ну не позвонили ему) и весь товар валяется непроданным, при том что весь день все орали, что торговать нечем.
ИМХО, ты просто меняешь знак у проблемы не решая ее. Если не хватает товара на складе - то это проблема бизнеса, а не программы и прога должна просто информировать об этом кого нужно, причем заранее (наверное есть какие то нормативы остатков/резервов). Если это происходит через раз, то такой склад закрывать надо, а снабженцев увольнять. ИМХО опять же.
В том то и дело, что в системе будет видно кто захапал весь товар.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391671
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ему еже говорил, что вопрос, в общем случае, решается только организационно. Попытки работать на уровне отдельных записей (для ввода в накладой одной позиции) сужает возможность нормальной работы. (По телефону спраашивают, "а что у вас из сантехники имеется?" и приходит кирдык всем попыткам).
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391721
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовЯ ему еже говорил, что вопрос, в общем случае, решается только организационно. Попытки работать на уровне отдельных записей (для ввода в накладой одной позиции) сужает возможность нормальной работы. (По телефону спраашивают, "а что у вас из сантехники имеется?" и приходит кирдык всем попыткам).

Если вы расписались в своем бессилии решать подобные задачи - это не значит, что их невозможно решить стандартными или нестандартными подходами.

Типа Продавец по телефону покупателю:
- все ништяк, приезжай чувак с бабками - товар есть.
чувак приехал - а товару нету... аблом... кто виноват?... программист...
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391737
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanВ том то и дело, что в системе будет видно кто захапал весь товар.
Ну и что? 90% времени уйдет на то, чтобы выяснить кто, зачем, на сколько времени чего занял и переругаться по этому поводу.
Плюс к этому. Если "творчески работать" с накладной, т.е. например набирать разного товару на определенную сумму, то запаришься резервировать/разрезервировать с пересчетом.
И все только потому, что "а вдруг не хватит".
Я бы выяснил поподробнее, насколько часто реально возникает у заказчика ситуация "не хватило". Ну не верю я, что это "постоянно". Все таки в 99.9% случаев, приходя в магазин и видя товар на прилавке, можно его (товар) купить и не нарваться на "извините, кончилось".
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391910
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrryMcA2 Alex Ustas

Ничего сказать по поводу реализации не имею.

Однако: По Вашим словам я понял, что в системе "резервы" как класс не предусмотрены вовсе. Для нормальной торговой системы такое положение вещей минимум - "нонсенс" (а максимум не скажу - ибо матом). Советую обратить особое внимание на постановку задачи и проработку бизнес логики приложения. Если не в состоянии это сделать сами (как погляжу) - наймите нормального спеца.

best regards!!

ну почему же, будет резерв, и я об этом упоминал где-то наверху треда, но он не является такой уж важной составляющей, мы делали анализ по продуктам (еще раз напомню, наш целевой рынок USA), он есть в некоторых продуктах, но таких продуктов мало. Т.е. это не мейнстрим функция. А завязывать резерв-инвойс, опять же, я где-то упоминал, кажется на rsdn - это через чур накладно для пользователей, слишком будет смахивать на поездку в Москву через Петропаловск-Камчатск. Это по поводу нонсенса. В НЛП это называется карта мира, то что для вас нонсенс, для меня как правило, и наоборот.

Так что с постоновкой все нормально. Или укажите на реальные возможные косяки.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391947
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Все таки в 99.9% случаев, приходя в магазин и видя товар на прилавке,...

В том то и дело, что на прилавке его может и не быть... Штучный товар где-то в подсобке. Несколько экземпляров. С витрины обычно не продают, разве что последний :)
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391962
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanШтучный товар где-то в подсобке.
Ну, если автоматизировать торговлю из подсобок и из под полы, то такая система может и оправдана.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33391970
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Серега Alex Ustasоценить сложно, но ситуаци вполне реальна. т.е. вероятность что кто-то другой захочет отгрузить эту же продукцию большая. Блокировать низзя, так как я могу взять 5 единиц, а на складе 10, и вся продукция будет заблокирована, и накладная теоритически может делаться сколь угодно долго и этот процесс не должен мешать другим.
Что мешает "продвинутому" узеру создать накладную (не сохраняя ее!!!) и захапать под себя весь товар (ну типа жадный он, будет один торговать или ему обещали позвонить после обеда и купить много и он страхуется). И все идут лесом. В конце дня он отменяет накладную (ну не позвонили ему) и весь товар валяется непроданным, при том что весь день все орали, что торговать нечем.
ИМХО, ты просто меняешь знак у проблемы не решая ее. Если не хватает товара на складе - то это проблема бизнеса, а не программы и прога должна просто информировать об этом кого нужно, причем заранее (наверное есть какие то нормативы остатков/резервов). Если это происходит через раз, то такой склад закрывать надо, а снабженцев увольнять. ИМХО опять же.

Вы тут чуток выхватили пару слов, и не обратили внимание на остальное. То что чувак может указать 4 единиц товара из 10 имеющихся, но накладная еще не сохранена, при этом остальные юзеры видят уже тока 6 - вот конечный резюльтат нашего механизма. Т.е. дейтсвует принцип - кто первый встал, того и тапки. Т.е. если он уже указал 4 единицы, то эти 4 единицы уже гарантировано его и он не блокирует остальных юзеров. А то что юзер может и отменить накладную, ну да может, но он может и из окна выпасть случайно - я думаю это проблема по более - и что, это вас останавливает нанимать работников на работу? В чем конкретно ущербность данного механизма?

По поводу снабжения. Есть и такой модуль, сигнализирующий о необходимсти пополнения остатков. Но это уже другая история.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33392053
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават ЮсифовЯ ему еже говорил, что вопрос, в общем случае, решается только организационно. Попытки работать на уровне отдельных записей (для ввода в накладой одной позиции) сужает возможность нормальной работы. (По телефону спраашивают, "а что у вас из сантехники имеется?" и приходит кирдык всем попыткам).

А я еще раз Вам скажу, мы делаем коробочный вариант. Это значит что по большей части, мы не может влиять на сложившийся процесс, да и я не вижу необходимости. Связка резерв-инвойс в нащем случае возможна, и мы будем реализовывать, но она не является ключевой. И с чего вы взяли, что сужается возможность нормальной работы? Наоборот, расширяются, нет условностей, которые предлагали тут ввести. Остатки не блокируются, они просто логически уменьшаются на кол-во указанное в несохраненной накладной.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33392061
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Серега gardenmanВ том то и дело, что в системе будет видно кто захапал весь товар.
Ну и что? 90% времени уйдет на то, чтобы выяснить кто, зачем, на сколько времени чего занял и переругаться по этому поводу.
Плюс к этому. Если "творчески работать" с накладной, т.е. например набирать разного товару на определенную сумму, то запаришься резервировать/разрезервировать с пересчетом.
И все только потому, что "а вдруг не хватит".
Я бы выяснил поподробнее, насколько часто реально возникает у заказчика ситуация "не хватило". Ну не верю я, что это "постоянно". Все таки в 99.9% случаев, приходя в магазин и видя товар на прилавке, можно его (товар) купить и не нарваться на "извините, кончилось".

ну, творческая работа в основном будет с Sales Order, на основание SO формируется Invoice. А что вы имеете ввиду запаришься с резервировать/разрезервировать с пересчетом? нихто парится не будет, как я уже говорил, все для пользователя прозрачно, все что ему нужно, это указать в накладной Qty Shipped и усе, прога сама поставит на логическй резерв. Если накладная будет таки записана, склад обновится, а резерв будет очищен, если отменена - просто очиститься резерв.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33392157
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Ustas То что чувак может указать 4 единиц товара из 10 имеющихся, но накладная еще не сохранена, при этом остальные юзеры видят уже тока 6 - вот конечный резюльтат нашего механизма.

Но ты так и не ответил на мой вопрос. Что помешает юзеру захапать под себя весь товар (10 из 10) на целый день и не продать его? Люди ведь умные бывают. Прочухают они, про возможность подобного "резервирования", и, если в конторе реально существует конкуренция за продаваеый товар между продавцами, то ситуация вполне вероятна, ИМХО. И получится не "кто первый встал, того и тапки", а кто первый проснулся, сунул тапки под подушку и снова уснул, того и тапки. А те кто встал - ходют босыми. Если такой конкуренции нет или она минимальна (а это мне кажется более реальной ситуацией), то и огород городить не стоит. А стоит просто по факту сохранения или сохранять или откатывать. В конце концов разница по времени между обломом при вставке позиции и обломом при сохранении готового документа не велика в реале.
Может быть такая ситуация и надумана, но мне так не кажется. ИМХО все.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33392296
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Серега Alex Ustas То что чувак может указать 4 единиц товара из 10 имеющихся, но накладная еще не сохранена, при этом остальные юзеры видят уже тока 6 - вот конечный резюльтат нашего механизма.

Но ты так и не ответил на мой вопрос. Что помешает юзеру захапать под себя весь товар (10 из 10) на целый день и не продать его? Люди ведь умные бывают. Прочухают они, про возможность подобного "резервирования", и, если в конторе реально существует конкуренция за продаваеый товар между продавцами, то ситуация вполне вероятна, ИМХО. И получится не "кто первый встал, того и тапки", а кто первый проснулся, сунул тапки под подушку и снова уснул, того и тапки. А те кто встал - ходют босыми. Если такой конкуренции нет или она минимальна (а это мне кажется более реальной ситуацией), то и огород городить не стоит. А стоит просто по факту сохранения или сохранять или откатывать. В конце концов разница по времени между обломом при вставке позиции и обломом при сохранении готового документа не велика в реале.
Может быть такая ситуация и надумана, но мне так не кажется. ИМХО все.

Ну, ситуация из разряда вредительской, но вполне может быть. Как правило, путь до накладной такой:
Quotation - Sales Order - Invoice. Т.е. это по существу конвеер, и хапнуть и не отпускать до конца дня - это уже что-то вроде из разряда вон выходящего. Просто такой механизм предотвратит ситуацию када в накладную Qty Shipped уже указано, а оно оказалось не окончательным, и тот кто попроворнее может перехватить, тогда придется опять корректировать Qty Shipped. Т.е. именно вот такую ситуацию хочется избежать. Т.е. еще раз, указанное в накладной Qty Shipped окончательное, и не корректируется под воздействие внешних факторов.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33392865
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Так что с постоновкой все нормально.

Вам виднее.

>>Или укажите на реальные возможные косяки.

Заказывайте анализ - покажу если есть.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33392912
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UrryMcA>>Так что с постоновкой все нормально.

Вам виднее.

>>Или укажите на реальные возможные косяки.

Заказывайте анализ - покажу если есть.

ну, в любой даже самой самой системе можно найти косяки, но это может не мешать жить им очень даже припеваючи, а за деньги, мы и сами с усами :)

Тем не менее, всем спасибо, было интересно и позновательно.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33393571
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman Сахават ЮсифовЯ ему еже говорил, что вопрос, в общем случае, решается только организационно. Попытки работать на уровне отдельных записей (для ввода в накладой одной позиции) сужает возможность нормальной работы. (По телефону спраашивают, "а что у вас из сантехники имеется?" и приходит кирдык всем попыткам).

Если вы расписались в своем бессилии решать подобные задачи - это не значит, что их невозможно решить стандартными или нестандартными подходами.

Типа Продавец по телефону покупателю:
- все ништяк, приезжай чувак с бабками - товар есть.
чувак приехал - а товару нету... аблом... кто виноват?... программист...

Что за манера говорить не подумав.
Вы, наверное, никогда не сталкивались с тем, как резервируется товар по телефону. Имейте в виду - это не чувак звонит, а постоянный покупатель и его интересует позиций с полстони как минимум. И таких штук 20-50 в день и одновременно с ними работают 5-7 человек.
Самое главное - они не диктуют сколько чего им надо, а спрашивают, "а что нового, а вот того сколько осталось (никаких кодов или точных названий) и когда доходят до конца и узнают сумму все начинается сначала, "давайте посмотрим что там было, вот это уберем, это уменьшим и если деньги остались возьмем и того 5 штук". Один склад, одни и те же товары.

Посмотрите на слоган у OLD_NIСK.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33394000
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оч. позновательно!...
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33394057
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По бизнесу - менеджер резервируя товар берет на себя ответственность за достоверность этой информации. если у него много отмен - у него проблемы.
Поэтому у него должны быть две кнопки - сохранить данные, но не резервироать (нуждается в уточнении), и выполнить резервирование.
Тогда он не отвертится - мол мне же как-то надо было сохранить, вот я и нажал, а то что ваша программа не понимает разницы - я не виноват.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33395508
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex UstasИнтересны Ваши мысли по этому поводу, и если есть опыт поделитель, пожалуйста, кто как такое делает.

У нас (самописная система) при внесении позиции в накладную товар снимается с остатков и резервируется в специальную таблицу на сервере вида spid\login\tovar\amount\sklad. При сохранении накладной таблица очищается.
При построении отчётов - содержимое таблицы добавляется в остатки.
В клиенте есть два отчёта:
"Текущий остаток на складе" и "Товарный отчёт"

Пример: всего товара 100 единиц. В накладную внесли 50.
Накладная ещё не сохранена:
Текущий остаток на складе - 50 единиц в наличии, 50 в резерве.
Товарный отчёт - 100 единиц.

Накладная сохранена:
Текущий остаток на складе - 50 единиц в наличии.
Товарный отчёт - 50 единиц.

Опыт эксплуатации показывает, что такое решение не всегда адекватно.
Например, одни заказы будут отгружаться сегодня, а другие - завтра.
Заказы оформляются несколькими операторами независимо друг от друга. Если так получилось, что один оператор оформил (сохранил) накладные на завтра, для сегодняшних накладных может не остаться товара на остатке (в системе не поддерживаются отрицательные остатки).
___________________________________________________
ИМХО
Оптимальным было бы иметь в окне формирования накладной галку "Резервировать товар". Поставил галку - и вбиваешь товар с резервированием. Потом клиент говорит "Знаете, мне сегоня не надо - через недельку привезите.". Не вопрос - убрал галку, освободил товар. А заказ остался. Тут клиент вдруг передумал, звонит снова: "давайте всё таки на сегодня оформим". Снова ставим галку - а нам болт. Не хватает товара. :) В данном случае клиент сам виноват.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33396575
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и я о том же. Зачем весь этот гемор? Чуть чуть поменяли логику - и все в порядке. Вводите правило - количество зарезервированного товара не может превышать наличия на складе. А количество товара которое доступно - разница между складом и резервом. Все то же самое, но никаких проблем с остатками. Можно даже фичу приделать - хранить резерв до определенного момента времени. Типа покупательне пришел за товаром вовремя-пеняй на себя... :)) Именно такой подход я и реализовал в там куда давал ссылку.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33396623
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanВот и я о том же. Зачем весь этот гемор? Чуть чуть поменяли логику - и все в порядке. Вводите правило - количество зарезервированного товара не может превышать наличия на складе. А количество товара которое доступно - разница между складом и резервом. Все то же самое, но никаких проблем с остатками. Можно даже фичу приделать - хранить резерв до определенного момента времени. Типа покупательне пришел за товаром вовремя-пеняй на себя... :)) Именно такой подход я и реализовал в там куда давал ссылку.

Если я понял правильно, вопрос был не об алгоритма резервировании (у меня документ имеет несколько состояний - счет на оплату-накладная-счет/фактура, счет на оплату резервирует, время резервирования дается в настройках, но можно детализировать и по контрагенту и по товару исходя из рейтингов), а о том как это сделать удобно для оператора и непротиворечиво.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33396848
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сахават Юсифов
Я вот хочу спросить есть такое понятие как "Заказ"?
Если товар в наличии на складе - то он должен быть зарезервирован.
Если нет в наличии - значит нужно предпринять соответствующие действия чтобы он появился.
Заказ должен быть оплачен до такого-то времени.

Рассмотрим работу аптеки.
Звоните, говорите - хочу аспирину 10 пачек, и пачку свечей от геморроя. Вам говорят приходите до 19-00 - если не придете, заказ будет анулирован. И, в любом случае если вы придете в оговоренное время, то вам гаранитируют что ваш аспирин в количестве 10 пачек и прочие позиции заказа вы получите. И никаких накладных, никаких изменений остатков... Ведь покупатель может и не прийти вообще... А инфа о том, что был "заказ" сохранится. Потом можно будет проанализировать спрос...

Честно говоря я не вижу тут место для кнопки "зарезервировать". Вижу только "сохранить"/"отменить".
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33398790
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman
Честно говоря я не вижу тут место для кнопки "зарезервировать". Вижу только "сохранить"/"отменить".

Да поймите же Вы, не о том речь "как зарезервировать", а о том "как непротиворечиво зарезервировать один и тот же товар одновременно несколькими продавцами". Т.е. эти драные блокировки, транзакции, изоляции и т.д. хреновина, которая для этого предназначена, но помочь ничем не может, кроме как "извините туалет занят, приходите попозже" или "та, на ком вы хотели женится, уже не девочка - обскакали".
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33398808
Yulka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже думаю, что это только организационными мерами решается, а какими именно (кто прав - забирающие, забравший, при каких условиях) - надо на пользователя выносить (в настройки), так как в разных организациях по разному. Совокупная потребность в каждый момент неизвестна, кто что какой дурак предпримет - неизвестно, достоверное состояние склада неизвестно (так как в этот момент идут неизветсные транзакции). Это - проблема неизвестности, с ней вообще ничего нельзя сделать. Статистический резервный (на резервирование) можно ввести (если слово "я резервирую" клиента - закон), но также смешно, плюс оборотка дополнительная. Надо просто "резервировать онлайн", то есть пусть клиент знает, что сортир занят, пусть всех об идущих транзакциях сервер извещает и т.д.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33399153
Да поймите же Вы, не о том речь "как зарезервировать", а о том "как непротиворечиво зарезервировать один и тот же товар одновременно несколькими продавцами". Т.е. эти драные блокировки, транзакции, изоляции и т.д. хреновина, которая для этого предназначена, но помочь ничем не может, кроме как "извините туалет занят, приходите попозже" или "та, на ком вы хотели женится, уже не девочка - обскакали".

Никак не могу понять логики. А есть смысл "непротиворечиво зарезервировать один и тот же товар одновременно несколькими продавцами" как вы этот один и тот же товар разным покупателям продавать то будете.

Уважаемый gardenman все правильно описал. Именно так все и делают, и не натыкаются ни на какие противоречия. В стране работают тысячи складов, маганизонов, аптек и т.д. И нигде не возникает особых колизий. Зачем в очередной раз велосипед изобретать? Мир удивить? Мы и так с успехом это долгое время делаем.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33399196
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЧП
Спасибо за поддержку.
Тезис: если вы не понимаете что и как нужно делать, то совсем не значит что не найдется кто-то кто может и понимает.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33399210
И еще в догонку. Преждем чем что то продавать. Товар нужно правильно (присвоить ему уникальный номер к примеру) оприходовать на склад. Тогда не будет ситуации когда несколько человек резервируют и продают одно и тоже.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33399211
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черный плащ.
Никак не могу понять логики. А есть смысл "непротиворечиво зарезервировать один и тот же товар одновременно несколькими продавцами" как вы этот один и тот же товар разным покупателям продавать то будете.


Вы думали зачем во всяких там SAPах и т.д. цепочка чуть ли не десяти документов для отпуска товара? Намерения, заявки, потвержденные, утвержденные,проведенные,учтеныее....??? Врод бы к чему все это дермо, когда можно написать "5 штук зарезервировано"?

Для развода во времени и в пространстве = организационные меры.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33399389
Тогда я не понимаю о чем спор. Все говорят об одном и том же (резервировании) но разными словами. У одного это сделано с разделением по времени через много документов, другой прямо формирует резерв.

А существование одного и того же товара нарушает всю целостность базы данных в области работы с объектами учета. Не должно быть слов один и тот же.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33399618
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черный плащ.
Не должно быть слов один и тот же.

Тогда все было бы просто.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33400012
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черный плащ.Тогда я не понимаю о чем спор. Все говорят об одном и том же (резервировании) но разными словами.
ИМХО потому это, что часто пытаются совместить "Заказ", "Резервирование" и "Отгрузку" в одном флаконе (как правило на складе по моим наблюдениям). А с учетом специфики это могут быть совершенно разные вещи.
Заказ можно принять и на месяц вперед и на два. Что, резервировать товар надо? А может и товара то сейчас нет. Посылать клиента?
Резервировать, ИМХО, можно, когда есть уверенность, что заказчик придет за товаром (например оплата прошла) ну или срок заказа подходит и получили какое то подтверждение.
"Отгружать" только по факту собственно отгрузки на складе.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33406621
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серега
Заказ можно принять и на месяц вперед и на два. Что, резервировать товар надо? А может и товара то сейчас нет. Посылать клиента?
Резервировать, ИМХО, можно, когда есть уверенность, что заказчик придет за товаром (например оплата прошла) ну или срок заказа подходит и получили какое то подтверждение.
"Отгружать" только по факту собственно отгрузки на складе.

Первые здравые рассуждения в топике.

А то ишь, создают "коробочный вариант" под чей-то конкретный бизнес-процесс ;)
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33407257
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dogen Серега
Заказ можно принять и на месяц вперед и на два. Что, резервировать товар надо? А может и товара то сейчас нет. Посылать клиента?
Резервировать, ИМХО, можно, когда есть уверенность, что заказчик придет за товаром (например оплата прошла) ну или срок заказа подходит и получили какое то подтверждение.
"Отгружать" только по факту собственно отгрузки на складе.

Первые здравые рассуждения в топике.

А то ишь, создают "коробочный вариант" под чей-то конкретный бизнес-процесс ;)

Ну, вы б еще и через год пришли и стали давать свои ЦУ, чего только "ишь" стоит :) для тех кто в танке еще раз скажу, резерв в накладной - это чиста логическая операция, выполняется в процессе формирования накладной и служит для того, чтоб не увели остатки когда уже что-то забито в поле Qty Shipped. И не в коем случае не пересекается с полноценным резервом продукции, в моем понимании, точнее предлагали отталкиваться имеено от резерва, но для нашего коробочного варианта это не подходит, слишком тяжеловесно для постоянного использования.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33408336
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex UstasНу, вы б еще и через год пришли и стали давать свои ЦУ, чего только "ишь" стоит :) для тех кто в танке еще раз скажу, резерв в накладной - это чиста логическая операция, выполняется в процессе формирования накладной и служит для того, чтоб не увели остатки когда уже что-то забито в поле Qty Shipped. И не в коем случае не пересекается с полноценным резервом продукции, в моем понимании, точнее предлагали отталкиваться имеено от резерва, но для нашего коробочного варианта это не подходит, слишком тяжеловесно для постоянного использования.

Ну год-то пока еще не прошел, топику вроде две недели?

Если давать возможность "чиста логически" зарезервировать товары до сохранения заказа, то ушлый менеджер будет пробегаться по всему списку дефицитных и не очень товаров, забивать себе огромные количества товара, а потом спокойно и долго беседовать с клиентом, выясняя, что ему конкретно нужно. Как-то это не сильно лучше чем резервировать товары в момент сохранения заказа.

Не хотите откатывать транзакции "чиста логического" резервирования - ну пишите эти данные (строки заказов) в отдельную таблицу, она будет невелика, можно постоянно прибавлять данные из нее к "полноценному резерву". У Вас, судя по всему, есть таблица с остатками и количествами зарезервированного товара, вот к ее данным прибавьте сумму строк редактируемых новых заказов.

Надо отметить, что может иметь смысл создание нового заказа и редактирование "полноценно зарезервированного" рассмотреть отдельно.

Где-то вверху спрашивали, кто как делает. Отвечаю. Для оптовой торговли сделали резервирование при сохранении заказа. Народ привык. Дефицит, если таковой присутствует на складе, все равно распределяется "вне информационной системы".
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33408555
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DogenЕсли давать возможность "чиста логически" зарезервировать товары до сохранения заказа, то ушлый менеджер будет пробегаться по всему списку дефицитных и не очень товаров, забивать себе огромные количества товара, а потом спокойно и долго беседовать с клиентом, выясняя, что ему конкретно нужно. Как-то это не сильно лучше чем резервировать товары в момент сохранения заказа.

След то остается - резервирует/освобождает и не продает. У руководства вопрос - нам такие умники нужны?
Сохранить же значит сохранить свой труд - набрал 30 позиций, и тут клиент говорит, ой пожди, я через полчасика позвоню, кажется это мне вчерашнюю заявку подсунули, ОК, сохраняю, а клиенту говорю -учти, через полчасика этого может уже не быть - я не резервирую.
Вместе с функцией копирования сохранение без резервирования легко реализуют типичные наборы.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33408568
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRСлед то остается - резервирует/освобождает и не продает. У руководства вопрос - нам такие умники нужны?
Зависит от эффективности работы "умника". "След", опять же, писать в какой-то журнал нужно, просматривать...

ModelRСохранить же значит сохранить свой труд - набрал 30 позиций, и тут клиент говорит, ой пожди, я через полчасика позвоню, кажется это мне вчерашнюю заявку подсунули, ОК, сохраняю, а клиенту говорю -учти, через полчасика этого может уже не быть - я не резервирую.
Вместе с функцией копирования сохранение без резервирования легко реализуют типичные наборы.
А почему бы не зарезервировать? А потом еще дописать? Ближе к жизни нужно быть.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33408599
Alex Ustas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dogen
Ну год-то пока еще не прошел, топику вроде две недели?

Если давать возможность "чиста логически" зарезервировать товары до сохранения заказа, то ушлый менеджер будет пробегаться по всему списку дефицитных и не очень товаров, забивать себе огромные количества товара, а потом спокойно и долго беседовать с клиентом, выясняя, что ему конкретно нужно. Как-то это не сильно лучше чем резервировать товары в момент сохранения заказа.

Не хотите откатывать транзакции "чиста логического" резервирования - ну пишите эти данные (строки заказов) в отдельную таблицу, она будет невелика, можно постоянно прибавлять данные из нее к "полноценному резерву". У Вас, судя по всему, есть таблица с остатками и количествами зарезервированного товара, вот к ее данным прибавьте сумму строк редактируемых новых заказов.

Надо отметить, что может иметь смысл создание нового заказа и редактирование "полноценно зарезервированного" рассмотреть отдельно.

Где-то вверху спрашивали, кто как делает. Отвечаю. Для оптовой торговли сделали резервирование при сохранении заказа. Народ привык. Дефицит, если таковой присутствует на складе, все равно распределяется "вне информационной системы".

та я пошутил, смайлик ведь добавил, "ишь" как-то резануло глаз :)

небольшое отступление, слово "резерв" я употребил в мысле резервирования под накладную в процессе ее ввода, с целью недопущения увода остатков, по окончанию ввода оной. уф, загнул :)

не, заказ не резервирует под себя продукцию, только накладная, вообще схема такая: Quotation - Sales Order - Invoice.
т.е. когда Invoice формируется по Sales Order, то манагер пляшет от цифер указанных в Sales Order, т.е. в поле Qty Shipped инвойса у него нет возможности перепрыгнуть Qty Ordered. Т.е. хапнуть больше чем сможет проглотить у него нет возможности.

Ну, в общем, про отдельную таблицу речь и была, т.е. в процессе ввода Qty Shipped в накладной - это кол-во не снимается с остатков сразу, а попадает в отдельную таблицу, эта таблица учитывается при расчете остатков. Ну и по Save - записывается сама накладная, обновляются остатки, очищается таблица, и все это в короткой транзакции.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33410167
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DogenА почему бы не зарезервировать? А потом еще дописать? Ближе к жизни нужно быть.Я же сказал - вопрос к заказчику, можно так можно, это его жизнь. Только не забудьте вопрос задать.
...
Рейтинг: 0 / 0
Какой принцип сохранения данных выбрать
    #33412017
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR DogenА почему бы не зарезервировать? А потом еще дописать? Ближе к жизни нужно быть.Я же сказал - вопрос к заказчику, можно так можно, это его жизнь. Только не забудьте вопрос задать.
Ну типа если коробочный вариант делать то не одного-единственного заказчика опросить надо :) А как минимум реализовать пару-тройку ходовых алгоритмов, или потом придется нагло пиарить свой любимый.
...
Рейтинг: 0 / 0
71 сообщений из 71, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Какой принцип сохранения данных выбрать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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