:: Вопросы по 1С
Переиндексация файловой 1с 77
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
Последние две недели файловая 1С ведет себя странным образом.

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

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

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

Попробовал сделать еще один скрипт для принудительной переиндексации и запускать его после всех заданий. Долго мучился с определением признака необходимости индексации (чтобы не делать без необходимости). Решил проверять файл 1susers.dbf, сначала пробовал считывать из него данные через ADODB - файл открывает, запрос отрабатывает, но результат пустой. Попробовал через разные драйверы - все одинаково. Была уже глубокая ночь, так что решил тупо читать байт из файла, чтобы анализировать признак занятости базы. Результаты получились странными: опять же неожиданные ошибки в разных местах скрипта. Иногда даже на createobject ругается, иногда 1С не запускает или отказывается прибить процесс. Хотя при другом запуске эти же операции выполняются без ошибок. Но самое странное, что после успешного удаления всех индексов, файла 1susers.dbf, пересоздания индексов и корректного закрытия 1С при следующем ручном запуске 1С она иногда (не всегда!) все равно требовала переиндексацию.

Отсюда вопросы:
1. Подскажите, где и как хранится признак того, что файловая 1С при следующем запуске будет требовать пересоздание индексов? Однозначного ответа в интернете не нашел. Файл 1susers.dbf имеет одну запись и два поля, в которых хранится количество подключенных пользователей и еще что-то. Если кол-во пользователей не равно нулю при отсутствии в памяти запущенных процессов 1С, это можно использовать как признак некорректного выхода из базы (учитывая, что по сети никто не подключается, только в терминале). Вроде еще файл .lck можно как-то анализировать, но не нашел, как именно.
2. Могут ли подобные ошибки возникать из-за каких-то особенностей выполнения скриптов?
3. Может, есть другие способы внешней переиндексации 1С, менее "топорные", чем удаление всех индексов и запуск 1С монопольно? Самое главное, как убедиться, что 1С не запросит индексацию при следующем запуске?

Пример скрипта на переиндексацию под спойлером.

Наиболее частая ошибка в логах - 0x80010105 при запуске 1С или при открытии файла-обработки. Чуть реже 0xD при открытии обработки. Остальные - единичные случаи.

Планирую еще проверить работу скрипта при выключенном антивирусе и провести "тестирование и исправление информационной базы" в конфигураторе. Проблема только, что это придется делать в ночное время, работа пользователей с базой идет с 7 утра и обычно часов до 10-11 вечера (вечерами сидят пользователи на удаленке).
Ratings: 0 negative/0 positive
Re: Переиндексация файловой 1с 77
pasha_usue
Автор

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
До компа не получается добраться. Если коротко, 1с создаёт файл .lck в каталогах пользователей. А после закрытия удаляет. Если какой-то экземпляр трапнулся, в каталоге этот файл останется. Так 1с принимает решение о переиндексации.
Ratings: 0 negative/0 positive
Re: Переиндексация файловой 1с 77
pasha_usue
Автор

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Похоже на проблемы с памятью в общем виде. Проверьте железо.
Ratings: 0 negative/0 positive
Re: Переиндексация файловой 1с 77
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
pasha_usue
До компа не получается добраться. Если коротко, 1с создаёт файл .lck в каталогах пользователей. А после закрытия удаляет. Если какой-то экземпляр трапнулся, в каталоге этот файл останется. Так 1с принимает решение о переиндексации.

Да, нашел тоже информацию про этот файл, но на практике картина оказалась другой. В этой конфигурации заведено около 30 пользователей, но каталоги никому из них не назначены. И получается, что в рабочем каталоге ИБ нет каталогов пользователей, только папка userdef, в которой файл users.usr. Файл 1Cv7.LCK нулевого размера присутствует в рабочем каталоге и остается там даже при корректном выходе из 1С. Проверю еще раз, но вроде даже при его наличии программа не требовала переиндексации, если вышли нормально.

pasha_usue
Похоже на проблемы с памятью в общем виде. Проверьте железо.

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

В пятницу провел тестирование и исправление ИБ, после этого в выходные и сегодня утром автоматические запуски скриптами проходили без сбоев. Хотя в эти дни никто из пользователей с базой не работал, так что буду наблюдать дальше.
Ratings: 0 negative/0 positive
Re: Переиндексация файловой 1с 77
pasha_usue
Автор

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
ry
Файл 1Cv7.LCK нулевого размера присутствует в рабочем каталоге и остается там даже при корректном выходе из 1С.
Так в этом и логика. Если можешь захватить на эксклюзивную запись, значит никто его не держит - все вышли, либо отвалились.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 3 (Гостей: 3)

© 2000-2024 Fox Club 
Яндекс.Метрика