Имя: Пароль:
1C
1С v8
Как программно определить, что сейчас запущен обмен
,
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) Про жесткие блокировки речи и не идет - была идея выдавать предупреждение о том, что сейчас идет обмен, возможны проблемы.