Как побороть "Не удалось заблокировать таблицу..." при проведении.
Здравствуйте, уважаемые форумчане!
Розница 2.1.2.8 на 1С:Предприятие 8.3.4.482. Файловый.
Win8.1 x86.
При сохранении или проведении документов, а так-же пробитии чеков в РМК, иногда, с разной периодичностью (раз в месяц, иногда даже 3 раза в день), появляется сообщение: "Не удалось заблокировать таблицу '_AccumRg3919'. В этот момент документ не сохраняется, повторная попытка сохранить/провести - удачная; что касаемо чеков из РМК при появлении этого сообщения, на фискальнике (вернее ПД) чек - пробиваются, в 1С - нет.
Последний раз при закрытии смены появилось: "Не удалось заблокировать таблицу '_DocumentChngR1681'" с вытекающими из этого последствиями.
P.S. Включено выполнение регламентных заданий (всё по умолчанию + сценарий синхронизации по магазину РИБ раз в 30мин.). Пока копаю журнал регистрации, может что с этим связано...
Вопрос: По какой причине "Не удалось заблокировать таблицу..."? Что это может быть и где копать?
Заранее крайне благодарен!
Розница 2.1.2.8 на 1С:Предприятие 8.3.4.482. Файловый.
Win8.1 x86.
При сохранении или проведении документов, а так-же пробитии чеков в РМК, иногда, с разной периодичностью (раз в месяц, иногда даже 3 раза в день), появляется сообщение: "Не удалось заблокировать таблицу '_AccumRg3919'. В этот момент документ не сохраняется, повторная попытка сохранить/провести - удачная; что касаемо чеков из РМК при появлении этого сообщения, на фискальнике (вернее ПД) чек - пробиваются, в 1С - нет.
Последний раз при закрытии смены появилось: "Не удалось заблокировать таблицу '_DocumentChngR1681'" с вытекающими из этого последствиями.
P.S. Включено выполнение регламентных заданий (всё по умолчанию + сценарий синхронизации по магазину РИБ раз в 30мин.). Пока копаю журнал регистрации, может что с этим связано...
Вопрос: По какой причине "Не удалось заблокировать таблицу..."? Что это может быть и где копать?
Заранее крайне благодарен!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Это как раз РИБ и виноват.
Проводимый документ пытается писать в _DocumentChngR1681 факт своего изменения, чтобы зарегистрироваться к обмену в РИБ. А при этом происходит чтение данных для выгрузки, блокирующее внос новых изменений. Это by design, либо смиритесь, либо откажитесь от РИБ.
Проводимый документ пытается писать в _DocumentChngR1681 факт своего изменения, чтобы зарегистрироваться к обмену в РИБ. А при этом происходит чтение данных для выгрузки, блокирующее внос новых изменений. Это by design, либо смиритесь, либо откажитесь от РИБ.
Спасибо огромное за подсказку!
Просмотрел 5 последних сбойных чеков (кстати они в Рознице записываются непроведёнными в "Чеки ККМ", без статуса с правильной датой и временем 00:00:00). В журнале регистрации, действительно эти сбойные чеки пробивались во время выполнения сценария обмена по магазину.
Вопрос_1: А не существует ли каких-либо обработок, которые бы предупреждали пользователя о начале синхронизации, не давая выполнить действие до её завершения?
А то получается не очень удобно (например, с чеками, на фискальнике пробивается, а в 1С - нет).
Или синхронизировать только вручную?
Вопрос_2:
Помимо выполнения сценариев синхронизации, какие-то ещё могут препятствовать?
Заранее спасибо.
Просмотрел 5 последних сбойных чеков (кстати они в Рознице записываются непроведёнными в "Чеки ККМ", без статуса с правильной датой и временем 00:00:00). В журнале регистрации, действительно эти сбойные чеки пробивались во время выполнения сценария обмена по магазину.
Вопрос_1: А не существует ли каких-либо обработок, которые бы предупреждали пользователя о начале синхронизации, не давая выполнить действие до её завершения?
А то получается не очень удобно (например, с чеками, на фискальнике пробивается, а в 1С - нет).
Или синхронизировать только вручную?
Вопрос_2:
Помимо выполнения сценариев синхронизации, какие-то ещё могут препятствовать?
Заранее спасибо.
Можно при выполнении обмена поднимать некий флаг, при завершении - опускать, и проверять его наличие перед пробитием чека.
На _DocumentChngR1681 - только обмен.
На _AccumRg3919 - любая другая транзакция.
Вообще лечить нужно причину, а не следствие. Архитектурно как система построена? Судя по таймауту на блокировке _AccumRg3919 (основной таблице регистра накопления), база файловая? Покупайте сервер.
На _DocumentChngR1681 - только обмен.
На _AccumRg3919 - любая другая транзакция.
Вообще лечить нужно причину, а не следствие. Архитектурно как система построена? Судя по таймауту на блокировке _AccumRg3919 (основной таблице регистра накопления), база файловая? Покупайте сервер.
(15) А можно по подробней по поводу флага?
У меня (до изменения количества транзакций с "0" до "1", после - ещё не известно), если пробитие чека происходило в момент синхронизации, в Рознице чек не пробивался и сохранялся как чек без статуса непроведённый, с правильной датой, но временем 00:00:00, + получал сообщение в РМК "Не удалось заблокировать таблицу...", а на фискальнике пробивался. Как следствие, данные фискальника начинали разниться с Розницей.
У меня (до изменения количества транзакций с "0" до "1", после - ещё не известно), если пробитие чека происходило в момент синхронизации, в Рознице чек не пробивался и сохранялся как чек без статуса непроведённый, с правильной датой, но временем 00:00:00, + получал сообщение в РМК "Не удалось заблокировать таблицу...", а на фискальнике пробивался. Как следствие, данные фискальника начинали разниться с Розницей.
(15) asved.ru,
Здесь вопрос в том, чтобы флаг включать именно при блокировке таблицы, а не при начале обмена, верно?
Вероятность блокировки при количестве элементов на транзакцию установленном в 1 - очень не большая.
А вот то, что обмен остановит кассу при топорном флаге - 100 %. :-)
Здесь вопрос в том, чтобы флаг включать именно при блокировке таблицы, а не при начале обмена, верно?
Вероятность блокировки при количестве элементов на транзакцию установленном в 1 - очень не большая.
А вот то, что обмен остановит кассу при топорном флаге - 100 %. :-)
(17) zoytsa,
Вероятность блокировки при количестве элементов на транзакцию установленном в 1 равна 100%. Блокировка накладывается в любом случае.
Но поскольку элементов мало, выгрузка происходит быстро и блокировка удерживается недолго, как правило, значительно менее 20 секунд (настройка таймаута по умолчанию)
Поэтому ошибку таймаута на блокировке мы почти гарантированно не получим.
Вероятность блокировки при количестве элементов на транзакцию установленном в 1 - очень не большая
Вероятность блокировки при количестве элементов на транзакцию установленном в 1 равна 100%. Блокировка накладывается в любом случае.
Но поскольку элементов мало, выгрузка происходит быстро и блокировка удерживается недолго, как правило, значительно менее 20 секунд (настройка таймаута по умолчанию)
Поэтому ошибку таймаута на блокировке мы почти гарантированно не получим.
...база файловая?
Она самая.
Покупайте сервер.
Пока не вариант.
Скорее всего остановлюсь на написании обработки, выдающей предупреждение о начале авто-синхронизации и о её окончании, что-б в этот момент ничего не проводить...
Всем спасибо а участие и помощь.
Если будут ещё какие предложения, буду рад услышать.
А попробуйте в параметрах транспорта сообщений в обмене, количество элементов в транзакции уменьшить пусть даже до одного, а то у вас наверное весь обмен в одной транзакции выполняется. думаю тогда не будут пересекаться таблицы,у меня в 20 магазинах такого не происходит, обмен раз в 15 минут.
Новая Розница 2.2.7.37, проблема старая (это уже другая БД, но проблема такая-же, посему апну старую тему).
РИБ с сценариями автоматического обмена каждые 30 мин. всего 4 узла (главный и 3 подчинённых).
Если пробитие чека попадается на момент выполнения сценария синхронизации, иногда получаем пробитый чек на ФР и не пробитый чек в рознице из-за конфликта блокировок.
(10) В этой Рознице 2.2.7.37 настроек по количеству элементов транзакции не обнаружил. Хотя и на 2.1.2.8 это не решало проблему полностью, а только заметно снизжало количество конфликтов блокировок.
Появились способы разрулить данную проблему?
Заранее крайне благодарен!
РИБ с сценариями автоматического обмена каждые 30 мин. всего 4 узла (главный и 3 подчинённых).
Если пробитие чека попадается на момент выполнения сценария синхронизации, иногда получаем пробитый чек на ФР и не пробитый чек в рознице из-за конфликта блокировок.
(10) В этой Рознице 2.2.7.37 настроек по количеству элементов транзакции не обнаружил. Хотя и на 2.1.2.8 это не решало проблему полностью, а только заметно снизжало количество конфликтов блокировок.
Появились способы разрулить данную проблему?
Заранее крайне благодарен!
А попробуйте в параметрах транспорта сообщений в обмене, количество элементов в транзакции уменьшить пусть даже до одного, а то у вас наверное весь обмен в одной транзакции выполняется.
Да, в 1-ой (т.к. значение не указано).
Спасибо за совет! Попробую.
Но на всякий случай уточню этот момент... Если "Элементов в транзакции" поставлю "1", это никак отрицательно не скажется на РИБ'е? На корректность синхронизации?
Всем большое спасибо за подсказку!
Поставил количество элементов транзакций загрузки и выгрузки "1" на всех машинах. Произвёл обмены, пока всё штатно. Буду смотреть дальше, будут ли обломы при пробитии чеков и других проведениях документов.
Как я понял, чем меньше элементов, тем дольше обмен, но меньше вероятность блокировок таблиц?
С сервером - взял на заметку, но пока воздержусь (по крайней мере в этом году).
Поставил количество элементов транзакций загрузки и выгрузки "1" на всех машинах. Произвёл обмены, пока всё штатно. Буду смотреть дальше, будут ли обломы при пробитии чеков и других проведениях документов.
Как я понял, чем меньше элементов, тем дольше обмен, но меньше вероятность блокировок таблиц?
С сервером - взял на заметку, но пока воздержусь (по крайней мере в этом году).
Новая Розница 2.2.7.37, проблема старая (это уже другая БД, но проблема такая-же, посему апну старую тему).
РИБ с сценариями автоматического обмена каждые 30 мин. всего 4 узла (главный и 3 подчинённых).
Если пробитие чека попадается на момент выполнения сценария синхронизации, иногда получаем пробитый чек на ФР и не пробитый чек в рознице из-за конфликта блокировок.
[10] В этой Рознице 2.2.7.37 настроек по количеству элементов транзакции не обнаружил. Хотя и на 2.1.2.8 это не решало проблему полностью, а только заметно снизжало количество конфликтов блокировок.
Появились способы разрулить данную проблему?
Заранее крайне благодарен!
РИБ с сценариями автоматического обмена каждые 30 мин. всего 4 узла (главный и 3 подчинённых).
Если пробитие чека попадается на момент выполнения сценария синхронизации, иногда получаем пробитый чек на ФР и не пробитый чек в рознице из-за конфликта блокировок.
[10] В этой Рознице 2.2.7.37 настроек по количеству элементов транзакции не обнаружил. Хотя и на 2.1.2.8 это не решало проблему полностью, а только заметно снизжало количество конфликтов блокировок.
Появились способы разрулить данную проблему?
Заранее крайне благодарен!
Нет. Пока только регулярно устраняю последствия. Как правило, проблема создаёт головную боль с чеками (чек пробивается на ККТ, а в 1С - нет). Приходится перенастраивать в справочнике "Кассу ККМ" в 1С на "Без подключения оборудования", пробивать чек в 1С, затем снова перенастраивать на ККТ. В случае неудачного открытия смены (в момент синхронизации), закрывать смену через тест-драйвер и снова открывать в 1С.
Большая сеть. Эта проблема регулярная. Кассы - Атол и Пирит .
Проблема не решена, частично ускоряется обработкой что ставит статус чекаКккм - пробитый , если в кассу пробилось, а в 1С нет.
Вопрос - в конфе есть общая константа количество элементов в транзакции , и есть два параметра в обменах - транзакция на отправку и на получение.
В чем разница ?
И пробовали их менять ?
Да, базы файловые, 2.2.9.20 , платформа 8.3.12 , базы от 4 до 9 гиг., магазинов около 100, касс 200., обмен 15 минут автомат везде.
Проблема не решена, частично ускоряется обработкой что ставит статус чекаКккм - пробитый , если в кассу пробилось, а в 1С нет.
Вопрос - в конфе есть общая константа количество элементов в транзакции , и есть два параметра в обменах - транзакция на отправку и на получение.
В чем разница ?
И пробовали их менять ?
Да, базы файловые, 2.2.9.20 , платформа 8.3.12 , базы от 4 до 9 гиг., магазинов около 100, касс 200., обмен 15 минут автомат везде.
Коллеги, привет!
Та же тема!
Что подскажите?
Та же тема!
Что подскажите?
Запись чека не выполнена по причине:
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(10451)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1055)}: Не удалось зарегистрировать изменения на узлах плана обмена ПоМагазину по причине: {ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(168)}: Ошибка при получении значения атрибута контекста (ДатаОбновленияПовторноИспользуемыхЗначенийМРО)
Если ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО <> АктуальнаяДата Тогда
по причине:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7938)}: Ошибка при вызове метода контекста (Выполнить)
Возврат Запрос.Выполнить().Пустой();
по причине:
Ошибка выполнения запроса
по причине:
Конфликт блокировок при выполнении транзакции:
Не удалось заблокировать таблицу '_NODE21'
по причине:
Не удалось заблокировать таблицу '_NODE21'
Показать{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(10451)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1055)}: Не удалось зарегистрировать изменения на узлах плана обмена ПоМагазину по причине: {ОбщийМодуль.ОбменДаннымиВызовСервера.Модуль(168)}: Ошибка при получении значения атрибута контекста (ДатаОбновленияПовторноИспользуемыхЗначенийМРО)
Если ПараметрыСеанса.ДатаОбновленияПовторноИспользуемыхЗначенийМРО <> АктуальнаяДата Тогда
по причине:
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7938)}: Ошибка при вызове метода контекста (Выполнить)
Возврат Запрос.Выполнить().Пустой();
по причине:
Ошибка выполнения запроса
по причине:
Конфликт блокировок при выполнении транзакции:
Не удалось заблокировать таблицу '_NODE21'
по причине:
Не удалось заблокировать таблицу '_NODE21'
Присоединяюсь к вопросу.
После обновления розницы на релиз 2.9.11.24 при синхронизации стал ловить такие сообщения "Не удалось заблокировать таблицу '_NODE21'".
Обмен раз в 15 минут через фтп.
Реже делать смысла нет - накапливается много данных, чаще тоже - если затык или файл большой, то файл будет обновляться чаще чем клиент его сможет принять.
_NODE21 это таблица плана обмена по магазину, в 2.2.7 конкретно такой ошибки раньше не было, но чеки иногда тоже не пробивались из-за блокировки.
Константу установил в значение 1, эффекта нет.
Из идей пока только попробовать софт для синхронизации файлов обмена, а в 1С уже переделать обмен на локальный ресурс.
После обновления розницы на релиз 2.9.11.24 при синхронизации стал ловить такие сообщения "Не удалось заблокировать таблицу '_NODE21'".
Обмен раз в 15 минут через фтп.
Реже делать смысла нет - накапливается много данных, чаще тоже - если затык или файл большой, то файл будет обновляться чаще чем клиент его сможет принять.
_NODE21 это таблица плана обмена по магазину, в 2.2.7 конкретно такой ошибки раньше не было, но чеки иногда тоже не пробивались из-за блокировки.
Константу установил в значение 1, эффекта нет.
Из идей пока только попробовать софт для синхронизации файлов обмена, а в 1С уже переделать обмен на локальный ресурс.
(34)
Такая же проблема возникла после обновления на 2,2,11,29 появилась. Хотя раньше работал обмен каждые 5 минут и мы не замечали.
При чем у нас в Рибе только ошибки, на основной базе проблем нет ...
Вам свою проблему удалось побороть?
бки раньше не было, но чеки иногда тоже не пробивались из-за блокировки.
Константу установил в значение 1, эффекта нет.
Константу установил в значение 1, эффекта нет.
Такая же проблема возникла после обновления на 2,2,11,29 появилась. Хотя раньше работал обмен каждые 5 минут и мы не замечали.
При чем у нас в Рибе только ошибки, на основной базе проблем нет ...
Вам свою проблему удалось побороть?
(38) К сожалению нет. Синхронизация через локальный ресурс вместо ftp не помогла. Но в этом релизе, по крайней мере, чек остается проведенным, хотя и без статуса. И программа научилась понимать пробился чек на кассе или нет. Следующая идея сделать регл задание на отслеживание таких чеков и автоматически подставлять статус пробитый + убрать сообщения с трехэтажным матом об ошибке.
Да и на основной базе ошибок и не должно быть если она серверная.
Да и на основной базе ошибок и не должно быть если она серверная.
(40) Узел же файловый. Блокировками управляет субд 1с. На серверной блокировками на уровне таблиц управляет, к примеру, ms sql server. Поэтому работает по-разному. Если, конечно, под "серверной базой" вы подразумеваете базу развернутую на сервере 1с предприятия, а не просто файловый главный узел РИБ на сервере-компьютере. Плюс на сервере обычно железо круче.
(41)
И мы свою проблему почти решили. У нас в обмен тянуло справочник банков постоянно и чеки старые за один день почему-то. И просто 1с ка долго обменивалась, когда это проходит быстро - пользователь почти не замечает и блокировок никаких не происходит
на сервере-компьютере
у нас сервер компьютер.
И мы свою проблему почти решили. У нас в обмен тянуло справочник банков постоянно и чеки старые за один день почему-то. И просто 1с ка долго обменивалась, когда это проходит быстро - пользователь почти не замечает и блокировок никаких не происходит
(34)
Странно . у нас обмен так же и бегает, 15 минут, но таких проблем не наблюдаю...
Вы константу не 1 ставьте - это 1 блок в синхроне, а опытным путем найдите оптимальное для вас значение. Может и 10 и 100. Смотря сколько данных уходит.
Чем она меньше - тем быстрее будет обмен и лочиться другие таблицы, но чащу будет блочbться именно таблица обмена - node21
А чем она больше - наоборот...
ODE21'".
Обмен раз в 15 минут через фтп.
Обмен раз в 15 минут через фтп.
Странно . у нас обмен так же и бегает, 15 минут, но таких проблем не наблюдаю...
Вы константу не 1 ставьте - это 1 блок в синхроне, а опытным путем найдите оптимальное для вас значение. Может и 10 и 100. Смотря сколько данных уходит.
Чем она меньше - тем быстрее будет обмен и лочиться другие таблицы, но чащу будет блочbться именно таблица обмена - node21
А чем она больше - наоборот...
Периодически обновляется информация о заказах, ценах, перемещениях, остатках итп. Кроме того был случай, когда наличие в цб актуальной информации помогло восстановить узел. Наверное, Вы правы, только удручает необходимость подстраивать бизнес-процессы под программу, а не наоборот.
(37)
:) Ну это же логично - вы берете типовой продукт за недорого, он ограничен определенными бизнес-процессами; либо вы разрабатываете свой продукт "под себя" но цена вопроса заметно выше.
(37)
На мой взгляд, наоборот, тут требуется отсутствие анархии, и работа по четкому расписанию (пример: к 14 часам подготавливаем новые товары и цены и передаем, магазин принимает обмен в 15 и готовит новые ценники и раскладку, в конце дня или утром принимает все изменения), а то бывают случаи когда новая цена уже прилетела а персонал еще даже не знает и ценники старые.
(37)
Для сохранения информации есть механизмы архивирования не в 1С, может быть теневое копирование windows например.
Вы правы, только удручает необходимость подстраивать бизнес-процессы под программу, а не наоборот
:) Ну это же логично - вы берете типовой продукт за недорого, он ограничен определенными бизнес-процессами; либо вы разрабатываете свой продукт "под себя" но цена вопроса заметно выше.
(37)
Периодически обновляется информация о заказах, ценах, перемещениях, остатках итп
На мой взгляд, наоборот, тут требуется отсутствие анархии, и работа по четкому расписанию (пример: к 14 часам подготавливаем новые товары и цены и передаем, магазин принимает обмен в 15 и готовит новые ценники и раскладку, в конце дня или утром принимает все изменения), а то бывают случаи когда новая цена уже прилетела а персонал еще даже не знает и ценники старые.
(37)
Кроме того был случай, когда наличие в цб актуальной информации помогло восстановить узел
Для сохранения информации есть механизмы архивирования не в 1С, может быть теневое копирование windows например.
подниму старую. тему. чисто для информации.
на данный момент в базе бегает примерно 120 РИБ по магазину + 2 бухи.
синхрон каждые 15 минут. полет нормальный.
база на sql , размер примерно 550 Гиг, активных юзверов около 50-60.
на данный момент в базе бегает примерно 120 РИБ по магазину + 2 бухи.
синхрон каждые 15 минут. полет нормальный.
база на sql , размер примерно 550 Гиг, активных юзверов около 50-60.
(47) не совсем понял вопрос. в чем сложности ? )
затыки были только в создании риба, давно перешли на создание риба от "пустого " узла.
обмен бегает, все штатно, настроено как обычно. ftp. в отправке только чуть изменили хождение цен.
для уменьшения блокировок уменьшили размеры транзакции до 10 позиций.
сейчас 2.3.4.33 , 800 гиг база, около 100 юзерей.
напряжно еще обновляться только .. )
затыки были только в создании риба, давно перешли на создание риба от "пустого " узла.
обмен бегает, все штатно, настроено как обычно. ftp. в отправке только чуть изменили хождение цен.
для уменьшения блокировок уменьшили размеры транзакции до 10 позиций.
сейчас 2.3.4.33 , 800 гиг база, около 100 юзерей.
напряжно еще обновляться только .. )
(51) да все верно
Попытка
УстановитьПривилегированныйРежим(Истина);
Константы.КоличествоЭлементовВТранзакцииЗагрузкиДанных.Установить(10);
УстановитьПривилегированныйРежим(Ложь);
Исключение
КОнецПопытки;
но это не панацея. т.к. таблица обмена блочится в любом случае. тут надо смотреть как много данных у вас едет, сколько времени и т.д.
Попытка
УстановитьПривилегированныйРежим(Истина);
Константы.КоличествоЭлементовВТранзакцииЗагрузкиДанных.Установить(10);
УстановитьПривилегированныйРежим(Ложь);
Исключение
КОнецПопытки;
но это не панацея. т.к. таблица обмена блочится в любом случае. тут надо смотреть как много данных у вас едет, сколько времени и т.д.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот