Полезная статья про ошибки 1С Предприятия 8...

Jun 17, 2014 00:42

Часто встречающиеся ошибки 1С и общие способы их решения (копия - под катом)

Мало ли, кому-то будет полезной...

В целом - да, именно так и шаманим, не помогает - несем базу программистам 1С.

С комментарием после статьи тоже согласен.

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

В информационных базах на платформе 1С могут возникнуть множество различных ошибок:

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

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

Во-первых, стоит задать несколько уточняющих вопросов пользователю:

1) Релизы платформы/конфигурации.

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

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

4) Возникает ли если запустить 1с с другого компьютера/от другого пользователя? Это даст нам пищу для размышлений - сможет ли помочь очистка кэша, настройка прав, или очистка настроек пользователя.

Теперь немного о самих ошибках и том как их решать.

Общее:
Часть ошибок возникает при использовании нелицензионного ПО (windows, 1C и т.д.).

Распространенный пример - ломаная платформа. Один из патчей взламывает конкретную версию платформы, поэтому после установки новой версии платформы и попытке зайти в базу можно увидеть окно «Не обнаружено свободной лицензии».

Если Вы встретили ошибку в первый раз - возможно, кто-то уже ее встречал -

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

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

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

Технологический журнал позволяет протоколировать все события 1С:Предприятия (или часть, используя фильтр).
Про него можно прочитать здесь и здесь.

!!!ВАЖНО

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

Если база не открывается в конфигураторе - скопировать папку с базой и выполнять все операции на копии!

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

Самое быстрое, что можно сделать - очистить временные файлы (удалить базу из списка баз и подключить заново)

Это действие не удалит временные файлы (кэш), а создаст новую папку для временных файлов базы, удалить файлы можно:
В Windows 7 в C:\Users\Имя_Пользователя\AppData\Roaming\1C\1Cv8x
В Windows XP C:\Documents and Settings\Имя_Пользователя\Application Data\1C\1Cv8х

Также можно попытаться зайти в базу от другого пользователя.

Если база файловая, то стоит запустить утилиту для тестирования физической целостности базы chdbfl. Она находится в папке:
C:\Program Files (x86)\1cv8\8.x.x.xxx\bin\chdbfl.exe

Если база sql-ная то тестирование средствами sql.

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

Если не получилось ничего из перечисленного, можно воспользоваться программкой Tool_1CD. Ссылка.

2) Если база при запуске уходит в дамп.

Отключить аппаратное ускорение видеокарты:

В Windows XP:

Откройте свойства экрана. Это можно сделать через Панель управления, или просто щелкнув правой кнопкой мыши по любому месту рабочего стола, свободному от окон и значков, и выбрав пункт контекстного меню «Свойства».
В открывшемся окне настройки дисплея перейдите на закладку «Параметры» и нажмите кнопку «Дополнительно».
В открывшемся окне свойств видеокарты перейдите на вкладку «Диагностика».
Передвиньте движок «Ускорение» в крайнюю левую позицию («нет») и нажмите «Применить» или «Ок». Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.

В Windows 7:

Откройте Панель управления (Пуск - Панель управления).
Найдите и откройте элемент «Экран».
В левой части открывшегося окна щелкните по ссылке «Настройка параметров экрана».
В открывшемся окне нажмите на ссылку «Дополнительные параметры».
Перейдите на вкладку «Диагностика» и нажмите кнопку «Изменить параметры».
В открывшемся окне передвиньте движок в крайнее левое положение («нет») и нажмите «Ок». Если UAC включен, придется подтвердить, что изменения санкционированы пользователем. Аппаратное ускорение отключено. Изменения вступят в силу после перезагрузки системы.

В Windows 7 в некоторых случаях кнопка «Изменить параметры» будет неактивна. В этом случае отключить аппаратное ускорение невозможно, так как видеокарта и ее драйвер не поддерживают манипуляции аппаратным ускорением.

Подробнее: http://www.kakprosto.ru/kak-2210-kak-otklyuchit-apparatnoe-uskorenie#ixzz331zNZKaX

Если антивирус Касперский, то можно попробовать отключить самозащиту и переименовать файлы kloehk.dll и mzvkbd3.dll в папке Касперского. (Ошибка возникала на старых версиях 2011 года, но еще иногда встречается)
Проверить соответствие релиза платформы/конфигурации.
Попробовать зайти в базу с другой платформы.

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

Очистка временных файлов
Попытка зайти за другого пользователя
chdbfl / тестирование средствами sql
Тестирование и исправление ИБ:
В конфигураторе Администрирование-Тестирование и исправление - галочки в зависимости от ситуации.
Выгрузка в *.dt и загрузка в "чистую" базу
Попробовать создать др. пользователя с полными правами и зайти от него.
Попробовать перенести на другой ПК и открыть там, может что-то с ПК.

4) При каком-то действии выкидывает на код в конфигуратор.

Для проверки стоит очистить кэш.
Если не помогло то скорей всего ошибка в коде - особенно актуально для нетиповых и самописных конфигураций, но встречается иногда и в типовых.

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

Если типовая, то возможно ошибка в релизе.

В любом случае стоит пробежать в отладчике и посмотреть что не так.

5) Под одним пользователем дает что-то сделать, под другим нет.

Настройки прав пользователей.
Настройки пользователя.
Очистка кэша.

6) С одного ПК заходит, с другого нет.

Проверить в проводнике видит ли базу - может к папке с базой не предоставлен общий доступ.
Очистка кэша.
Зайти под другим пользователем.

7) Я ничего не делал/делала но у меня все сломалось

Если смогут подсказать что именно «не делали» и когда, то можно воспользоваться

