Поиск решений вопросов, возникающих в 1С:Предприятие 8

 
 
 
 

 

 


Вместо вступления (из сериала House M.D. о диагностике и поиске решений)

  • Д-р Кадди: Нужен диагноз. Женщина, 26 лет, взрыв газа под зданием, её вытащили из под обломков через 6 часов. Две операции из-за многочисленных переломов и ожогов…
    Д-р Хаус: Думаю, сломанные кости это следствие обрушавшегося ей на голову здания.
  • Д-р Хаус: Представьте, что крыша кладовки обрушилась на вашу любимую поломоечную машину. И та начинает перегреваться.
    Уборщик: Почему я должен любить поломоечную машину? Ладно… Может, от удара повредилось что-нибудь в электропроводке. Или что-то затекло внутрь и испортило её…
    Д-р Хаус: Хм, интересно. Проникновение инфекции через рваные раны. Бактерии отреагировали бы на антибиотики. Для вируса слишком сильный жар.Возможно, паразиты или грибки.
    Уборщик:Или волчанка.
    Хаус в изумлении оборачивается
    Уборщик: У моей бабушки волчанка.
    Д-р Хаус:(озадаченно) Хорошо,ауто-имунная. Проверю на волчанку. Хотя больше подходит инфекция. Хорошо бы ещё её карту. Приступим к худшей части работы. К общению с семьей поломоечной машины.
  • Д-р Хаус: В карточке указано, что она была больна ещё до того, как здание обрушилось.
    Муж пациентки: Я считаю, что это обычная простуда. А что, вы считаете это связано?
    Д-р Хаус: Её болезнь с её болезнью? Порой случается.
  • Мать пациентки: В дневнике сказано, что моя дочь принимает эти таблетки?
    Д-р Хаус: Нет, но с медицинской точки зрения…
    Д-р Кадди: Вы нашли таблетки в её доме?
    Д-р Хаус: Очевидно, она прятала их в сумочке. Подумал, будет неприлично искать под 1000 тонн обломков.
  • Хирург: У неё повсюду кровотечения, разве что аборт сделали при помощи дробовика.

 

В этой статье показан пример общих принципов разбора технологических вопросов, которые могут появляться при работе с 1С:Предприятие 8.1.

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

Принципы анализа

В качестве примеров будут разобраны:

Пример 1. Пользователь пожаловался на невозможность запуска 1С:Бухгалтерия.

Текст сообщения:

"Ошибка соединения с сервером 1с: Предприятия 8.1:
server_addr=App1С:1540=Ошибка сетевого доступа к серверу
(Windows sockets - 10061(0x0000274D)
No connection could be made because the target machine actively refused it) line =567

 

Пример 2. "Потерялся" доступ к информационной базе.

Текст сообщения:

Ошибка при выполнении операции с информационной базой

Microsoft OLE DB provider for SQL Server: Login failed for user ‘user1c’

HRESULT=80040E4D, SQLSrvr: Error state=1, Severity=E, native=18456, line=1

 

Пример 3. Странная "неизвестная" ошибка.

Текст сообщения: «Произошла неизвестная ошибка на сервере 1С предприятие (80010108)»

 

1. Определение текста (проявления) ошибки и локализация источника возникновения

Определение ошибки

  • Зафиксируйте ошибку (текст и/или другую информацию, которая может пригодиться для анализа проблемы). Проблему лучше фиксировать с помощью технологического журнала. Вывод: если вы не используете технологический журнал для других задач, настройте его на постоянный лог сбор событий "исключений" (EXCP) и формирование дампов случае падения платформы.
  • Зафиксируйте время возникновения ошибки. Это в дальнейшем поможет локализовать место изучения различных логов.
  • ПРОЧТИТЕ текст сообщения, попытайтесь сразу понять источник возникновения проблемы из содержимого этого текста.
  • Выполните поиск решения по тексту сообщения в интернете или в других известных вам источниках решения проблемы.
  • Те, кто до этого не занимались решением проблем с ошибками платформы, решать их не будут, ищете тех кто этим занимался или занимается.

Примечание. Пример 1. Поиск в ниже в разделе "Где можно найти готовое решение" по приведенным на данной странице тексту "10061" покажет сразу объяснение причины и решение: на сервере приложений остановлена служба "Агент сервера 1с:Предприятие 8.1". Соответственно ее надо запустить, например из командной строки:

