Как программно определить, что сейчас запущен обмен #729879


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

В этой группе 1С