Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.08.2004, 16:25
|
|||
|---|---|---|---|
|
|||
вот такой длинный вопрос... |
|||
|
#18+
Проджект написан по следующей методике: - есть контейнер БД, то есть не со свободными таблицами - формы часто модальные, чтобы юзер не пооткрывал массу других, забыв закрыть - на каждой форма приватная датасессия - нужные таблицы открываются в датаэнвиронменте форм - в инит-методах фон\рм написанно нечто вроде: SELECT * from MyDB!Myable… into cursor MyCur, а, затем на основе полей этого курсора формируются данные для текстбоксов форм, где и можно редактировать данные - сохранение идет примерно таким методом: BEGIN TRANSACTION Insert into myTable1…. Insert into MyTable2….. …………. UPDATE MyTable….. END TRANSACTION Все вроде хорошо, но при этом в принципе многопользовательская среда не реализована, то есть можно работать с нескольких машин, при условии, что БД находится на файл-сервере…НО!!! Может кто посоветует, КАК при такой логике без малой крови реализовать корректное многопользовательское приложение. Например в теперь, при такой логике запросто 2 продавца могут продать один и тот же товар…. То есть у меня на форме остаток 20 и у него 20.. я быстрей провел 15, а он не видит изменения остатков… Может Уважаемые гуру поделятся идеями? (до сих пор писал почти исключительно однопользовательские проджекты) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
23.08.2004, 17:09
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
Здесь 2 принципиальных момента: -) Момент отображения информации у второго пользователя, что в остатке только 5 -) Момент записи в базу данных Так вот, если речь идет о том, чтобы второй пользователь не мог продать больше чем есть в базе данных (т.е. сделать запись в базу данных), то это реализауется через триггера. Т.е. продавцу кажется, что в остатке 20, он вводит 20, нажимет кнопочку "Записать". В этот момент срабатывает триггер и говорит: Записать 20 нельзя, осталось только 5, составьте заказ заново! Продавец переоткрывает формочку заказа и у него отображается уже остаток 5. Такая модификация потребует минимальных усилий по переделке. Собственно, только написание нужного триггера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 17:31
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
Добавлю к уже сказанному - такой триггер не должен заставлять человека "составлять заказ заново"! А то, пока он думать будет, так и оставшиеся 5 единиц "уйдут"... :-) Этот триггер должен "силой" вписать в заказ реальный остаток (если он меньше, чем желаемое количество)! А там уж пусть клиент решает - берет он товара меньше, чем хотелось или нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 18:25
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
Много лет пользуюсь другой бизнес-логикой. В файле остатков есть дополнительное поле - сейчас выписывается в счетах - то есть при выписке товара - уменьшать остаток и увеличивать значение поля. Причем сразу Update, чтоб все видели актуальный остаток - никода не оставляйте это дело на потом - я то узнаете от менеджеров все, что они о Вас думают и будут правы - ибо главное - это продать Так что не используйте в коммерции - private data session и аккуратно подходите к буферизации - здесь не тот случай... При работе с кассой все меняется в другую стонону, но если на фирме одновременно с одного склада розница и опт - то надо все объединить в "сейчас выписывается"... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 19:50
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
А я всегда показываю пользователю справочник остатков и при выборе товара в счет подставляется максимально возможное количество. Потом менеджер пишет необходимое количество и при выходе из поля идет контроль - если уже кто-то успел "перехватить" товар, то больше, чем осталось, не выпишешь - оно снова подставит в счет максимально возможное количество или оставит без изменений, если товара достаточно. Естественно, в справочнике сразу это движение фиксируется. Никакой буферизации - работа напрямую с "живой" таблицей... Время "показа" справочника менеджеру ограничено - интервал определяется администратором. Справочник - это грид с поиском по первым буквам наименования. Может не совсем "по науке", но за много лет ни разу не подвело :-) to Sergey_Ch Не совсем понял насчет "при работе с кассой все меняется в другую сторону"... Можно подробнее? Please! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 21:22
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
Redrik to Sergey_Ch Не совсем понял насчет "при работе с кассой все меняется в другую сторону"... Можно подробнее? Please! Здесь идеология другая по причине того - что товар вот он - по факту перед вами (отсканированный сканером - штрихкода) - соответсвенно можно продавать больше, чем есть в компьютерном учете - ну уже после этого отчет менеджеру о красных остатках - и полетели головы Хотя говорить об этом можно долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2004, 21:41
|
|||
|---|---|---|---|
|
|||
вот такой длинный вопрос... |
|||
|
#18+
Про сооооответствующий триггер - не понял КАК его реализовать, а идейка - вставлять в заказ МАКСИМАЛЬНО возможное - ей и пользуюсь, вот стормозил и не додумался проверять это число... такой метод ИМХО проще... То есть при нажатии на кнопку "ПРОДАТЬ" + еще проверка, не продал ли кто-то те остатки...... Да - это ИМХО самая малая кровь.. хотя триггер не уровне БД - даже лучше, но вот кроме дефолта для определеных полей ничего не писал, сказывается "тяжелое" наследие 2,6-го фокса... Может дадите примерный код (я не очень нагл надеюсь?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 10:35
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
При "уходе" со строки с только что выписанным товаром (как в 2.6 - BROWSE VALID :F) происходит SEEK этого товара в справочнике остатков и в базе накладных либо остается количество, выписанное менеджером, либо ставим всё, имеющееся в наличии... Сразу же имеем реальный остаток в справочнике. Кроме этого здесь (в базе накладных) и сразу я еще ставлю признак (автоматом) "товар продан". В результате никакой кнопки "Продать" просто не существует. Для того, чтобы убрать (изменить) товар из накладной, служит комбинация клавиш, которая обнуляет количество товара в накладной и возвращает это количество в справочник. Комбинация клавиш, а не кнопка - для ускорения работы менеджеров, принимающих заказы по междугородке! Код примерно такой... Это без триггеров - это методы в гриде... При выписке: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 11:00
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
Я бы добавил к предыдущему примеру блокировки и обработку в случае занятости записи другим пользователем - так, на всякий случай, чтоб быть уверенным в процессе и не отдавать на откуп автоматитке в FoxPro... Хотя если клиент один, то конечно не надо... Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.08.2004, 14:47
|
|||
|---|---|---|---|
вот такой длинный вопрос... |
|||
|
#18+
Sergey ChЯ бы добавил к предыдущему примеру блокировки и обработку в случае занятости записи другим пользователем... Хотя если клиент один, то конечно не надо... Конечно, это обязательно нужно сделать и это делается! Клиент, конечно, не один... :-))) Good luck! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&mobile=1&tid=1595941]: |
0ms |
get settings: |
7ms |
get forum list: |
29ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 385ms |

| 0 / 0 |
