#0
by lookas
Провожу такой эксперимент: 14 й релиз 8 ки, SQL версия. Сделал пустую конфу, в ней один регистр накопления Товары на складе с измерением товар. В расходной накладной при проведении делаю запрос к остаткам по товарам в документе, в конце проведения делаю бесконечный цикл. Запускаю второй сеанс. По идее, у меня должно получиться оприходовать товар, которого нет в проводимой расходке, ан нет, кофликт блокировок. Объясните, плиз, что я делаю не так, ибо такое ощущение, что блокировки не на уровне записей. Ничего другого, что могло бы блокировать (последовательности и т. д.) нет.
#2
by Мелкий бес
файловый вариант - блокировка таблиц клиент-серверный вариант - блокировка записей (для непустых таблиц)
#4
by Дяпти
В транзакции для регистров блокируется диапазон индекса, или таблица, если индекса не нашлось.
#6
by France
вопрос на засыпку - если добавляются новые записи, есть ли индекс в базе?.. PS это что же получается, граждане!! при проведении нового документа безусловно блокируется вся таблица?... моему возмущению нет предела.. беру плакаты и иду на селезневскую 21
#7
by Дяпти
Покажи как остатки выгребаешь. "в конце проведения делаю бесконечный цикл", гыгы, фантазия просто супер... Юзай Предупреждение.
#10
by Дяпти
только если таблица абсолютно пустая. И ваще какую ты видишь связь между наличием или отсутствием индекса в таблице и добавлением новых строк в таблицу?
#12
by France
твои слова? "В транзакции для регистров блокируется диапазон индекса, или таблица, если индекса не нашлось." так вот, добавляю новые записи в регистр сведений. Индекса SQL пока нету, потому что пока нету записей. Что будет блокироватся?..
#14
by Дяпти
Надо индексировать измерение Номенклатура. Надо, чтобы измерение Номенклатура в регистре шло первым по порядку.
#19
by ERWINS
Можно вопрос? а с чего вы взяли что регистр накопления не блокируется полностью самой 1с... Представте себе что если во время получения результатов кто то будет менять остатки... в результате могут быть совсем не верные значения..... и матюкать за неправильную работу будут 1с
#22
by France
что то не в порядке в датском королевстве.. отбор по набору измерений... надо будет осмыслить... респект за наводку..
#23
by МуМу
Для того что бы понять что именно блокируется достаточно выполнить в SQL несколько достаточно тривиальных действий.Для постоянного контроля можно настроить набор трас. Все это узнать можно почитав немного BOL и ряд обсуждений на sql.ru Насчет бесконечного цикла это конечно супер.
#24
by lookas
Да какая разница чем не давать завершиться транзакции, что вы пристали к моему циклу :)
#25
by France
+22 надо будет посмотреть, что за индекс и из каких полей он состоит.. приходилось смотреть?
#27
by Дяпти
тогда надо глядеть на стороне SQL сервера (там можно глянуть, освобождения какого ресурса ждет какой либо процесс). Ньюансов тут может быть много. Вообще смущает что у тебя идет отбор не по единичной номенклатуре, а по вошедшей в подзапрос. Попробуй попроводить документ с одной строкой.
#29
by lookas
с одной строкой провожу, щас сделаю условие в запросе Номенклатура = &Номенклатура, еще можно попробовать добавить предложение ДЛЯ ИЗМЕНЕНИЯ хотя врядли поможет, судя по документации это блокировка записей на чтение в транзакции
#30
by МуМу
То 28. Ну даже не знаю с чего начать:) Для 7-ки давным давно я написал краткую статейку в контексте блокировок , хотя сейчас конечно мое понимание механизма блокировок в SQL 2000,2005 совершенно на другом уровне. Вообщем расказывать основы лениво. Разберись сначала поиском что означают в sql команды типа sp_lock, select * from syslockinfo . Также прочитай о типах блокировок(особенно удели внимание хинтам). После этого имеет смысл обсуждать конкретные вопросы. А так о этом я мог бы расказывать бесконечно долго. Мое время дорого стоит да и лениво просто.
#32
by Neco
ИТС: "Особенности блокировок объектных и необъектных данных при использовании клиент-серверной версии 1С:Предприятия 8.0 Все хранимые сущности, поддерживаемые в модели разработки 1С:Предприятия 8.0, можно разделить на объектные и необъектные. Объектные сущности: Справочник Документ ... Необъектные сущности: ЖурналДокументов Регистр накопления ... 1С:Предприятие использует различный подход при блокировании объектных и необъектных сущностей. При работе с объектными сущностями 1С:Предприятие использует уровень изоляции REPEATABLE READ, поэтому при записи элемента справочника "Товары" блокируется только одна запись в таблице справочника. Любые соседние элементы справочника могут быть изменены другими пользователями. ... При работе с необъектными сущностями используется более высокий уровень изоляции транзакции - SERIALIZABLE. При работе с этим уровнем изоляции SQL сервер накладывает дополнительные блокировки на диапазон значений индекса. При этом накладывается блокировка как на саму запись индекса, так и на диапазон значений от текущего значения ключа до ближайшего следующего. Например, если в одной сессии 1С:Предприятия 8.0 провести документ "ЗаписьДвижений" с номером 2, то в других сеансах будет невозможно провести не только документ с номером 2, но и документы с номером 1 и 3, пока не будет нажата кнопка "OK" в диалоге первой сессии и транзакция будет завершена. Это связано с тем, с что при записи движений документа "ЗаписьДвижений" с номером 2 в регистр накопления "ОстаткиТоваров", будут заблокированы движения двух соседних документов "ЗаписьДвижений" с номерами 1 и 3 в этом регистре. В тоже время, в других сеансах 1С:Предприятия 8.0 можно проводить документы с номерами 4 и 5. Аналогичное поведение будет наблюдаться и при удалении документов."
#33
by lookas
Все точно так, как написано в ИТС. Действительно две соседние крайние записи блокируются, а вот третья проводится без проблем!!! Спасибо большое! Тема закрыта.
#35
by France
вообще то, я просил рассказать, что ты увидел в Profiler. С хинтами и со всем остальным я бы разобрался без дополнительных пояснений... Важно было именно то, что увидел в профайлере...ну да ладно..
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Блокировки на уровне таблицы или записи?
- 1cv8 SQL: Имя SQL сервера и имя SQL базы данных
- Определение сервера под сервер приложений и сервер SQL
- На одной машине сервер 1С и sql сервер!Не могу добавить базу sql!
- Можно на один сервер ставить терминал, сервер предприятия и sql сервер
- Управляемые блокировки в УПП
- не работает установка блокировки соединений ИБ
- Блокировки на уровне записей Postgresql
- Как оптимальнее расселить сервер терминалов, сервер СУБД и сервер 1С на 2 сервера
- как отловить обмен между 1c и SQL серверами (на одном физ сервере)
- Получается в postgresql блокировки на уровне записей?
- настроить доступ на уровне записей к номенклатуре
В этой группе 1С
- Выделение части текста в поле ввода
- Как узнать оплачена ли отгрузка в УТ?
- Какой ключ куда или ключ для сервера
- Ни стого ни ссиго перестали формироваться оборотки
- Как проверить монопольный режим?
- ЗУП: Как найти внешних совместителей?
- УПП Ввод реализации на основании заказа
- На метку с указанным именем имеется недопустимый переход
- Отбор по реквизиту регистра в наборе записей регистра накопления
- ЗиК. Классификатор учебных заведений
- v7: УПП Как запретить неоперативное проведение?
- Редактор ака блокнот для текстов 1с. Существует?
- ЗиУП Компенсация отпуска по шестидневке
- v7: Неверное значение!
- Выгрузить табличную часть
- Исчезли пункты меню
- как скидки назначать контрам?
- Использование значения ВидДвиженияНакопления.Приход в тексте запроса
- Программное добавление командной панели
- JavaScript: как поставить курсор в конец...