|
Как программно определить, что сейчас запущен обмен | ☑ | ||
---|---|---|---|---|
0
mirajen
26.12.14
✎
11:12
|
Добрый день!
Подскажите, как программно определить, что в текущий момент выполняется обмен данными (под другим пользователем)? Столкнулись с проблемой - если в момент пробития чека идет автообмен (конфигурация Розница 1, база в магазине файловая, автообмен настроен по расписанию под пользователем Автообмен), то периодически возникают либо проблемы с пробитием чека на ФР, либо при создании чека в базе. |
|||
1
hawksib
26.12.14
✎
11:16
|
ну, наверно, если пользователь в базе, значит идёт обмен, перед событием проверяй в базе ли пользователь, в активные пользователи программно заглянуть не знаю как, но думаю, что можно
|
|||
2
Hans
26.12.14
✎
11:19
|
программно ты ни как не определишь если это не прописано. В начале обмена в регистре прописать установку флага, в конце обмена снять флаг. Все равно не поможет, не будет же клиент ждать когда обмен кончится.
|
|||
3
mirajen
26.12.14
✎
11:23
|
(1) пользователь Автообмен всегда в базе, но обмен запускается каждые 20 минут.
|
|||
4
mirajen
26.12.14
✎
11:26
|
(2) т.е. готовых типовых переменных для этого не предусмотрено.
регистр, да, нужно будет попробовать..))) а так обмен у нас недолго идет, проще клиента будет уговорить минутку подождать, чем потом 10 минут разбираться, что с чеком, и как быть дальше) |
|||
5
hawksib
26.12.14
✎
11:28
|
(4) можно ещё писать не в регистр, а в файл на жестком диске, если так хочешь реализовать, грубо говоря: файл есть - обмен идет, файла нет - обмен не идёт. т.е. сделать чтобы при начале обмена создавался файл, который будет блокировать работу некоторых процедур, делать, конечно, придётся всё программно
|
|||
6
lea_220400
26.12.14
✎
11:56
|
встречали такие проблемы.
есть идеи как это все оптимизировать. |
|||
7
lea_220400
26.12.14
✎
11:58
|
нужно больше данных: как организован обмен, какой транспорт (ftp, web-сервис и т.д.)
много ли переделывали в части работы с чеком и метаданными, которые он изменяет при записи/проведении/обмене. |
|||
8
Бригада бронепоезда
26.12.14
✎
12:00
|
ВыполняетсяОбмен = МоерегламентноеЗадание.ПоследнееЗадание.Состояние = состояниеФоновогоЗадания.Активно
|
|||
9
mirajen
26.12.14
✎
12:31
|
(5) или так. нужно подумать как удобнее сделать)
(7) обмен под пользователем Автообмен, по времени, каждые 20 минут, выгрузка в файл на ФТП. С чеком ничего не делали. (8) не очень поняла. и разве запуск автообмена по расписанию в моем случае это будет фоновым заданием? |
|||
10
lea_220400
26.12.14
✎
12:43
|
для серверной БД - 100% фоновое, на файловой не помню точно, там обработчиком ожидания сделан запуск если указана константа - интервал опроса выполнения рег заданий для файловой бд. там указывается количество секунд: если не 0, то тогда выполняются hut задания преднастроенные.
|
|||
11
lea_220400
26.12.14
✎
12:44
|
hut = рег
|
|||
12
Бригада бронепоезда
26.12.14
✎
12:44
|
(9) твое регл задание может генерировать сколько угодно фоновых заданий
|
|||
13
hawksib
26.12.14
✎
12:46
|
(9) если делать как (5) то меньше изменений в конфе, а по моему субъективному мнению это более хорошо
|
|||
14
lea_220400
26.12.14
✎
13:03
|
зачем делать метаданные новые только чтобы определить запущен ли обмен?
Нужно подходить к вопросу чуть шире, т.к. цель стоит совершенно другая: нужно сделать так, чтобы чеки печатались и не было блокировок. Для такой цели совершенно другие процессы необходимо затронуть и программировать придется не мало, т.к. если говорим про розницу - костыль не подойдет, а вдруг у Ирины тьма магазинов в сети и каждый случай уникален? и процесс с определением рег задания - не подойдет, а вдруг там их тьма? там есть реально тьма заданий. Вот сел к примеру маркетолог и нафигачил акцию с периодичным периодом обновления сегмента товаров = + одно рег задание и таких вещей много. надо подумать над архитекутрой и мыслей много. вот к примеру какие метаданные стоят на обмене - опрелить можно, можно понять время, когда пакеты будут улетать в центральный узел из почки. можно опереться на это. или сделать к примеру запись в файл - определенного чека, ведь в Рознице они пишутся в файлы ) в случае вылета в дамп БД, даже в серверной БД они пишутся в файл. Но блокировать запись/печать/проведение чека на программном уровне нельзя: а вдруг ftp недоступен?, проблемы в сети магазина и т.д. то можем словить ситуацию, что на кассе стоит покупатель и режим РМК на пробитии поймал "зайца" и все. Нужно подумать и придумать архитектуру и ее запрограммировать. |
|||
15
lea_220400
26.12.14
✎
13:05
|
но не опираться на блокировку - как на цель: определили и решился вопрос.
|
|||
16
mirajen
26.12.14
✎
17:59
|
(14) ".. ведь в Рознице они пишутся в файлы " - не очень поняла о чем вы, разве при штатном режиме работы 1С пишет чеки в файл? (про дамп при падении точно не знаю, весьма возможно)
(15) Про жесткие блокировки речи и не идет - была идея выдавать предупреждение о том, что сейчас идет обмен, возможны проблемы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |