Имя: Пароль:
1C
1C 7.7
v7: Бонусная система в розничной торговле
,
0 anten
 
14.10.14
19:11
Розничный магазин. На кассах стоят компы, на каждой своя база (только для набивания чеков). Есть еще общая база в которой ведется учет. понадобилось написать систему начисления и оплаты покупки бонусами. Вот теперь думаю - где хранить остаток по бонусным карточкам? Лепить еще одну базу карточек в sql и писать прямые запросы из каждой базы? Подскажите как такое лучше реализовать.
1 Фокусник
 
14.10.14
19:21
(0) "на каждой своя база"
В этих базах "как-то" номенклатура обновляется?
ИМХО, вариант: грузить "одновременно с номенклатурой" данные по бонусным картам.
2 France
 
14.10.14
19:21
Начнем с того, 1с ли, и если да - конфы и релиз
3 anten
 
14.10.14
19:45
номенклатура обновляется. перекидываю те, что поменялись через дбф-ку. подгружаются автоматом в паузах между чеками. конфа самописная. везде 1с.
4 anten
 
14.10.14
19:47
(1) проблема в том, что остаток бонусов на карточке нужен во всех кассовых базах. т.е. если перекидывать с касс в основную движения по ним, то потом надо будет на каждую закидывать остатки по ним. как-то много движений.
5 anten
 
14.10.14
19:49
к примеру, такой случай. покупатель рассчитывается бонусами под ноль, выходит, заходит и рассчитывается на другой кассе.
6 snegovik
 
14.10.14
19:53
(5) Центральная база и кассовые базы территориально в одном месте?
7 mehfk
 
14.10.14
19:53
>> Лепить еще одну базу карточек в sql и писать прямые запросы из каждой базы? Подскажите как такое лучше реализовать.

Отдельную базу 1С с нужным функционалом. Обращаться через OLE.
8 anten
 
14.10.14
19:54
(6) в одной локальной сетке.
9 abfm
 
14.10.14
19:54
Внешняя база sql.
И типа как то так.
Соединение = СоздатьОбъект("ADODB.Connection");
АДОДБ_УстановитьСоединение(Соединение);
Команда = СоздатьОбъект("ADODB.Command");
Команда.ActiveConnection=Соединение;
10 anten
 
14.10.14
19:54
(7) OLE глючное.
11 mehfk
 
14.10.14
19:55
(7)+ или в ней "...общая база в которой ведется учет..."
12 mehfk
 
14.10.14
19:55
(10) Плохому танцору ...
13 anten
 
14.10.14
19:55
(9) т.е. всё-таки прямыми запросами? sql 2000 подойдет ?
14 snegovik
 
14.10.14
19:56
А почему не хотят сделать единую базу?
15 anten
 
14.10.14
19:56
(12) да нет. писал я под OLE. хреново ошибки отлавливать. чуть что и зависла в памяти.
16 anten
 
14.10.14
19:56
(14) на кассах будет тупить.
17 anten
 
14.10.14
19:57
(14) а так на кассах база из одного справочника и одного документа.
18 abfm
 
14.10.14
20:01
Проверяем карту если в sql есть заводим на кассе новую. Начисляем или списываем бонус, удаляем. Всё!
19 Elf_80_lvl
 
14.10.14
20:02
У меня такая же задача была когда-то, несколько точек общепита. В итоге решил работать единую бонусную базу с веб сервисами.
20 anten
 
14.10.14
20:02
(18) т.е. начислили - прописали в sql движение, списали - прописали в sql движение.
21 anten
 
14.10.14
20:04
(19) sql не проще будет? просто я прямыми запросами никогда не пользовался. думаю, может есть какой-то вариант попроще.
22 abfm
 
14.10.14
20:04
Работает не первый год.
23 anten
 
14.10.14
20:04
(22) прямыми запросами?
24 Elf_80_lvl
 
14.10.14
20:07
(21) Прошу прощения не до конца прочитал вашу ситуацию. У нас все точки не в одной локальной сети естественно. В вашем случаи хз, скорость что Sql что веб сервиса примерно одинаковая, но первый вариант несколько проще.
25 anten
 
14.10.14
20:12
1с++?
26 abfm
 
14.10.14
20:16
Там 3 момента 1: получить баланс 2: начислить бонус 3: списать бонус. В пределах одного региона у разных провайдеров с статичным ip проблем нет. 1с++ нет.
27 anten
 
14.10.14
20:57
(26) у меня всё в локалке. а где почитать про прямые запросы?
28 mehfk
 
14.10.14
20:58
1cpp.ru/forum
29 anten
 
14.10.14
22:27
ок. буду курить форум. спасибо.
30 Chameleon1980
 
14.10.14
23:59
(16) скока их?
31 Chameleon1980
 
15.10.14
00:01
(28) +1 и все в ваших руках
32 Злой Бобр
 
15.10.14
03:23
(0) Все зависит от того что вы там за систему бонусов напридумывали. Вариантов, как вы понимаете (надеюсь), очень много. Соответственно и решений вопроса может быть несколько.
Да, придется делать БД в скуле в которой и хранить данные по бонусам. Опять таки - что хранить, зависит от того что вы напридумывали. БД синхронизировать средствами СУБД через определенное время. Недостатки отсутствия связи думаю сами понимаете ...
33 Il19
 
15.10.14
06:16
как вариант он-лайн: основная база слушает tcp порт, а кассы (при наличии связи) получают и пишут что надо в осн.базу. если нет связи, то сделать очередь и при появлении только дописывать бонусы.

по работе 1с с tcp/ip куча инфы (есть и внешн. компоненты: RiK_Inet, NetaInet и т.д.).
34 anten
 
15.10.14
10:18
(30) две.
35 anten
 
15.10.14
10:20
(32) главный вопрос где хранить остатки по бонусам. как их начислять - это отдельный вопрос (тариф "простой", логарифмическая линейка для расчета остатка в подарок:). хранить нужно номер карты и движения по ним с привязкой к номеру чека.
36 anten
 
15.10.14
10:21
(33) стабильно работает?
37 Злой Бобр
 
15.10.14
12:13
(35) Ну тогда ответ я вам дал. Берите тот же экспресс от мелкомягких и делайте БД. Там по сути пара-тройка таблиц будет, если все так как вы сказали.
38 Il19
 
16.10.14
05:39
(36) Это будет зависить от стабильности самой 1С. если осн. база перестанет "слушать" порт - то увы, но это проверяется любыми системами контроля. Либо если сетка глючная.

По организации структуры бд: можно в 1с-ии, можно на стороних бд - это уже зависит от фантазии разраба... но, как я думаю, поддерживать проше ту систему, которая более однородна, а не состоит из кучи разномастных костылей. если управляющая 1С - то проше остальное, по возможности, прикручивать от 1С и средствами 1С, если 1с сильно тупит - то 1с++.
39 Il19
 
16.10.14
05:44
(38) ну и в продолжения огр.структуры (по своему опыту):
если допил одноразовый "на сейчас" то проще в стороней бд, если на перспективу, долгосрочный или периодически будет использоваться  - то в 1с.
40 vis_tmp
 
16.10.14
07:35
А что будет когда у вас появится второй магазин?
41 anten
 
16.10.14
14:30
(35) а почему экспресс? просто основная база на 2000-м крутится.
42 anten
 
16.10.14
14:34
(40) навряд ли. скорее эти закроются :)
43 Злой Бобр
 
16.10.14
15:11
(41) Вероятно потому что вы изначально указали что кассы работают каждая со своей базой. Бред конечно, но это ваш вазелин - мне не жалко.
Соответственно на том же экспрессе наваять пару-тройку табличек будет быстрее. Плюс синхронизация на уровне СУБД. Плюс все легально. Плюс ...
44 anten
 
16.10.14
15:27
(43) если бы всё было в одной базе - было бы проще. но отказоустойчивость бы сильно пострадала. а так сервер отрубился - кассы работают. сеть упала - кассы работают. плюс скорость работы в одной базе значительно бы упала. насколько я знаю, крупные сети так и поступают: на каждой кассе своя база, синхронизация с основной по расписанию . а вот бонусы надо чтоб сразу синхронизировались.
45 anten
 
16.10.14
15:46
мне было бы проще писать через ОЛЕ. примерно такой алгоритм:
1. при запуске базы на кассе, подключение к общей базе через ОЛЕ.
2. при оплате или начислении бонуса - проведение в общей базе движения по карточке с привязкой к номеру чека.
3. обработка ошибок: если ошибка в ОЛЕ (нету связи, не удалось провести документ), запись в константу факта сбоя, начисление бонусов оставить, списывать не давать.
4. при повторном открытии читаем константу, если был сбой - перепроверяем что провели по бонусам в общей базе ( за сегодня).
ну как-то так. попахивает каким-то колхозом :)
46 anten
 
16.10.14
15:49
(45)+ хотя лучше не общую, а в отдельную. а так смысл тот же.
47 Злой Бобр
 
16.10.14
17:54
(44-46) Это не колхозом попахивает, а отсутствием опыта. Касательно (44) - у нормальных людей бек и фронт разделены. И разделены не по причине нагрузки на сервер, а как раз по причине обеспечить автономную работу в случае форс-мажора. Там простой выйдет дороже чем потратиться на обеспечение бесперебойной работы.
Что касается вас - я предложил вариант. Ну а вам уже решать - подходит или нет.

P.S.
Если это 1 торговая точка то я б все вел в одной скульной базе и незаморачивался.