#0
by Enya
Добрый день! Существует такая проблема: стоит розница РИБ - обмен настроен каждый час(выгрузка и загрузка с обоих сторон). Обмен настроен по расписанию. Суть проблемы в том, что бывают такие моменты когда идет пробитие чека и стартует обмен(загрузка данных) - тут таки происходит ошибка пробития чека(т.е обмен все блокирует), самое страшное и серьезное в этой ситуации, то что стали пропадать чеки время от времени(бесследно),т.е обмен включился во время записи чека в базу, произошла блокировка и чек не куда не сохранился. Может кто то уже сталкивался с такой проблемой. Или есть какие мысли по этому поводу, как лучше сделать, чтобы избежать такой ситуации?!
#1
by Renium
Я не сталкивался, но мне кажется, что если положить под SQL то проблему можно решить раз и навсегда, обойдясь без 1С-ного обмена, делая обмен средствами SQL.
#2
by Ork
Средствами 1С - выставлять флаги "идет обмен" и "идет проведение чека". После выполнения заданий - сбрасывать. Перед началом обработки проверять. И не выполнять до сбрасывания флага. В качестве флага можно пользовать константу.
#3
by Enya
немного не поняла, поясни пожалуйста. есть похожая идея, т.е после пробития чека смотреть нужен обмен или нет, использяю константу. Но не очень бы хотелось прибегать к такому способу. Просто надеюсь на тот, что есть какие то стандартные возможности платформы о которых я не в курсе. Платформа кстати 8.2.
#4
by Renium
База кладется под СУБД и представляет собой не один файл *.1CD, а множество сравнительно небольших файлов, организованных в таблицы. Записью, чтением и блокировками управляет СУБД. Приложение 1с "общается" с СУБД через программный продукт "1С сервер"... Имея под СУБД две базы и задачу синхронизации данных между ними, можно средствами СУБД организовать миграцию данных. При этом данные из одной базы в другую будут попадать в течении нескольких секунд.
#6
by Enya
не стоило так прям расжовывать=) Но спасибо за старание. Просто вопрос в том,что они обе должны быть SQL?! Одна из этих баз SQL - главный узел. Но обмен настроен с помощью файлов, которые заливаются на FTP.
#7
by Renium
Потому что подчиненная файловая. Поэтому обмен через файлы и FTP. Да, обе должны быть SQL.
#8
by georgebgk
Может быть, при открытом чеке нужно тормознуть обработчик ожидания, который следит за вашим расписанием? А при закрытии чека снова включать. В КА он называется "ПоддержкаРегламентныхЗаданийДляФайловойВерсии", в рознице не знаю. Недостаток в том, что в этом случае остановятся все регламентные задания, пока не закрыт чек.
#15
by Axel2009
т.е. в 1с идет перегрузка не сохраненных новых документов?? и изза этого блочится вся перегрузка? =)
#17
by Ткачев
У меня все тупило из-за этих чеков на продуктовом магазине, я убрали их вообще из обмена и все стало более-менее лучше работать, т.е. чеки у меня только на кассе.
#18
by Ткачев
Если очень надо их то больше всего подходит. Тупить тогда оба будете и кассир и обмен.
#19
by Алистар
Нужно сделать чтобы приоритет был у чеков. Пусть при блокировках вылетат обмен а не чек.
#21
by Алистар
Можно уменьшить параметры в ПланыОбмена.ЗаписатьИзменения(,) ПланыОбмена.ПрочитатьИзменения(,) Посмотреть нет ли где НачатьТранзакцию ЗакончитьТранзакцию Нет ли во время обмена тяжелых запросов.
#23
by Axel2009
во время обмена блочится таблица плана обмена на время всей выгрузки. и любой объект, попавший под прицел нельзя будет перезаписать.
#24
by Enya
Мысль конечно гениальная, первое что приходит в голову. А второе, что приходит - это как это сделать?! не происходит запись или пробитие чека на фискальном регистраторе! да да да!!!
#26
by Aleksey
1С это не даст сделать. Более того на таблицу изменений нельзя даже наложить блокировку. Т.е. выгружается и блокируется вся таблица
#29
by Aleksey
А для чего такой частый обмен? Может сделать 2 обмена? Каждый час загрузка прихода и справочника, и вечером выгрузка документов
#31
by Enya
приход бывает несколько раз в день, а еще нужны некоторые данные. Поэтому такой частый обмен и не как по другому.
#34
by Aleksey
Между началом обмена и блокировкой есть достаточно времени чтобы пробить чек (пока скачает с FTP, потом загрузка, только потом, при выгрузки, блокировка). Так что проще при записи проверять "идет обмен, подождите"
#35
by Enya
...мдя....что то я аш в осадок выпадаю, что то не учла.... ха!! а если на некоторых магазинов, чеков уйма, предлагаешь все время обмен проводить?!
#36
by Enya
...как вариант. Просто, это можно сделать, но думаю не везде получится. Есть где обмен идет на одном компе, а чеки пробивают на другом.(связаны локально).
#39
by Enya
просто и так много времени уходит на обмен, скапливается очередь. Поэтому, нужно как можно незаметнее это сделать самим. И так чтобы исключить ошибки пробития чеков.
#43
by Ткачев
т.е. открыто две адинэски, под кассиром и под автообменом, кассир продает, автообмен раз в час ведет обмен с ЦУ.
#44
by _vovanidze_3412341
А поможет? помоему нет...все равно блокировки будут..делайте обмен вручную..когда чеки не бьете.
#46
by _vovanidze_3412341
с согласен второй вариант подойдет..у меня тож был трабл с блокировками...Утром гружу приход-расход - оплаты из другой не 1с прожки торговой в бухию...ничего лучше не придумал как стартовать обмен с 11 а до этого времени все узлы грузятся. На досуге попробую.
#47
by Vovan1975
ну тогда можно создать второй план обмена и посвятить его только чекам, исключив чеки из первого. Соответственно обмен чеков делать только по второму, "чековому" плану обмена. Еще вариант - отключить авторегистрацию и факт проведения-перепроведения чека фиксировать в каком- нибудь регистре сведений а вечером запускать регламентное задание которое будет регистрировать изменения чеков в плане обмена и соответственно выгружать их уже после рабочего дня. Еще вариант - уменьшить интервал обмена, тогда обмен будет идти чаще но занимать меньше времени, соответственно блокировка будет меньше длиться....
#48
by Vovan1975
+"Еще вариант - отключить авторегистрацию" - имеется в виду авторегистрацию в плане обмена для чека, остальное не трогать...
#49
by Vovan1975
в общем то второй вариант можно реализовать и не только с помощью регистра сведений но и плана обмена, используя его как регистратор изменения...
#51
by Ткачев
+Чек сам по себе мало что меняет, он ведь за собой еще тащит регистры накопления, отключать многовато надо будет.
#52
by Vovan1975
ну если авторегистрация отключена то решистрация изменений делается программно, значит отключить программную регистрацию
#53
by Vovan1975
регистры накопления и прочие регистры они как бы отдельно грузятся. Я понял что у лочится таблица документа а не регистры...
#57
by Ткачев
После закрытия смены делаем обмен и выгружаются все чеки за закрытую смену. ИЛИ НЕ ПараметрыСеанса.НаличиеОбменаДаннымиПоКассе Тогда
#59
by Vovan1975
"лочится таблица изменений плана обмена." нет такой таблицы. Изменения хранятся в таблице документа, не?
#61
by Enya
чеки нужны обзательно в течении дня. Конфига не типовая, поэтому в чеках есть очень нужные данные. А чаще сделать трудно, потому что 20 узлов.
#63
by Vovan1975
а соврал - изменения хранятся в отдельной таблице для каждого дока эта таблица своя...
#65
by Vovan1975
ну для иерархии это не отмаз, однако насчет участить интервал до, например, раз в 5 минут я бы подумал, хотя тут надо смотреть скорость загрузки изменений в ЦУ из сообщения обмна...
#66
by Axel2009
не в таблице документа. в отдельной таблице. только я не помню для каждого объекта метаданных отдельная таблица на все планы обмена, или по каждому плану обмена по таблице на все метаданные.
#67
by Vovan1975
и кстати насчет пропадания чеков - ты иэти пропавшие цеки в центральной базе искала? А то мож добрая душа в ЦУ поменяла, например, организацию, и тю-тю - в одной периферийке чек пропал, в другой - "воскрес"
#68
by Vovan1975
конструктор запросов запусти, воткни в левом верхнем углу флажок "отображать таблицы изменений" и будет тебе счастье...
#69
by Axel2009
еще можно поиграться с дублированием документа. один в плане обмена, другой нет. тот что вводят - он не обменивается. и если есть обмен в момент проведения, тогда не дублировать его. а в перегрузке проверять на такие вещи и досоздавать до перегрузки.
#74
by Ork
Вцелом мысль верная. Но хранить флажок в параметрах сеанса - есть некрасиво. Поскольку о том, что идет обмен или проведение чека будет знать только текущий сеанс. И не будут знать остальные. Я бы все-таки использовал константу.
#77
by Enya
это как?! резко становится другим. Такое бывает редко. у меня предположение, что просто идет накладка записи документа и обмена.
#79
by Ork
Предположений не нужно. До момента азаписи объекта в базе не существует. Транзакция записи из-за наложенных обменом блокировок отменяется. Ваша программа такую ситуацию не обрабатывает. И повторных попыток записи не делает. Соответственно чека в базе нет.
#81
by Vovan1975
котрую тоже можно выставлять в регламентном задании и таким образом автоматизировать процесс целиком
#82
by Ork
Ну так положите вызов проведения чека внутрь попытка -исключение - КонецПопытки. И если ошибка из-за блокировки повторите запись(проведение).
#83
by ProgAL
При закрытии чека, когда он уже записан проведн и установлен признак "Пробит" записывай, как советовали выше, в регистр сведений или вручную в дополнитеьлный план обмена только для чеков вручную вноси статус изменен. При выгрузке выбирай изменные чеки из этого регистра/плана обмена и нарастающим итогом с начала дня выгружай без всяких блокировок. При закрытии смены, формируй итоговую финальную выгрузку за день и очищай регистр сведений/план обмена.
#85
by Алистар
А вроде же таблица регистрации лочится не на все время обмена а на время обработки текущего объекта. Один объект записывается доли секунды, чек должен успеть вклиниться и заблокировать уже таблицу регистрации. ПрочитатьИзменения(<Чтение сообщения обмена>, <Элементов в транзакции>) " Но при чтении сообщения в многопользовательском режиме могут быть конфликты блокировок между транзакцией, читающей данные из сообщения и помещающей их в базу данных, и транзакциями, выполняемыми другими пользователями. Кроме того транзакции, в которых модифицируется слишком большой объем данных могут работать медленно или вовсе завершаться аварийно. Особенно в файловом варианте базы данных. Для того, чтобы избежать таких неприятностей можно задать значение этого параметра, отличное от значения по умолчанию. Чем меньше значение параметра, тем меньше вероятность конфликта блокировок, но выше вероятность помещения в базу данных несогласованных данных. Значение по умолчанию: 0 "
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- РиБ Напомните ссылку как вернуть на НЕ РиБ
- РИБ блокировка
- Ошибка при обмене в РИБ
- РИБ
- Колизия при обмене РИБ. Как устранить?
- УТ10. Обмен между разными базами через РИБ со снятием галочки "РИБ"
- Ошибка при чтении изменений при обмене РИБ УТ 10.3
- Для чего нужен РИБ с двумя планами обмена: РИБ и НеРИБ ?
В этой группе 1С
- Создание кнопок программно в управляемой форме.
- БГУ, разработка регламентированной отчётности для управляемого приложения.
- Документ отчет комитенту УТ 11
- Планировщик на сервере 2008 завершает задание с кодом (0x40010004)
- суммировать результаты запроса
- v7: КД 2.1 Перенос реквизитов шапки - ТабличнаяЧасть
- КД Дублируются группы справочников
- Помогите!! Обмен данным БП-Документооборот(Проф)
- как работать с putty в 1с
- Как пересчитать Начисление в ЗУП?
- Пропал звук в Skype 5.5 (звук звонка, голос есть).
- Продвинутая проверка орфографии в 1С (подчеркивание ошибок)
- Переход в начало выборки
- v7: Таблица значений не растягивается на всю форму
- Скд программный вызов
- Заполнять из данных заполнения 8.2
- Регистр накопления Учет затрат
- Какой аналог Бух. дока поступление на расчетный счет, в конфе УПП
- Подскажите что делать с этой ошибкой SQL
- УПП где поставить МРОТ