журналом регистрации с отборами и возможно узнать, в чем проблема.
Журнал регистрации можно найти в конфигураторе:
Администрирование - журнал регистрации.

Либо в пользовательском режиме - расположение зависит от конфигурации.

8) Недостаточно памяти.

Был у меня случай, пришел клиент, говорит, при закрытии месяца вылетает ошибка "Недостаточно памяти". Взялся я за эту проблему. Думал, что легко, сначала добавил оперативки - ошибка. Было 2 гигабайта, стало 4, а все равно 1с-ке мало. Размер файла подкачки менял - ошибка, переустановка системы (поставил Windows 7) дало только временный результат, где-то на неделю. Перепробовал все. Спустя некоторое время решение было найдено.

Решение

На клиентском компе запустить командную строку от имени администратора, прописать там следующее:

BCDEdit /set increaseuserva xxxx - вместо хххх пишите объем виртуального адресного пространства в мегабайтах, т.е. сколько нужно памяти под работу приложений. По умолчанию 2 гига. Вообще в 32-разрядных операционных системах выделяется 4 гигабайта: 2 - на приложения и 2 на нужды самой ОС. Я выбрал 3000 (т.е. CDEdit /set increaseuserva 3000). Однако система может подглючивать. Особенно, если у вас 2 гига оперативки, как у меня. Это для ОС семейства Windows Vista, 7, Windows 2008.

Для Windows XP \ Windows 2003 пишем
/3GB /userva=xxxx (xxxx в МБ в диапазоне 2048 - 3072) в файле boot.ini, рекомендуемый максимум значений userva 2900-3030.

Ссылка на эту ошибку http://infostart.ru/public/147631/

9) Элементы форм налезают друг на друга и имеют неправильное расположение.

Очистка кэша.

10) Ошибка СУБД Внутренняя ошибка компоненты dbeng8

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

Решение: обновиться до актуального релиза на всех рабочих местах.

Если не помогло, тогда делаем следующее:

Тестирование и исправление

chdbfl

Выгрузка в *.dt и загрузка в "чистую" базу

11) Ошибка в платформе 8.3.4.428

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

12) Конфликт блокировок при выполнении транзакции:

Microsoft OLE DB Provider for SQL Server: Could not continue scan with NOLOCK due to data movement.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=3, Severity=C, native=601, line=1

"Как проверить (восстановить) базу на MS SQL Server средствами сервера
Проверку логической целостности нужно выполнять штатными средствами 1С:Предприятия (Тестирование и исправление ИБ). В случае, если такую проверку не удается выполнить, следует проверить физическую целостность БД средствами MS SQL. Для проверки целостности средствами MS SQL нужно выполнить следующую команду:
Код:
DBCC CHECKDB ("",REPAIR_REBUILD)
Перед выполнением этой команды нужно базу данных перевести в режим "single user":
Код:
sp_dboption "","single user",true
В процессе работы DBCC CHECKDB могут быть обнаружены ошибки и часть может быть сразу же исправлена. Если ошибки остались, то по всей видимости их нельзя восстановить без потери некоторых данных. В этом случае нужно запустить DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS (перед запуском желательно сделать копию файлов базы данных).
Код:
DBCC CHECKDB ("",REPAIR_ALLOW_DATA_LOSS)
После выполнения DBCC CHECKDB нужно не забыть вернуться в нормальный режим (выйти из режима "single user"):
Код:
sp_dboption "","single user",false" (Взято с сайта http://1c-esse.buter.ru)

Комментарий (не мой):

13. asved.ru 04.06.2014 16:26
Это не статья. Это перечень условно известных проблем с не всегда корректными рекомендациями по их решению.

Далее по пунктам:
0) Кэш (и Local, и Roaming) чистим в первую очередь. И при возможности перезапускаем серверы приложения и СУБД.

1) Правильное решение - технологический журнал.
2) Приведена только одна из возможных причин, к тому же не самая частая. (проверьте в системном логе ошибок GDI). И даже в этом случае лучшее решение - обновлять драйвера видео. Наблюдается это только со старыми дровами встроенного видео Intel. А вообще правильное решение - технологический журнал.
3) Правильное решение - технологический журнал
4) Не нужно гадать - сразу идем в отладчик.
5) Верно.
6) Скорее всего, это какая-то проблема связи либо авторизации. В случае с файловой базой первичная рекомендация верная, а при клиент-серверной помогут всяческие пинги, телнеты, анализ системных логов и опять же - технологический журнал.
7) Не забыть написать служебку о саботаже рабочего процесса пользователем. В следующий раз пользователь будет помнить, что он делал. А так да, ЖР, минимальный ТЖ (excp, excpcntx) и логи.
8) Вообще-то в современных конфигурациях механизмы, требовательные к памяти, обычно выполняются на сервере. Может помочь оптимизация проблемных запросов. А в некоторых случаях поможет только сервер x64. Ну и о фрагментации адресного пространства памяти не забываем, спасет плановый перезапуск рабочих процессов.
9) Не факт. В УФ может быть виноват браузер, в ОФ - кривые привязки элементов формы.
10) Тоже не факт. Сбойная база к такой ошибке может приводить.
11) Версия платформы отозвана. Решение - только поднимать базу из бэкапа.

12) С чего вы вообще взяли, что конфликт блокировок - это ошибка? Это показатель некорректной работы СУБД или логики конфигурации, и dbcc checkdb Вас от этого не спасет.
"Конфликт блокировок" бывает двух видов:
а) таймаут - тут нужно выяснять, почему не удалось наложить блокировку за отведенное время.
б) дедлок - тут нужно анализировать порядок наложения блокировок, и далеко не всегда эту проблему удается решить "малой кровью".

Решение проблем, Ошибка, Софт,

Previous post Next post
Up