Консультация № 181084
03.12.2010, 13:04
0.00 руб.
0 17 2
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: 1С 7.7 025 DBF.
В данный момент каталог пользователя находится на рабочем месте пользователя т.е. на его компе.
Где лучше прописать каталог пользователя: на локальном компьютере пользователя или на сервере, где находится сама база.
Почему появляется ошибка "ошибка блокировки метаданных" если у каждого пользователя указан рабочий каталог и в нем нет заблокированных файлов. Монопольно никого нет.

Обсуждение

Неизвестный
03.12.2010, 13:36
общий
это ответ
Здравствуйте, ДАС Алекс!
Каталог пользователя лучше размещать в местонахождении базы, чтобы пользователь мог получить доступ к базе на любом компьютере сети.
"Ошибка блокировки метеданных" никак не связана с каталогом пользователя, это блокировка файлов базы. Возникает если нужно получить монопольный доступ к файлу, а он кем-то используется.
Неизвестный
03.12.2010, 16:02
общий
Ивиняюсь. Не ошибка блокировки метаданных, а ошибка открытия базы данных.
Неизвестный
03.12.2010, 16:29
общий
Тогда это что-то с базой. Уточните: такая ошибка появляется только у одного пользователя или у всех?
Неизвестный
03.12.2010, 19:52
общий
У всех в начале рабочего дня, когда все пользователи (около 20) пытаются войти в 1С. И после переиндексации базы. Как я думаю причина появления этого сообщения - принудительное завершение работы пользователей перед архивированием базы.
Неизвестный
03.12.2010, 22:02
общий
Тогда уточните характеристики сервера (процессор, ОЗУ, винчестеры, ОС, наличие SQL) и как пользователи работают с базой (в терминале, файл-серверный режим)
Неизвестный
03.12.2010, 22:45
общий
Параметры сервера точно не помню. ЦП: однопроцесорный не более 2.5 мгц, ОЗУ до 1 Гб., винт без raid около 300 Гб. ОС - Windows Server 2003. SQL не используется. Файл-серверный вариант. Размер базы 1,5 Гб.
Неизвестный
03.12.2010, 22:50
общий
Цитата: 217777
принудительное завершение работы пользователей перед архивированием базы.
Тогда после такого архивирования обязательно надо реиндексировать базу. Можно это делать автоматически в пакетном режиме.
Неизвестный
03.12.2010, 23:34
общий
Вот пример пакетного файла, который сделает реиндексацию базы:
[General]
Quit=1 ;Закрывать Конфигуратор
CheckAndRepair=1 ;Тестирование и исправление БД
SaveData=0 ;Сохранять базу в архив
[CheckAndRepair]
Repair=1 ;исправлять ошибки
PhysicalIntegrity=0
LogicalIntegrity=0
RecalcSecondaries=0
RecalcTotals=0
Pack=0
SkipUnresolved=1
CreateForUnresolved=0
Reconstruct=0
Reindex=1

А запустить его можно с помощью команды "C:\Program Files\1Cv77\BIN\1cv7.exe" config /d_Путь к базе, оканчивается слэшем\_ /n_имя пользователя_ /p_пароль пользователя_ /@_путь к пакетному файлу_\reindex.prm
В данном случае имя пакетного файла - reindex.rpm

Вы можете скачать и установить программу Хранитель отсюда, которая сама всё сделает - создаст нужный пакетный файл (переиндексировать, переиндексировать и сохранить базу в архив, скопировать базу во временную папку и оттуда заархивировать) и выполнит его. Может работать из планировщика по расписанию. Программа бесплатна, не привязана к компонентам 1С:Предприятия и использует только штатные средства Конфигуратора.
Неизвестный
04.12.2010, 00:10
общий
Цитата: 217777
Не ошибка блокировки метаданных, а ошибка открытия базы данных.
Цитата: 217777
И после переиндексации базы.
После переиндексации... Не должно такого быть
Неизвестный
04.12.2010, 10:11
общий
После переиндексации... Не должно такого быть


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

Сервер зачастую выключается, в конце рабочего дня, не обращая внимания на то, работает кто либо в 1С или нет. Получается, что база, у некоторых пользователей, ежедневно, аварийно завершает свою работу.
Неизвестный
04.12.2010, 20:17
общий
Похоже нашлась причина -
Цитата: 217777
Сервер зачастую выключается, в конце рабочего дня, не обращая внимания на то, работает кто либо в 1С или нет. Получается, что база, у некоторых пользователей, ежедневно, аварийно завершает свою работу.

Появляется после реиндексации... Дайте скриншот, пожалуйста, или полное описание ошибки.

Еще! Обязательно сделайте тестирование и исправление информационной базы, предварительно сделав архив базы.
Вероятно, есть ошибки физической целостности таблиц, а следовательно и логической, и с итогами где-то может выстрелить.
Сделайте тестирование и исправление ИБ с параметрами, которые предложит система - все флажки установлены, кроме сжатия таблиц, режим тестирования - тестирование и исправление, при наличии ссылок на несуществующие объекты создавать ссылки, при частичной потере данных объектов создавать объекты. последние параметры доступны в диалоге по кнопке Настроить.

Еще мысль была - релиз 025. Вроде как и не последний, проблем я с ним не видел, но можно и обновить до 027 - это последний для платформы 7.7, и похоже, больше не будет.
Неизвестный
04.12.2010, 20:31
общий
Вдогонку.

Разработайте меры по избежанию выключения сервера при работе с базами 1С.

Это могут быть административные меры, например, обсудить эту проблему с сотрудниками, которые выключают сервер, или издать приказ - не выключать, не убедившись, что никто не работает.
Также на программном уровне - сделать выгонялку незавершенных сессий в 1С.
Неизвестный
05.12.2010, 01:23
общий
Полное описание ошибки: ошибка открытия базы данных. Без кода, просто диалог с сообщением.
Можно пример выгонялки с 1С так как не силен в таких программах.
Неизвестный
06.12.2010, 08:08
общий
У меня есть еще вопросы.
1. Какая ОС на компьютере с базой и у пользователей?
2. Проверьте права доступа сетевых пользователей - нигде никаких ограничений не должно быть. Допускается право "только чтение" для папки usrdef.
2. Проверьте, чтобы для каждого пользователя был прописан индивидуальный каталог, желательно в папке с конкретной базой. Например, путь вида .\users\имя_пользователя. Тогда не будет путаницы между системными папками и папками пользователей.

Если проблема не устранится, свяжитесь со мной по ICQ 256062905.
Неизвестный
06.12.2010, 12:01
общий
Цитата: 217777
Можно пример выгонялки с 1С так как не силен в таких программах.
Можно. общий алгоритм таков - на обработчик событий вешается проверка условного флага. Когда этот флаг взведен, системе подается команда ЗавершитьРаботуСистемы()

Вы можете выбрать себе по душе из этого списка.
Неизвестный
07.12.2010, 09:18
общий
Спасибо за советы.
Неизвестный
08.12.2010, 08:37
общий
это ответ
Здравствуйте, ДАС Алекс!

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

Вот пример пакетного файла, который сделает только реиндексацию базы:
Код:
[General]
Quit=1 ;Закрывать Конфигуратор
CheckAndRepair=1 ;Тестирование и исправление БД
SaveData=0 ;Сохранять базу в архив
[CheckAndRepair]
Repair=1 ;исправлять ошибки
PhysicalIntegrity=0
LogicalIntegrity=0
RecalcSecondaries=0
RecalcTotals=0
Pack=0
SkipUnresolved=1
CreateForUnresolved=0
Reconstruct=0
Reindex=1

А запустить его можно с помощью команды "C:\Program Files\1Cv77\BIN\1cv7.exe" config /dПуть к базе, оканчивается слэшем\ /nимя пользователя /pпароль пользователя /@путь к пакетному файлу\reindex.prm
В данном случае имя пакетного файла - reindex.rpm

Вы можете скачать и установить программу Хранитель отсюда, которая сама всё сделает - создаст нужный пакетный файл (переиндексировать базу и сохранить в архив, скопировать базу во временную папку и оттуда заархивировать) и выполнит его. При этом для каждой информационной базы будет создан отдельный архив с префиксом, датой и временем создания архива и положен в индивидуальную папку архивов этой базы. Программа может работать из планировщика по расписанию. Программа бесплатна, не привязана к компонентам 1С:Предприятия и использует только штатные средства Конфигуратора и является конфигурацией, написанной в среде 1С 7.7.

Если сервер выключается во время работы с базой данных, после реиндексации базы ошибка продолжает повторяться, обязательно сделайте тестирование и исправление информационной базы, предварительно сделав архив базы.
Вероятно, есть ошибки физической целостности таблиц, а следовательно и логической, и с итогами где-то может выстрелить.
Зайдите в режим Конфигуратора, в меню Администрирование - Тестирование и исправление ИБ. Сделайте тестирование и исправление ИБ с параметрами, которые предложит система - все флажки установлены, кроме сжатия таблиц, режим тестирования - тестирование и исправление, при наличии ссылок на несуществующие объекты создавать ссылки, при частичной потере данных объектов создавать объекты. последние параметры доступны в диалоге по кнопке Настроить.

Еще мысль была - релиз 025. Вроде как и не последний, проблем я с ним не видел, но можно и обновить до 027 - это последний для платформы 7.7, и похоже, больше не будет.

Разработайте меры по избежанию выключения сервера при работе с базами 1С.

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

Вы можете выбрать себе по душе любую разработку из этого списка.

Дополнительно:
1. Проверьте права доступа сетевых пользователей - нигде никаких ограничений не должно быть. Допускается право "только чтение" для папки usrdef.
2. Проверьте, чтобы для каждого пользователя был прописан индивидуальный каталог, желательно в папке с конкретной базой. Например, путь вида .\users\имя_пользователя. Тогда в каталоге ИБ не будет путаницы между системными папками и папками пользователей.

Успехов!
С уважением, Владимир.

Форма ответа