1c предприятие ошибка блокировки данных

Случается, что при работе с программой 1С возникает подобная ошибка — ошибка блокировки данных:

Рис.1 Распространенная ошибка
Рис.1 Распространенная ошибка

Чаще всего данное предупреждение конфигуратора возникает при выгрузке информационной базы или при обновлении конфигурации 1С. Для того чтобы исправить сложившуюся ситуацию и запустить работу конфигурации, в первую очередь необходимо выяснить причины ошибки исключительной блокировки информационной базы. Это может быть одна из следующих причин:

  • Пользователи не вышли из системы 1С

Для начала необходимо посмотреть все активные сеансы пользователей. Активных пользователей можно посмотреть в конфигураторе 1С так: нажать кнопку Администрирование, затем выбрать Активные пользователи. И попросить их выйти из системы. Также информацию о блокирующих сеансах обычно можно получить из самого окна с ошибкой.

  • У пользователя запущена база 1С, но не введен пароль

В таком случае у пользователя остается висеть подобное окно:

Рис.2 У пользователя запущена база 1С, но не введен пароль
Рис.2 У пользователя запущена база 1С, но не введен пароль

Сеанс такого пользователя найти сложнее, так как он не отображается в окошке Активные пользователи. Более того, информация об ошибке не содержит какой-либо полезной информации:

Рис.3 Информация об ошибки
Рис.3 Информация об ошибки

Такого рода ошибка характерна для файловых информационных баз. Необходимо найти подобные процессы с помощью диспетчера задач, и, используя его же, принудительно их завершить.

  • Зависшие сеансы

Все пользователи вышли, а сообщение об ошибке остается прежним, значит, скорее всего, есть зависшие сеансы. Для таких зависших сеансов требуется принудительное завершение. Это рекомендуется делать аккуратно, прибегая к этому методу только тогда, когда не получаются все остальные.

Способы завершения зависших сеансов в файловом варианте

  • С помощью Диспетчера задач. При завершении сеансов информация у пользователей, работающих в системе, может не сохраниться, и важные данные могут быть потеряны. Завершить сеансы данным способом можно так: вызвать диспетчер задач (Ctrl+Alt+Delete), затем нажать снять задачу, затем завершить процесс. Процессы 1С называются 1Сv8.exe или 1Сv8c.exe.
Рис.4 Диспетчер задач
Рис.4 Диспетчер задач
  • Перезагрузить сервер, на котором установлена файловая система 1С

Способы завершения зависших сеансов в клиент-серверном варианте

В первую очередь, необходимо попробовать удалить сеансы через консоль администрирования серверов, найдя в ней нужную базу и зайдя в меню Сеансы*.

  • Выделить нужные зависшие сеансы и удалить их через пункт контекстного меню;
Рис.5 Меню Сеансы
Рис.5 Меню Сеансы

*Если в меню Сеансы нет сеансов, их стоит поискать в меню Соединения. И попробовать аналогично удалить.

  • Если не удалось удалить сеансы, используя консоль, то необходимо перезапустить службу Агент сервера 1С:Предприятия 8.3.
  • Если все предыдущие способы не решили проблему и зависшие сеансы так и остались на своих местах, то в качестве крайней меры необходимо перезагрузить сервер.

Зависшие фоновые задания в клиент-серверном варианте

В клиент-серверном варианте частым источником возникновения ошибки исключительной блокировки информационной базы являются повисшие фоновые задания.

Неприятной особенностью этого явления также является и то, что зачастую их очень тяжело удалить. Обычно эти задания можно увидеть в консоли администрирования на вкладке Соединения, но при попытке их удаления они появляются вновь.

Чтобы их удалить можно попробовать следующие способы:

  • Удалить их несколько раз подряд и проверить, не появляются ли они вновь.
  • В свойствах базы установить флаг Блокировка регламентных заданий включена, и после этого еще раз попробовать удалить зависшее задание.
Рис.6 Блокировка регламентных заданий включена
Рис.6 Блокировка регламентных заданий включена

Таким образом, при возникновении такой проблемы, как ошибка исключительной блокировки информационной базы, главным шагом становится выяснение причины возникновения проблемы, поскольку выбор способа ее устранения, в частности, среди описанных в данной статье, зависят от этого. То есть не стоит торопиться перегружать сервер сразу же, для начала надо попробовать решить проблему более «гуманным» образом.

Ошибка «Ошибка блокировки метаданных. Возможно, метаданные используются другой задачей.»

Ошибка происходит при запуске 1C 7.7 сетевой или SQL–версии, которые могут запускать в монопольном и разделённом режиме, и может иметь различные причины.

  1. Из-за того, что другим экземпляром программы уже открыта эта конфигурацию. Для устранения проблемы нужно открыть Монитор Пользователей, посмотреть, кто заблокировал БД и попросить его выйти.
  • 1С уже запущена в монопольном режиме. Проверка – запустить 1С в режиме Монитор и посмотреть пользователей.
  • Кто-то пытался входить в 1С и не довел дело до конца (выбор базы, выбор пользователя, пароль) – а система временно заблокировала что-то. Если режим Монитор не помог, то см. пункт 2 про файлы LCK.
  • Кто-то был в 1С в монопольном режиме и вышел совсем недавно (несколько секунд нужно на закрытие всех файлов и снятие всех блокировок). Решение – подождать 30 сек и повторить вход.
  • Кто-то получил доступ к одному из файлов базы данных напрямую, без 1С, и не отпускает его.

Решение для Windows – на компьютере, где хранятся файлы базы данных зайти Панель управления – Администрирование – Управление компьютером – Служебные программы – Общие папки и там посмотреть, кто вошел и какие файлы открыл.
Решение для WINE@Etersoft — перезапустить Самба-сервер.

  1. На SQL-версии такая ошибка может появляться, когда кто-то из пользователей наблюдает за работой БД 1С через средства SQL-сервера. Монитор тут не поможет. Нужно средствами SQL-сервера определить, кто обращается к БД и закрыть эти приложения (или прервать блокировки средствами SQL сервера). После этого монопольный доступ к БД станет возможен.
  2. Также возможно, что в каталоге пользователя после последнего сбоя (и, возможно, каталоге базы) остались временные файлы 1cv7.LCK. Если причина в этом, то достаточно будет удалить такие файлы.

Ошибка блокировки данных происходит в сетевой или SQL–версии Предприятия 7.7 по причине блокировки файлов другим пользователем или Вами же.

Для решения данной проблемы возможно поможет один из следующих пунктов:

1. Кто-то уже работает в 1С в монопольном режиме.

Решение-запустить 1С в режиме Монитор и посмотреть активных пользователей. 

2. Кто-то входил в 1С и не довел дело до конца (выбор базы, выбор пользователя, пароль)–а система временно заблокировала что-то.

Решение-Можно посмотреть активного пользователя через Монитор. Если не помогло, то смотреть 4 пункт.
3. Кто-то работал в 1С в монопольном режиме и недавно вышел из программы.

Решение-подождать пока 1С снимет блокировку, можно отследить через Монитор.
4. Кто-то получил доступ к одному из файлов базы данных напрямую, без 1С, и не отпускает его.

Решение(только для файловой 1С)–на компьютере, где находится сама база данных зайти в Панель управления – Администрирование – Управление компьютером – Служебные программы – Общие папки и там все просмотреть, кто вошел и какие файлы открыл. 
5. Работа с 1С у одного из пользователей завершилась некорректно(компьютер внезапно перезагрузился, завис во время работы и т.д.) и в каталоге пользователя (возможно и в самом каталоге базы) остались временные файлы 1cv7.LCK.


Виртуальный 1С помощник

Решение-если причина в этом, то достаточно будет удалить такие файлы.Обычно Каталоги пользователей находятся в каталоге самой базы данных. Кроме того, если пользователей 1С прописывал не специалист, то он мог допустить такую ошибку: не указал каждому пользователю отдельный “каталог пользователя” или указал для всех один и тот же каталог. В таком случае даже если кто-то работает с программой НЕ в монопольном режиме, другие пользователи не смогут зайти в программу пока не выйдет этот. 
6. Какой-либо пользователь уже работает в 1С, а Вы пытаетесь из Конфигуратора запустить ее в монопольном режиме.

7. На SQL-версии, когда пытаетесь войти в 1С монопольно, а кто-то из пользователей наблюдает за работой базы 1С средствами SQL-сервера, тоже может возникнуть ошибка блокировки данных.

Решение-к сожалению Монитор тогда не поможет. Нужно средствами самого сервера определить, кто обращается к БД и закрыть эти приложения или прервать блокировки средствами SQL сервера.

В данном разделе приводятся сведения о некоторых ошибках при запуске программ системы 1С:Предприятие и способы их исправления.

Порядок сортировки, установленный для базы данных, отличается от системного

Чаще всего эта ошибка возникает при использовании операционной системы Windows Vista. Для её исправления следует установить платформу 1С:Предприятие 7.7 не ниже релиза 7.70.027 и выполнить следующие действия: — запустить базу данных в режиме «Конфигуратор»; — в меню «Администрирование» выбрать пункт «Кодовая страница таблиц ИБ»; — в выпадающем списке выбрать «+ Текущая системная установка». — на вопрос системы о перестройки индексов нажать «да». Через некоторое время появится сообщение об удачном изменении кодовой страницы.

Ошибка открытия таблицы 1SSYSTEM

Сообщение возникает при первом запуске чистой базы. При первом запуске базы нужно поставить галочку «Монопольно». Все последующие запуски осуществлять в общем режиме.

Ошибка блокировки данных. Возможно, данные используются другой задачей.

Ошибка возникает на сетевой или SQL- версии по причине блокировки файлов другим пользователем или Вами же. Обычно это монопольный вход первого пользователя или переиндексация, после которой не вышли. Либо кто-то работает в 1С, а Вы пытаетесь запустить базу в режиме Монопольно. Для исправления ошибки нужно запустить 1С в режиме Монитор и посмотреть пользователей.

Каталог базы данных не обнаружен.

Проверить правильность указанного пути. Возможно, сетевой ресурс, где расположена база данных, не подключен. У пользователя должны быть полные права на папку с базой.

Программа была завершена аварийно. Переиндексировать таблицы базы данных?

Некорректный выход из программы одним из пользователей. (Сообщение выдается при запуске базы монопольно). Ответить «Да», дождаться загрузки 1С, выйти из базы и зайти не монопольно для возможности работы других пользователей.

В формах бухгалтерской и налоговой отчетности вместо штрих-кода, в левом верхнем углу, большие цифры 510

Такая ошибка возникает в случае отсутствия в операционной системе шрифта eang000. В окне настройки шрифтов (Пуск — Настройка — Шрифты) выбрать меню Файл — Установить шрифт , указать путь к файлу eang000 (всегда есть в дистрибутиве обновления или в раскрытом комплекте регламентированной отчетности, например, <папка с рабочей базой>ExtformsRp10q3).

Не установлена внешняя библиотека, используемая для печати машиночитаемых форм.

Необходимый модуль можно скачать с сайта http://www.gnivc.ru/lib/modyl.rar, извлечь из архива файл Печать НД с PDF417 и установить (у пользователя при установке должны быть права администратора).

При запуске 1С выдается ошибка: «Ошибка блокировки метаданных. Возможно, метаданные используются другой задачей.» Из-за чего такое происходит?

Эта ошибка происходит на сетевой или SQL – версии по причине блокировки файлов другим пользователем или Вами же. Обычно это монопольный вход первого, кто входит (или переиндексация, после которой не вышли). Для исправления ошибки нужно открыть монитор пользователей, посмотреть, кто заблокировал БД и попросить его выйти.

На SQL версии, когда появляется желание войти в БД монопольно, а кто-то из пользователей наблюдает за работой БД 1С через средства SQL сервера, такая ошибка тоже может возникнуть. Монитор тогда не поможет. Нужно средствами SQL сервера определить, кто обращается к БД и закрыть эти приложения (или прервать блокировки средствами SQL сервера). После этого монопольный доступ к БД станет возможен.

1. Кто-то уже вошел в 1С в монопольном режиме. Проверка – запустить 1С в режиме Монитор и посмотреть пользователей.

2. Кто-то входил в 1С и не довел дело до конца (выбор базы, выбор пользователя, пароль) – а система временно заблокировала что-то. Если режим Монитор не помог, то см. пункт 4.

3. Кто-то был в 1С в монопольном режиме и вышел совсем недавно (несколько секунд нужно на закрытие всех файлов и снятие всех блокировок). Решение – подождать 30 сек и повторить вход.

4. Кто-то получил доступ к одному из файлов базы данных напрямую, без 1С, и не отпускает его. Решение – на компьютере с базой данных Панель управления – Администрирование – Управление компьютером – Служебные программы – Общие папки и там все просмотреть, кто вошел и какие файлы открыл.

Кроме описанных выше возможен такой вариант. Работа с 1С одного из пользователей была завершена некорректно (перезагрузка компьютера в результате колебаний напряжения, зависание компьютера и т.п.), и в каталоге пользователя (и, возможно, каталоге базы) остались временные файлы 1cv7.LCK. Если причина в этом, то достаточно будет удалить такие файлы.

Каталоги пользователей находятся в каталоге базы данных.

Кроме того, если пользователей 1С прописывал не специалист, то он мог допустить такую ошибку: не указал каждому пользователю отдельный “каталог пользователя” или указал для всех один и тот же каталог. В таком случае даже если кто-то работает с программой НЕ в монопольном режиме, другие пользователи не смогут зайти в программу пока не выйдет этот.
Ну и еще как вариант- кто-то зашел в 1С, а Вы пытаетесь кнопочкой из конфигуратора запустить ее в монопольном режиме.

| опубликовано: 30 Июль 2007, 21:29

  

Alexandrovich

23.10.19 — 12:22

Перенес базу на сервер, чтобы организовать работу в базе нескольким пользователям через RDP.

При входе второго пользователя получаю сообщение «ошибка блокировки данных. возможно данные используются другой задачей»

Платформа 7.7

База файловая

  

ДенисЧ

1 — 23.10.19 — 12:25

Пользователи разные в 1с? Каталоги пользователей разные? База не однопользовательская часом? Первый случайно не монопольно заходит?

  

trad

2 — 23.10.19 — 12:25

1) первый зашел монопольно

2) версия не сетевая 1cv7l.exe

  

Alexandrovich

3 — 23.10.19 — 12:45

(1) Для каждого пользователя создал отдельный каталог (Петров, Иванов).

Монопольно никто не заходит. Я сам пока что тестирую.

  

Alexandrovich

4 — 23.10.19 — 12:47

(1) Как узнать однопользовательская или нет?

  

Злопчинский

5 — 23.10.19 — 12:47

какой-то из файлов залочен сторонней программой.

  

Злопчинский

6 — 23.10.19 — 12:48

(4) по имени экзешникм. посмтотреть в параметры-о программе

  

Alexandrovich

7 — 23.10.19 — 12:52

(5) Нет, не залочен. И для каждого пользователя создал свой каталог.

  

Alexandrovich

8 — 23.10.19 — 12:54

1C:V7 starter program (multi-user)

  

Злопчинский

9 — 23.10.19 — 12:55

(7) возможно СТОРОННЕЙ ПРОГРАММОЙ файл захвачен монопольно.

  

Злопчинский

10 — 23.10.19 — 12:56

посмотри что бежит в строке «статуса» стартового окна при открытии базы — там может оказаться полезная информация.

  

Alexandrovich

11 — 23.10.19 — 13:01

(9) Нет. Ничего нету. Базу перенес на новый сервак, лишнего ничего нету.

  

ДенисЧ

12 — 23.10.19 — 13:01

(11) Посмотри анлокером

  

Chum

13 — 23.10.19 — 13:01

(0) md добавил в исключения антивирусу?

  

Alexandrovich

14 — 23.10.19 — 13:01

База стартует только для одного пользователя, для остальных считается заблокирована.

  

Chum

15 — 23.10.19 — 13:06

(14) а ты проверь монитор пользователей. Возможно, что процесс завис.

Пуск ->Программы->1С: Предприятие->Монитор пользователей.

Далее пункт меню Монитор ->Активные пользователи.

Если в одной из колонок есть красный восклицательный знак, то это монопольный режим.

  

Alexandrovich

16 — 23.10.19 — 13:10

(15) Если пользователь закрывает базу, тогда я могу зайти.

  

ДенисЧ

17 — 23.10.19 — 13:11

(14) Для одного любого? Значит, однопользовательская.

Если запустилась — посмотри в монитор пользователя. Есть там красный ! у пользователя?

  

Chum

18 — 23.10.19 — 13:11

(16) Чудес не бывает. Или у тебя однопользовательская версия, или пользователь заходит монопольно. Или, пользователи ссылаются на один рабочий каталог.

  

mishaPH

Модератор

19 — 23.10.19 — 13:18

(0) мд лочится системой.

  

mishaPH

Модератор

20 — 23.10.19 — 13:19

он стал только для чтения вот 1с и думает что монопольно захвачено

  

Alexandrovich

21 — 23.10.19 — 13:23

Под одной учеткой RDP запускается без ограничений сеансов, а уже под другим пользователем не запускается.

  

Злопчинский

22 — 23.10.19 — 13:24

(21) права доступа на папку с базой. дай на папку полные права 1сным учеткам

  

Alexandrovich

23 — 23.10.19 — 13:31

(22) Права полные

  

Alexandrovich

24 — 23.10.19 — 13:31

(20) Что в таком случаи делать?

  

Builder

25 — 23.10.19 — 13:51

(18) Если каталог один — будет ошибка «Каталог пользователя занят».

(24)

1. Установить сетевую или SQL версию.

2. Открывать базу не монопольно.

Других вариантов нет.

  

Alexandrovich

26 — 23.10.19 — 14:11

(25) Я же уже писал, что каталоги созданы.

  

Alexandrovich

27 — 23.10.19 — 15:16

Получается система блокирует файл MD если кто то уже зашел в базу, тогда как сделать чтобы был доступ на редактирования остальным пользователям. Права на файл полные у всех.

  

ДенисЧ

28 — 23.10.19 — 15:22

(27) Ты монитор пользователей открыл, когда у тебя блокировка возникает? Что там показывается?

  

Alexandrovich

29 — 23.10.19 — 15:23

Решение: Дал полные права на каталог с базой.

  

ДенисЧ

30 — 23.10.19 — 15:24

(29) а что, были неполные? И у тебя 1с умудрялась таки заходить?

Давно же известно, что 1с нужен full control на каталог ИБ…

  

mishaPH

Модератор

31 — 23.10.19 — 15:26

(30) скорее всего первый входящий создавал файл LCK. поскольк унет прав на каталог все остальные его не могли получить корерктно.

  

mishaPH

Модератор

32 — 23.10.19 — 15:27

поэтому права именно на каталог помогли.

  

ДенисЧ

33 — 23.10.19 — 15:28

(32) Так полные права именно на каталог и нужны, а не только на файлы. Это известно ещё с тех пор, когда в России ещё не знали Путина ))

 +1 

Распечатать

Эта ошибка происходит на сетевой или SQL – версии по причине блокировки файлов другим пользователем или Вами же. Обычно это монопольный вход первого, кто входит (или переиндексация, после которой не вышли). Для исправления ошибки нужно открыть монитор пользователей, посмотреть, кто заблокировал БД и попросить его выйти.
На SQL версии, когда появляется желание войти в БД монопольно, а кто-то из пользователей наблюдает за работой БД 1С через средства SQL сервера, такая ошибка тоже может возникнуть. Монитор тогда не поможет. Нужно средствами SQL сервера определить, кто обращается к БД и закрыть эти приложения (или прервать блокировки средствами SQL сервера). После этого монопольный доступ к БД станет возможен.
1. Кто-то уже вошел в 1С в монопольном режиме. Проверка – запустить 1С в режиме Монитор и посмотреть пользователей.
2. Кто-то входил в 1С и не довел дело до конца (выбор базы, выбор пользователя, пароль) – а система временно заблокировала что-то. Если режим Монитор не помог, то см. пункт 4.
3. Кто-то был в 1С в монопольном режиме и вышел совсем недавно (несколько секунд нужно на закрытие всех файлов и снятие всех блокировок). Решение – подождать 30 сек и повторить вход.
4. Кто-то получил доступ к одному из файлов базы данных напрямую, без 1С, и не отпускает его. Решение – на компьютере с базой данных Панель управления – Администрирование – Управление компьютером – Служебные программы – Общие папки и там все просмотреть, кто вошел и какие файлы открыл.
Кроме описанных выше возможен такой вариант. Работа с 1С одного из пользователей была завершена некорректно (перезагрузка компьютера в результате колебаний напряжения, зависание компьютера и т.п.), и в каталоге пользователя (и, возможно, каталоге базы) остались временные файлы 1cv7.LCK. Если причина в этом, то достаточно будет удалить такие файлы.
Каталоги пользователей находятся в каталоге базы данных.
Кроме того, если пользователей 1С прописывал не специалист, то он мог допустить такую ошибку: не указал каждому пользователю отдельный “каталог пользователя” или указал для всех один и тот же каталог. В таком случае даже если кто-то работает с программой НЕ в монопольном режиме, другие пользователи не смогут зайти в программу пока не выйдет этот.
Ну и еще как вариант- кто-то зашел в 1С, а Вы пытаетесь кнопочкой из конфигуратора запустить ее в монопольном режиме.

1

Рисунок 1 – Ошибка блокировки данных

    Ошибка блокировки данных происходит в программе 1С: Предприятия 7.7 в сетевой версии или когда данные хранятся на SQL сервере. Возникает она обычно в случае, когда файлы заблокированы кем-то из пользователей, первым вошедшим в монопольный режим.

2

Рисунок 2 – Запуск 1С в монопольном режиме

    Монопольный режим является однопользовательским привилегированным режимом работы приложения. Если на момент попытки запустить программы в монопольном режиме в базе будут находиться активные пользователи, то 1С не позволит подключиться к приложению в подобном режиме.
    Если же кто-то вошел в базу монопольно, то следует открыть монитор пользователей и посмотреть, какой из пользователей сейчас находится в базе и попросить его выйти.

3

Рисунок 3 – Запуск 1С в режиме Монитор

4

Рисунок 4 – Открытие окна активных пользователей через Монитор

    Теперь, в окне активных пользователей, мы видим кто занял приложение в монопольном режиме.

5

Рисунок 5 – Активные пользователи

    Еще одной причиной невозможности получить доступ к базе данных может являться «неполный запуск» приложения. Например, пользователь выбрал базу, но не указал логин и пароль, а окно входа осталось открытым, и система в этом момент заблокировала доступ. Тогда в мониторе увидеть кто именно хотел войти в базу будет нельзя. Выход из ситуации на компьютере, где расположены файлы с базой. Необходимо открыть Панель управления / Администрирование / Управление компьютеров / Служебные программы / Общие папки и там посмотреть подключенные сеансы (Рис. 6) и открытые файлы (Рис. 7).

6

Рисунок 6 – Подключенные сеансы

7

Рисунок 7 – Открытые файлы

    Иногда блокировать доступ к базе других пользователей может попытка запуска приложения в монопольном режиме через конфигуратор. Или кто-то из пользователей был недавно в монопольном режиме, а после завершения работы файлы еще не успели закрыться, и не произошло снятие блокировок. Тогда следует подождать несколько секунд и попробовать запустить программу снова.

   Alexandrovich

23.10.19 — 12:22

Перенес базу на сервер, чтобы организовать работу в базе нескольким пользователям через RDP.

При входе второго пользователя получаю сообщение «ошибка блокировки данных. возможно данные используются другой задачей»

Платформа 7.7

База файловая

   ДенисЧ

1 — 23.10.19 — 12:25

Пользователи разные в 1с? Каталоги пользователей разные? База не однопользовательская часом? Первый случайно не монопольно заходит?

   trad

2 — 23.10.19 — 12:25

1) первый зашел монопольно

2) версия не сетевая 1cv7l.exe

   Alexandrovich

3 — 23.10.19 — 12:45

(1) Для каждого пользователя создал отдельный каталог (Петров, Иванов).

Монопольно никто не заходит. Я сам пока что тестирую.

   Alexandrovich

4 — 23.10.19 — 12:47

(1) Как узнать однопользовательская или нет?

   Злопчинский

5 — 23.10.19 — 12:47

какой-то из файлов залочен сторонней программой.

   Злопчинский

6 — 23.10.19 — 12:48

(4) по имени экзешникм. посмтотреть в параметры-о программе

   Alexandrovich

7 — 23.10.19 — 12:52

(5) Нет, не залочен. И для каждого пользователя создал свой каталог.

   Alexandrovich

8 — 23.10.19 — 12:54

1C:V7 starter program (multi-user)

   Злопчинский

9 — 23.10.19 — 12:55

(7) возможно СТОРОННЕЙ ПРОГРАММОЙ файл захвачен монопольно.

   Злопчинский

10 — 23.10.19 — 12:56

посмотри что бежит в строке «статуса» стартового окна при открытии базы — там может оказаться полезная информация.

   Alexandrovich

11 — 23.10.19 — 13:01

(9) Нет. Ничего нету. Базу перенес на новый сервак, лишнего ничего нету.

   ДенисЧ

12 — 23.10.19 — 13:01

(11) Посмотри анлокером

   Chum

13 — 23.10.19 — 13:01

(0) md добавил в исключения антивирусу?

   Alexandrovich

14 — 23.10.19 — 13:01

База стартует только для одного пользователя, для остальных считается заблокирована.

   Chum

15 — 23.10.19 — 13:06

(14) а ты проверь монитор пользователей. Возможно, что процесс завис.

Пуск ->Программы->1С: Предприятие->Монитор пользователей.

Далее пункт меню Монитор ->Активные пользователи.

Если в одной из колонок есть красный восклицательный знак, то это монопольный режим.

   Alexandrovich

16 — 23.10.19 — 13:10

(15) Если пользователь закрывает базу, тогда я могу зайти.

   ДенисЧ

17 — 23.10.19 — 13:11

(14) Для одного любого? Значит, однопользовательская.

Если запустилась — посмотри в монитор пользователя. Есть там красный ! у пользователя?

   Chum

18 — 23.10.19 — 13:11

(16) Чудес не бывает. Или у тебя однопользовательская версия, или пользователь заходит монопольно. Или, пользователи ссылаются на один рабочий каталог.

   mishaPH

Модератор

19 — 23.10.19 — 13:18

(0) мд лочится системой.

   mishaPH

Модератор

20 — 23.10.19 — 13:19

он стал только для чтения вот 1с и думает что монопольно захвачено

   Alexandrovich

21 — 23.10.19 — 13:23

Под одной учеткой RDP запускается без ограничений сеансов, а уже под другим пользователем не запускается.

   Злопчинский

22 — 23.10.19 — 13:24

(21) права доступа на папку с базой. дай на папку полные права 1сным учеткам

   Alexandrovich

23 — 23.10.19 — 13:31

(22) Права полные

   Alexandrovich

24 — 23.10.19 — 13:31

(20) Что в таком случаи делать?

   Builder

25 — 23.10.19 — 13:51

(18) Если каталог один — будет ошибка «Каталог пользователя занят».

(24)

1. Установить сетевую или SQL версию.

2. Открывать базу не монопольно.

Других вариантов нет.

   Alexandrovich

26 — 23.10.19 — 14:11

(25) Я же уже писал, что каталоги созданы.

   Alexandrovich

27 — 23.10.19 — 15:16

Получается система блокирует файл MD если кто то уже зашел в базу, тогда как сделать чтобы был доступ на редактирования остальным пользователям. Права на файл полные у всех.

   ДенисЧ

28 — 23.10.19 — 15:22

(27) Ты монитор пользователей открыл, когда у тебя блокировка возникает? Что там показывается?

   Alexandrovich

29 — 23.10.19 — 15:23

Решение: Дал полные права на каталог с базой.

   ДенисЧ

30 — 23.10.19 — 15:24

(29) а что, были неполные? И у тебя 1с умудрялась таки заходить?

Давно же известно, что 1с нужен full control на каталог ИБ…

   mishaPH

Модератор

31 — 23.10.19 — 15:26

(30) скорее всего первый входящий создавал файл LCK. поскольк унет прав на каталог все остальные его не могли получить корерктно.

   mishaPH

Модератор

32 — 23.10.19 — 15:27

поэтому права именно на каталог помогли.

  

ДенисЧ

33 — 23.10.19 — 15:28

(32) Так полные права именно на каталог и нужны, а не только на файлы. Это известно ещё с тех пор, когда в России ещё не знали Путина ))

Содержание
1. Ошибка 1С: “Конфликт блокировок при выполнении транзакции”. В чем причина?
2. Ошибки в 1С из-за блокировок
2.1 Пример необходимой блокировки в 1С
2.2 Пример избыточной блокировки в 1С 
2.3 Как избавиться от избыточных блокировок в 1С

Ошибка 1С: “Конфликт блокировок при выполнении транзакции”. В чем причина?

Этот вопрос возник у нас на проекте по внедрению ЗУП2.5 с численностью 20000 и средним количеством одновременных пользовательских сессий 200.

На этапе опытной эксплуатации при расчете зарплаты пользователи начали интенсивно работать с документами «Начисление зарплаты сотрудникам организаций». Объем документов был порядка 2500 строк.  У пользователей начали появляться сообщения «Конфликт блокировок при выполнении транзакции», и расчет приходилось запускать заново.

1.png

Стали разбираться. Оказалось, мы столкнулись  с эффектом «Избыточной блокировки». Обычно этот эффект появляется при параллельном проведении документов, во время него самым первым документом блокируется большой объем записей регистров на все время проведения документа. Эта блокировка задерживает проведение остальных документов, мешает параллельной работе пользователей и замедляет рабочий процесс. Вообще блокировка данных при проведении документов вещь полезная, она сохраняет целостность данных и гарантирует правильность выполнения расчетных алгоритмов. Но бывает так, что либо объем заблокированных данных чрезмерен, либо время блокировки слишком велико. В результате мы имеем многопользовательскую систему, которая по сути является однопользовательской: вместо параллельного проведения документов — последовательное.

Ошибки в 1С из-за блокировок


Пример необходимой блокировки в 1С

Представим такую ситуацию – есть два документа «Начисление зарплаты сотрудникам организаций», в которых указан одинаковый налоговый период, а на закладке НДФЛ указаны одинаковые сотрудники. Рассмотрим случай, когда блокировка вообще отсутствует. Если последовательно запускать расчет этих документов, то в первом сумма НДФЛ посчитается правильно, а во втором будет равна нулю, т.к. рассчитанный и фактически начисленный НДФЛ на момент проведения второго документа будут совпадать.

 Но если запустить эти документы параллельно, то они одновременно начислят НДФЛ, не подозревая о существовании друг друга, и в результате налог удвоится. Если блокировка настроена верно, то первый документ, запущенный на долю секунды раньше второго, успеет первым прочитать и заблокировать данные о фактически исчисленном налоге в регистре «НДФЛ расчеты с бюджетом» по сотруднику Пушкину А.С. Из этого запроса будет видно, что фактический налог за январь пока не начислялся и значит надо выполнить движение по регистру. Блокировка будет отпущена только после завершения записи в регистр. Второй документ, дойдя до запроса чтения фактически начисленного налога будет поставлен системой на ожидание до тех пор, пока первый документ не закончит транзакцию проведения, после чего он прочитает в запросе, что налог уже начислен и движение по регистру выполнять не надо. Это необходимая блокировка.

Конечно, этот пример притянут за уши для простоты объяснения. На самом деле логика ЗУП 2.5 такова, что для задвоения НДФЛ пользователям не нужно прикладывать особых усилий. НДФЛ рассчитывается до проведения документа, а при проведении содержимое табличной части просто заносится в регистры без всякой проверки. Пользователям между расчетом и проведением предоставляется возможность посмотреть будущий результат и при необходимости поправить руками. Конечно это большой плюс в пользу гибкости ЗУПа, но предъявляет высокие требования к профессиональному уровню расчетчиков. Поэтому вопрос предотвращения задвоения НДФЛ решается организационным путем или с помощью дополнительных проверочных отчетов. Конечно, в ЗУП2.5 есть регистры, которые рассчитываются и записываются одновременно при проведении документа, например «НДФЛ к зачету», но этот пример пришлось бы дольше объяснять ;).

Пример избыточной блокировки в 1С

А теперь представим другую ситуацию. При проведении документа выполняется запрос, который должен отобрать документы, в которых присутствует сотрудник из этого документа. Но запрос написан так, что сервер SQL вынужден находить нужные документы методом перебора. Для технических специалистов это означает, что вместо CLUSTERED INDEX SCAN выполняется TABLE SCAN, т.е. вместо сканирования таблицы индексов происходит сканирование самой таблицы. Причем в процессе перебора блокируются все записи, к которым прикоснулся запрос, даже те, в которых не присутствуют искомые сотрудники. И эта блокировка будет действовать до конца завершения проведения документа, что будет препятствовать параллельному проведению документов с другими сотрудниками. Это избыточная блокировка.

Как избавиться от избыточных блокировок в 1С

Лечение избыточных блокировок может идти двумя путями. Первый — это оптимизация запросов, выполняемых внутри транзакций и добавление необходимых табличных индексов в конфигураторе. Второй — это перевод выполнения SQL-запросов на более низкий уровень изоляции, когда при выполнении запросов записи в таблицах блокируются только на момент выполнения самого запроса, либо не блокируются вовсе. А необходимые блокировки устанавливаются средствами объекта «БлокировкаДанных» и выполняются на стороне сервера 1С.

Теперь немного теории про уровни изоляции на SQL сервере:

1.      В автоматическом режиме в транзакциях используется уровень изоляции SERIALIZABLE. Этот уровень накладывает блокировки типа X (запрещает чтение и запись) до конца транзакции на все данные, которых коснулись запросы или произошла запись данных.

2.      В управляемом режиме в транзакциях используется уровень изоляции ReadCommitted. Этот уровень на записанные данные также устанавливает блокировки типа X до конца транзакции. Но при выполнении запросов на данные накладывает блокировки типа S (запрещает запись и проверяет нет ли в этот момент параллельных записей), при завершении запроса блокировки снимаются не дожидаясь завершения транзакции.

3.      Если база данных переведена в режим  ReadCommitted SNAPSHOT, то в управляемом режиме при чтении данных не накладывается блокировка типа S, есть только блокировка типа X при записи.

Тоже самое чуть более подробно в таблице:

Обычно лечение начинают с понижения уровня изоляции, т.к. это не особо трудозатратно и дает быстрый результат. Достаточно перевести конфигурацию из «Автоматического» режима управления блокировкой данных в «Управляемый», и транзакции начнут выполняться на уровне изоляции типа ReadCommitted, вместо SERIALIZABLE или Repeatable Read.

Чтобы переключить базу данных в режим READ COMMITTED SNAPSHOT (RCSI) необходимо в «SQL Server Management Studio» в свойствах базы данных установить параметр «Is Read Committed Snapshot On» в значение «True»:

2.png 

В некоторых источниках предлагают установить параметр «Allow Snapshot Isolation» в значение «True», но в этом нет необходимости, т.к. это приведет к включению другого режима изоляции SNAPSHOT, который не поддерживается платформой 1С (На момент написания статьи релиз платформы 8.3.9).

Режим управления блокировкой данных задается для неявных транзакций, которые выполняются при записи или при проведении документов, т.е. внутри  предопределенных процедур типа ПриЗаписи() или ОбработкаПроведения(). Но большинство «тяжелых» вычислений в типовой конфигурации ЗУП2.5 происходит при выполнении команды «Рассчитать». При этом в модуле объекта запускается процедура РассчитатьВсе(), внутри которой неоднократно повторяется конструкция НачатьТранзакцию() …ЗафиксироватьТранзакцию(). Это явно указанные транзакции, внутри которых происходит запись и очистка регистров и выполняются запросы. Нам необходимо убедиться, что при переключении конфигурации в управляемый режим в процедуре «РассчитатьВсе()» транзакции также начинают выполняться на уровне ReadCommitted.

Для этого проведем небольшой эксперимент: 

• Запустим SQL Server Profiler.

• Запустим «NEW TRACE».

• Выполним подключение к серверу SQL.

• В окне «Trace Properties» на закладке «General» выберем «Use the template» = «Blank», а на закладке «Events Selections» раскроем группу «Stored Procedures» и выберем «RPC:Complited». По кнопке «Column Filters» укажем имя базы и длительность выполнения запросов более 1.

3.png 4.png 
• Кнопку RUN пока нажимать не будем, т.к. нам надо сначала запустить базу данных в режиме отладки и остановить выполнение расчета документа «Начисление зарплаты сотрудникам организаций» перед выполнением самого массивного запроса. Например, это будет команда
«Результат = Запрос.ВыполнитьПакет();» в функции «ПолучитьДанныеНДФЛПоРегистратору» в общем модуле «ПроведениеРасчетов». Здесь происходит выполнение основного запроса для расчета НДФЛ. Поставим на ней точку останова отладчика и запустим расчет в документе.
5.png
·         После того как отладчик остановится, нажмем кнопку RUN в Профайлере.

·         Теперь сделаем один шаг в отладчике кнопкой F11. Когда запрос будет выполнен и отладчик перейдет на следующий шаг, остановим чтение Профайлера кнопкой «Pause Selected Trace».

·         Теперь найдем самый длительный запрос по колонке Duration и внимательно изучим текст запроса. Если при обращении к реальной (а не временной) таблице после слова WITH стоит SERIALIZABLE, то мы имеем дело с автоматическим режимом блокировки. Если ничего не стоит – то с управляемым.

6.png 7.png 

Если в хинте запроса (Hint – это параметр после слова WITH, позволяющий влиять на план выполнения запроса) не указан уровень изоляции, то выполняется уровень изоляции, установленный по умолчанию для текущей SQL-сессии. Определить уровень изоляции, действующий по умолчанию для текущих сессий можно в «SQL Server Management Studio» с помощью команды

SEL ECT CASE transaction_isolation_level 

WHEN 0 THEN ‘Unspecified’ 

WHEN 1 THEN ‘ReadUncommitted’ 

WHEN 2 THEN ‘ReadCommitted’ 

WHEN 3 THEN ‘Repeatable’ 

WHEN 4 THEN ‘SERIALIZABLE’ 

WHEN 5 THEN ‘SNAPSHOT’ END AS TRANSACTION_ISOLATION_LEVEL 

FR OM sys.dm_exec_sessions

В управляемом режиме для всех сессий будет указан режим ReadCommitted.

Таким образом мы получили экспериментальное подтверждение того, что после перевода в управляемый режим всей конфигурации, в этом режиме начинают работать не только процедуры записи и проведения, но и процедуры расчета документов ЗУП. А это значит, что количество сообщений о конфликте блокировок будет существенно снижено, а параллельность работы с базой данных увеличится.

После того, как включили управляемый режим блокировки мы должны убедиться, что избавившись от избыточных блокировок, мы не ушли в другую крайность и не потеряли необходимые блокировки, которые защищают систему от нарушения целостности данных при активной параллельной работе пользователей.

Настройка  управляемых блокировок – это тема для отдельной статьи. Вкратце скажу, что программно управляемые блокировки устанавливаются с помощью объекта «БлокировкаДанных». Сами управляемые блокировки работают уже не на уровне SQL сервера, как в случае с автоматическими блокировками, а на уровне сервера 1С. Для определения необходимых и достаточных управляемых блокировок надо понимать логику программы одновременно на уровне бизнес-процессов и на уровне архитектуры таблиц СУБД.

Но на мой взгляд, для таких конфигураций, как ЗУП2.5 вообще нет смысла использовать какие-либо блокировки, лучше использовать проверочные отчеты для выявления нарушения целостности данных — на практике это самый быстрый способ расчета зарплаты. Особенно на крупных предприятиях, где точно есть сотрудники с внутренним совмещением в обособленных подразделениях, а за каждым ОП закреплен отдельный расчетчик, что и является причиной задвоения НДФЛ. Какой бы не был вышколенный персонал, сама идеология конфигурации допускает возможность задвоения НДФЛ. Поэтому лучше не мешать пользователям работать параллельно во время массированных месячных расчетов, а по завершении точечно и быстро исправить небольшой процент ошибок, чем заставлять их сидеть и нервничать в очереди из-за страха допустить хотя бы одну ошибку. В этом проекте мы использовали самописный отчет «Проверка НДФЛ», который отображал сотрудников с некорректным НДФЛ.

Так же на этом проекте мы столкнулись с эффектом «Эскалация блокировок», когда SQL сервер сам принимает решение, что надо укрупнить область наложения блокировок вплоть до блокировки целиком всей таблицы. В результате работа пользователей останавливается, и все ждут завершения проведения одного документа – виновника эскалации, либо когда по таймауту снимутся взаимные блокировки, либо произойдет перезагрузка сервера. В каких случаях возникает эскалация и как с этим бороться тоже тема для отдельной статьи.

Валерий Федоров

Руководитель проектов ООО “Кодерлайн”

В какой-то момент на сервер 1С не смог попасть пользователь. Пишет “Ошибка блокировки данных. Возможно, данные используются другой задачей”. Причина была в том, что какой-то пользовательский сеанс был запущен в монопольном режиме, а надо в разделяемом. То ли кто то случайно нажал галочку “Монопольный режим” при входе, то ли как-то сглючила сама 1С. Неважно. В общем, надо было найти того пользователя, кто так нехорошо сделал, и попросить его перезайти. Найти пользователя можно с помощью программки Пуск – Программы – 1С Предприятие – Монитор пользователей. Затем Монитор – Активные пользователи. Там у кого рядом со значком стоит красный восклицательный знак, того и надо перезапустить.

Здесь правда нет юзеров в монопольном режиме.

Здесь правда нет юзеров в монопольном режиме.

Еще можно узнать, в каком режиме работает пользователь, через Помощь – О программе. В последней строке будет указан режим работы.

Вот так все просто. А я уж в хотел сервер перезагружать.

  • 1c ошибка разбора soap сообщения неверная версия сообщения
  • 1c ошибка не обнаружено мобильное приложение возможно оно не опубликовано
  • 1c ошибка загрузки таблицы стилей ошибка разбора таблицы стилей xslt
  • 1c ошибка загрузки компоненты cfgtest
  • 1c web ошибка при выполнении запроса get к ресурсу