net start Агент сервера 1с:Предприятие 8.1

Если сервер приложений не стартует, в некоторых случаях сделайте копию папки C:\Program Files\1cv81\server и удалите содержимое перед попыткой старта.

 

 
 

2. Воспроизведение ошибки

Воспроизвести ошибку

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

Для локализация источника ВДУМЫВАЙТЕСЬ в текст сообщения об ошибке. Если под подозрением несколько источников, старайтесь исключать поочередно (если это возможно) каждый источник по-одному. Для локализации пользователя-виновника в коде сервера приложений можно попытаться создать временно рабочих процессов по количеству пользователей.

Технологический журнал

Используя технологический журнал можно исследовать все проблемы, возникающие "внутри" клиент-серверного варианта. Прибегайте к другим логам, то если для этого есть важные причины. Если вы не пользовались технологическим журналом или не хотите - ЭТО НЕ ВАЖНАЯ ПРИЧИНА И СНИЖЕНИЕ ВЕРОЯТНОСТИ НАЙТИ РЕШЕНИЕ. Технологический журнал создавался именно для решения этих задач.

Опрос пользователей

Д-р Хаус (Кэмерон и Чейзу): Вы вместе принимали душ?
Д-р Кэмерон/Д-р Чейз (одновременно): Нет!
Д-р Хаус: Двойное отрицание означает «да»!

«Все лгут» (Everybody lies) © Хаус

С опросом пользователей надо аккуратней. Этот способ диагностики лучше применять, только после того как будут использованы и проанализированы все дургие источники информации. Опять таки, все время в опросе концентрироваться на главном вопросе и/или постораться понять, ради чего лгут.

Воспроизведение проблемы

Иногда воспроизведение проблеммы дает интересные результаты.


Перед выполнением каких-либо "научно-исследовательских действий" обязательно сделайте бэкап.

Примечание. Пример 2. Ответим на вопрос об источнике проблемы на основании текста сообщения "provider for SQL Server". Это означает, что проблема возникла при взаимодействии сервера приложений 1С, который является клиентом для SQL Server. Уточняющее описание «Login failed for user ‘user1c’» - позволяет определить, что ошибка возникла при неудачной авторизации пользователя «user1c», который  создан на SQL Server.

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

Решение:

Запускаем Management Studio и пробуем подключиться к серверу под "user1c". Оказывается, администратор сервера сменил пароль логину "user1c". При этом в настройках информационной базы в кластере серверов остался "старый" пароль.

После обновления пароля у информационной базы в кластере серверов 1С:Предприятие проблема исчезла.

 
 

 

 

 

3. Поиск решений

Поиск решений

  • Поиск решения проблемы на практике часто полезно начинать с вопроса: А может быть у вас есть бэкап и дешевле откатиться на него? Конечно это подходит не всегда и не всем :)
  • Для поиска воспользуйтесь сначала поисковиком.
  • Не помог поисковик, обратитесь на форумы forum.mista.ru и partners.v8.1c.ru (правда это автоматически обозначает, что вы скорее всего поленились выполнить поиск).
  • Для часто повторяющихся проблем человечество предумало всякие "базы знаний", "книги знаний", "доступ к материалам техподдержки".

Примечание. Пример 3. Поисковая система Google (www.google.ru) выдала такую причину «The object invoked has disconnected from its clients». Т.е. по некой причине соединение сервера 1С:Предприятие было отключено. Попробуем определить возможные причины отключения соединения: определим, возникает ли такая ошибка одновременно у всех пользователей. Ошибка возникает по таймауту (т.е. через некоторое время после установки соединения). Уточним, всегда ли таймаут постоянный, каково время таймаута. Определим, есть ли настройки в системе, увязывающие работоспособность с неким параметром, имеющим значение близкое к нашему времени таймаута.

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

В данном примере "Схема управления питанием" имела настройку "Отключение дисков" = 20 минут, что коррелировало с 20 минутными периодами возникновения этой ошибки.

Пример №4. Описан здесь.

 

Накопление статистики

Я сказал, что у нас есть три человека.

Это шесть ног.

Так что три болят из-за бега,

две пострадали при авариях,

и ещё одна нога беременна.

© Хаус

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

Например, знаю что статистически дампы создаваемые MS SQL Server 2005 ниже SP3 при работе с 1С v8.1 чаще всего связаны с проблемой падения сервеной части из-за попытке отбора с временем 23:59:59, когда имеются записи с таким же временем. Ошибка возникает гарантировано если все документы датированы "**.**.** 0:00:00" - создавались обработкой.
(Обсуждения здесь http://social.msdn.microsoft.com/forums/en-US/sqldatabaseengine/thread/b720d8cc-d8c7-419f-8f65-5a4187a26ac2 и http://partners.v8.1c.ru/forum/thread.jsp?id=462620#462620)Конечно, если статистику не знать, на решение проблемы все равно можно выйти. Но почуствуйте, какая разница во времени!

 

Где можно найти готовое решение

В настоящее время большинство технологических вопросов достаточно легко решить, так как по ним в Интернете накоплены знания.

Ниже приведен пример моего каталога. Достаточно выполнить поиск по коду ошибки или части текста сообщения.

связанные с переходом на 8.2

Не обнаружена установленная версия 1С:Предприятия

ошибка доступа к файлу

 
 

Ошибка SDBL

 
 
 
 
 
 
 
 
 
 
 

Без выдачи сообщения об ошибке

 
 

 

Windows Sockets

 
10061
 
 
 
 
 
 
 
 
 
 
 
10106 Ошибка сетевого доступа к серверу. (Windows Sockets - 10106(0x0000277A)
10048 Ошибка сетевого доступа к серверу (Windows Sockets - 10048(0x00002740)

 

 

 

Windows Installer

 
 
Windows  
 
 
HRESULT=800708C5  
 
HRESULT=800706BE   
 
HRESULT=800706BA  
800706BA 
 
HRESULT=8007056B  
 
HRESULT=80070056  
 
HRESULT=80040E4D  
 
HRESULT=80040E31  
SQLSTATE=HYT00
 
native=1222
 
 
HRESULT=80040E2F  
native=2601
 
 
 
 
 
HRESULT=80040E14  
native=9002
 
 
native=8630
 
 
native=8626 
 
 
native=8133
 
 
native=8124
 
 
native=8120
 
 
native=319
 
 
 
 
native=306
 
 
 

 
 
native=207
 
 
native=130
 
 
 
 
            Microsoft OLE DB Provider for SQL Server: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
HRESULT=80040E07
 
 
HRESULT=8002000A  
 
HRESULT=80010108   
HRESULT=80010005   
HRESULT=80004005  
native=8134
 
 
 
 
native=601
 
 
native=3624
 
 
 
native=1205
 
 
native=11
 
 
 
native=102
 
native=21
 
Неопознанная ошибка HRESULT=80004005  
 

Ошибка СУБД: htype=SQL_HANDLE_STMT hndl=0x20001, line=5387, file=./src/DB2Connection.cpp SQLSTATE=57011, native=-964, 'IBMCLI DriverDB2/LINUX SQL0964C The transaction log for the database is full. SQLSTATE=57011

Ошибка СУБД: htype=SQL_HANDLE_STMT hndl=0x10001, line=2491, file=.\src\DB2Connection.cpp SQLSTATE=57011, native=-964, '[IBM][CLI Driver][DB2/NT64] SQL0964C Журнал транзакций для базы данных заполнен. SQLSTATE=57011'

Ошибка СУБД:[IBM][CLI Driver][DB2/NT64] SQL0429N

Ошибка СУБД: htype=SQL_HANDLE_STMT hndl=0x10001, line=2609, file=.\Src\DB2Connection.cpp SQLSTATE=42986, native=-750, '[IBM][CLI Driver][DB2/NT] SQL0750N 

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

 
 
 


Информационная база не обнаружена

 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
не выгружаются базы данных в dt

 

Не хватает клиентских ключей защиты

 
   

Характерные для 8.0


Короче...

Тема конечно преинтереснейшая. Обсуждать можно долго. Но уже пора начать практические действия. Кстати, еще есть техподдержка 1С и я :).

 
   

Перейти к другим материалам сайта

Курсы Администрирование 1С
Работы Экспертиза 1С
© Гилёв Вячеслав, 2004-2009
email: gilv @ rarus.ru