В начале юридического договора, особенно в ИТ области, обычно есть раздел под названием Термины. В нем объясняется — что значит или включает в себя то или иное ИТ слово.
Но кроме действительно сложных слов как сервер или сайт также и обычные, всем известные слова у программистов могут значить совсем другое. Например ошибки. В общечеловеческом смысле это слово означает неправильное действие. Такое, за которое его автору может быть даже стыдно.
В программистом смысле слово ошибки имеет, наверное, два уточнения..
Что означает термин «ошибка» в программировании и в 1С
Ошибка – это поведение программы, отличающееся от задуманного. Каждый компьютер это уникальный комплекс программ и железа, отличающийся от другого компьютера.
Стандартизация как железа, так и программ, позволяет нам предполагать, что на каждом компьютере программы будут работать одинаково, однако по факту всегда могут складываться определенные обстоятельства, когда автор программы будет удивлен почему программа делает сейчас именно так, а не иначе.
Регламентные операции по закрытию месяца в 1С: Бухгалтерия
Сюда же вероятно можно включить те ситуации, когда программа делает что-то не так, потому что программист о чем-то забыл или недодумал.
Ошибка – это специальное сообщение программы о сложившихся обстоятельствах, когда программа не может сделать так, как предполагалось она будет делать. Возможно покажется, что это то же самое, но это не так.
Например, программист задумывал, что сначала пользователь откроет файл, а потом программа сделает то-то и то-то. Однако когда программа была скопирована пользователю на компьютер и пользователь забыл открыть файл. Или пытался открыть, но файл оказался некорректный или винчестер «битый».
И программа сообщает пользователю: Эй, тут ошибка! Я не могу сделать то, что должна.
Ошибки 1С имеют несколько уровней – во первых сообщения об ошибках 1С могут принадлежать платформе 1С, которая сообщает о невозможности выполнить какие-то действия, которые она должна была выполнить из-за сложившихся обстоятельств.
Второй уровень – это ошибки 1С в программе на языке 1С. Да, платформа выполняет успешно написанную программистом 1С программу, но программа может быть написана некорректно или также не может быть выполнена именно в сложившихся обстоятельствах (на этом компьютере, при таких действиях конкретного пользователя и т.п.).
Третий уровень – это ошибки 1С в данных. Данные в базе данных взаимосвязаны друг с другом. Тем не менее могут встречаются ситуации когда данные «портятся». Например, в одной из форм не стоят достаточные проверки, чтобы особенно креативный пользователь ввел что-то неправильно. Далее программа может сработать неверно, потому что алгоритм не предполагал что кто-то введет такое..
Сообщение об ошибке 1С
1С сообщает об ошибке выполнения программы на языке 1С с помощью типового окошка с текстом ошибки 1С и кнопками ОК и Подробнее.
Причем секрет тут в том, что в этом окошке отображается только краткое сообщение об ошибке 1С, которое зачастую программисту ни о чем не говорит.
1С Типовые операции БГУ Урок 1
Чтобы увидеть полное – нужно нажать на кнопку Подробно. Уже там будет отображена даже строка программы, в которой произошла ошибка 1С. Также можно перейти прямо в конфигуратор к этой строке.
Но пользователи об этом не знают.. И всегда присылают скриншот того первого окошка. Если присылают
Итак, мы рассматриваем ошибку 1С в программировании как способ/возможность программе сообщить пользователю о том, что она не может что-то сделать.
Пример. Нужно открыть файл. Но при открытии возможны ошибки 1С – например у пользователя нет доступа на чтение файла. Мы можем написать так:
Файл = ОткрытьФайл(ИмяФайла);
Если Файл = Ложь Тогда
Сообщить(«Не удалось открыть файл»);
Иначе
//программа идет дальше, делаем что-то с файлом
КонецЕсли;
В данном примере мы учли, что файл может быть не открыт с помощью конструкции «Если».
Однако у данного примера есть очевидные минусы:
- Таких вариантов может быть много (не откроется файл, не прочитается файл до конца, пользователь пьян, выключили электричество..)
- Могут быть неучтенные варианты, про которые программист не подумал.
Поэтому в программировании принято использовать прием под названием «генерировать исключение» — то есть позволить ошибке 1С произойти.
Программа делает вид, что файл в любом случае откроется. Никаких «Если» не пишется. Если же что-то пойдет не так, то программа собственно и сообщит об ошибке 1С – ее выполнение прервется.
1С сама файл не открывает – она вызывает команду Windows API. Windows написана также с использованием этого приема. Таким образом Вы можете представить себе цепочку прерываний выполнения, начинающуюся с Windows:
- Язык 1С – команда открыть файл
- Платформа 1С – команда открыть файл
- Windows API – команда открыть файл
- Программа на ассемблере – команда открыть файл
- Опа! Файл не открывается!
- Программа на ассемблере прервана!
- Функция Windows API прервана!
- Платформа 1С выполнение программы прервано!
- Программа на языке 1С прервана!
- Пользователь видит сообщение.
Вопрос: кто выводит тогда сообщение об ошибке 1С? Откуда оно берется?
Перехват и обработка исключения
Так мы подходим к следующему приему: перехват исключений, сгенерированных во время выполнения этой цепочки.
Исключения переходят с нижнего уровня выполнения наверх, по цепочке. Если последний уровень не обработал исключение – то это сделает предыдущий уровень.
Пример. Обработаем исключение в языке 1С:
Попытка
Файл = ОткрытьФайл(ИмяФайла);
Строка = Файл.Прочитать();
Исключение
Сообщить(«Файл не удалось открыть: не существует или нет прав доступа»);
КонецПопытки;
В этом примере мы обработали самостоятельно исключение (т.е. исключительную ситуацию или ошибку 1С). Таким образом именно мы сообщаем пользователю о произошедшей «ошибке» — невозможности открыть файл.
Когда мы делаем это самостоятельно – мы можем и не сообщать пользователю ничего, а просто пойти по другому варианту выполнения программы.
Легко заметить, что этот способ можно применять в том числе и на случай, когда в каком-то участке кода может произойти «какая-нибудь» ошибка 1С. Мы ее «ловим» и обрабатываем или сообщаем о ней пользователю.
Что будет, если не перехватить и не обработать ошибку 1С на нашем «верхнем» уровне? Тогда о ней сообщит следующий уровень ниже — платформа 1С. Как она это делает, мы только что говорили и смотрели на скриншоте.
Что будет, если платформа не отработает это? Правильно – это обычно отработает более нижний уровень – Windows. В этом случае программа 1С «упадет», а Windows сообщит – программа совершила недопустимую операцию и будет закрыта.
Что будет, если Windows не отработает это? Вы наверняка это видели – компьютер зависнет или перезагрузится.
Вложенный перехват и транзакции
Как Вы думаете, какие сообщения увидит пользователь при выполнении данного примера?
Попытка
Попытка
ф = 1/0;
Исключение
Сообщить(«Конкретная ошибка»);
КонецПопытки;
Исключение
Сообщить(«Общая ошибка»);
КонецПопытки;
Верно! Сработает внутренний обработчик и сообщит «Конкретная ошибка», а внешний не сработает.
Однако с точки зрения программы здесь произошла ошибка 1С, хотя она и была отработана. Где-то там у себя в мозгах платформа запомнила – здесь была ошибка 1С.
Это имеет значение для выполнения транзакций. Транзакция – это несколько действий с данными в базе данных, которые должны выполняться только вместе. Как мы понимаем возможно причиной их невыполнения вместе могут быть ошибки 1С. Поэтому существует следующий механизм:
НачатьТранзакцию();
//создали справочник 1, но на самом деле он не записался в базу данных
Спр1.Записать();
//создали справочник 2, но на самом деле он не записался в базу данных
Спр2.Записать();
ЗафиксироватьТранзакцию();
//эта команда записала в базу данных все, что было сделано начиная с ‘НачатьТранзакцию’
Функция ЗафиксироватьТранзакцию() может быть выполнена только в случае, если с момента вызова НачатьТранзакцию() не произошло ни одной ошибки 1С.
Если Вы при написании подобного кода понимаете, что в этой строке кода может быть ошибка 1С – Вы можете поставить ее обработку с помощью Попытка/Исключение. Однако платформа в этом случае все равно учтет, что ошибка 1С произошла и не станет фиксировать транзакцию и записывать данные в базу данных.
Непреднамеренные ошибки 1С
Итак, в программе 1С программистом может быть допущена ошибка 1С. В этом случае платформа 1С сообщит о ней.
В случае, если не удается понять, почему и когда такая ошибка 1С возникает, Вы можете использовать Попытка/Исключение, чтобы обработать ошибку 1С.
Также Попытка/Исключение можно использовать в случае, когда Вы хотели бы создать гарантированно безошибочный участок программы. Вы сможете быть уверены, что если даже ошибка 1С произойдет, то Вы ее отлавливаете и отрабатываете специальным образом.
Преднамеренные ошибки 1С
Вы знаете, что вызываемые функции платформы или Windows могут не сработать в некоторых случаях (например файл не открыться, число не поделиться если делитель равен нулю).
Вы можете в тексте программы делать вид что файл всегда откроется и число всегда поделится. Но использовать Попытка/Исключение как способ переключить программу на другой вариант исправления в случае, если такое произойдет. Или просто сообщить пользователю об ошибке 1С.
Собственный вызов ошибки 1С
Вы можете самостоятельно создавать функции, которые в случае невозможности своего выполнения могут сообщать об этом с помощью генерации исключения.
Это можно сделать вот так:
Функция СделатьЧтото(Параметр)
Если Параметр = Неопределено Тогда
ВызватьИсключение «Ошибка в функции СделатьЧтото. Не указан параметр»;
КонецЕсли;
КонецФункции
Для чего это требуется? В случае, когда Вы создаете функцию, которой будете пользоваться во многих местах, а может будут пользоваться и другие – это красивый способ одновременно убить нескольких зайцев:
- Отработать ошибку 1С
- Сообщить об ошибке 1С на уровень выше (программе, которая вызывала эту функцию)
- Сообщить не только об ошибке 1С, но и текст/подробности
- Гарантированно прервать выполнение не только своей функции, но и всех уровней, если программист писавший их не подумал о том, что такая ошибка 1С может быть и не обработал ее.
Более корректные способы сообщения об ошибке 1С
Обычно когда требуется сообщить что-то пользователю, используются функции Сообщить() или Предупреждение().
Однако в типовых конфигурациях, таких как Бухгалтерия, Управление торговлей, УПП – есть специальная функция:
ОбщегоНазначения.СообщитьОбОшибке(«Текст»);
- Форма сообщения зависит от запущенного клиента
- Записывает сведения в журнал регистрации
- В некоторых конфигурациях реализована более красивая форма сообщения об ошибке 1С.
При работе платформы 1С работает журнал регистрации. Кроме действий пользователя он также сохраняет сведения об ошибках 1С, которые происходили в течении работы платформы 1С.
В конфигураторе выберите пункт меню Администрирование/Журнал регистрации.
Нажмите кнопку Отбор (как на картинке). Установите отбор событий только по ошибкам 1С.
Журнал отобразит список происходивших ошибок. Кликните на строчку, чтобы рассмотреть конкретное сообщение подробнее.
Проголосовать за этот пост:
Источник: howknow1c.ru
1C «Ошибка СУБД: Компоненты OLE DB провайдера не найдены»
Ошибка возникла на Windows Server 2008 R2 при попытке входа в ИБ 1С SQL. При этом на сервере зарегистрированы несколько баз: в одни пользователям удается войти, в другие — нет.
Со стороны клиентского приложения выводится сообщение «В данный момент вход в приложение невозможен, попробуйте войти позже».
Полный текст ошибки при выборе «Показать подробности…»: «Ошибка СУБД: Компоненты OLE DB провайдера не найдены CoCreateInstance: -2147023878(0x800703FA): Попытка произвести недопустимую операцию над параметром реестра, отмеченным для удаления».
Причина
Сообщение может быть выдано, если сервер 1С:Предприятия не смог создать COM-объект OLE DB Provider for Microsoft SQL Server. Другие возможные причины: нехватка оперативной памяти, ошибки ОЗУ или сбой службы/кэша 1С.
Варианты решений
1. Если 1С запускается на терминальном сервере, завершите полностью сеансы пользователя и выполните повторный вход.
2. Запустите командную строку от имени администратора и выполните проверки диска(-ов) на ошибки и целостность системных файлов.
chkdsk %SystemDrive%
sfc /scannow
3. Проверьте свободное место на диске(-ах). Сделайте очистку при необходимости.
4. Выполните очистку локального/серверного кэша 1С.
5. Убедитесь, что у пользователя, от имени которого запускается «Агент сервера 1С:Предприятия», есть права на каталог, содержащий компоненту OLE DB провайдера и на файлы в этом каталоге.
- Найдите в системном реестре ветку
HKEY_CLASSES_ROOTCLSIDInprocServer32
и посмотрите путь до файла sqloledb.dll в параметре «(По умолчанию)»
Например: «%CommonProgramFiles%SystemOle DBsqloledb.dll» - Проверьте, что файл библиотеки sqloledb.dll находится в папке. Каталог с файлом должен быть доступен пользователю USR1CV8 (Учетная запись для Сервера 1С:Предприятия 8).
- Переустановите Microsoft Data Access Components (MDAC).
6. Перезагрузите службы 1С и SQL. Последовательно остановите Агент 1С, службы SQL Server. Далее запустите SQL Server > Агент 1C.
7. Для проверки перезапустите «Агент сервера 1С:Предприятия» от имени системной учетной записи. Вход от имени: Локальная система.
8. Через оснастку «Администрирование серверов 1С Предприятия» удалите запись о сбойной ИБ в режиме «Оставить без изменений». Зарегистрируйте ИБ на сервере 1С повторно.
9. Перезагрузите сервер.
10. Выполните восстановление 1С в панели «Программы и компоненты» или переустановите платформу и сервер 1С.
✅ Надеемся, что действия из списка смогут вам помочь в исправлении этой ошибки. Поделитесь, что сработало в вашем случае — в комментариях.
__________
Если не получается или требуется дополнительная поддержка, наши программисты 1С готовы помочь → +7-911-500-10-11
Источник: nastroyka-1c.ru
Error 0000007e occured while loading resources 1c
1С Предприятие 7.7 Часто встречающиеся проблемы и способы их решения.
Как показал читательский отклик, интерес к 1С:Предприятие 7.7 до сих пор весьма велик. Поэтому мы решили опубликовать статью посвященную наиболее часто встречающимся проблемам и способам их решения для данной платформы.
1С Предприятие закрывается не выводя никаких сообщений об ошибке сразу после сплеш-заставки.
Проблема связана с тем, что текущий пользователь не имеет права записи в каталог информационной базы. Чаще всего проблема проявляется при сетевом доступе к ИБ, переносе жесткого диска с базами на другой ПК или после переустановки системы. Решение — выставить необходимые разрешения на папку с базой.
Ошибка «Доступ возможен только из одного каталога ИБ»
Данная ошибка возникает в SQL версии после того, как один из пользователей некорректно вышел из программы. Причина возникновения ошибки: при некорректном выходе не останавливается SQL процесс запущенный пользователем.
Для решения данной проблемы надо принудительно завершить процесс через SQL Enterprise Manager, информация об активных процессах содержится в ветке Management — Current Activity — Process Info, также можно просто перезагрузить SQL сервер. К возникновению этой ошибки также может привести неправильное конфигурирование 1С, когда информационные базы из разных каталогов пытаются использовать одну и ту же SQL-базу.
Ошибка «SQL State: 42000 Native: 170 Line 1: Incorrect syntax near ‘N’
Довольно распространенная ошибка у начинающих, возникает на этапе создания / подключения ИБ. Причина ошибки — недопустимый символ в имени SQL базы. Обычно возникает при попытке создать БД с именем начинающимся с цифры, параметр ошибки Incorrect syntax near ‘N’указывает на недопустимый символ (N). Решение: создать (переименовать) БД с корректным именем.
Ошибка «Microsoft Visual C++ Runtime Library: Runtime Error: abnormal program termination»
Причина возникновения — поврежденный файл журнала регистраций 1cv7.mlg в каталоге SYSLOG. Наиболее простым решением будет удалить этот файл, однако журнал при этом будет потерян. Если вам нужен журнал (для «разбора полетов») просто переместите этот файл в другое место. Можно попробовать исправить файл, для этого откройте его блокнотом и проверьте содержимое.
Обычно к ошибке приводит неполная или пустая последняя строка, иногда бывает достаточно только пересохранить файл. Также полезно бывает проверить папку ИБ на наличие «забытых» .lck файлов и удалить их.
Есть еще одна похожая ошибка, когда программа аварийно завершается только при входе конкретного пользователя. Метод «в лоб» — очистить каталог пользователя, но при этом будут потеряны все его настройки. Можно попробовать более изящный способ: копируем каталог пользователя в другое место, переименовываем, возвращаем обратно и указываем его пользователю в качестве рабочего, старый каталог впоследствии можно удалить.
Подобная методика можно использовать и в том случае, когда удаление 1cv7.mlg не помогает избавиться от ошибки, просто копируем каталог ИБ в другую папку и запускаем оттуда.
Программа выполнила недопустимую операцию и будет закрыта.
К этой ошибке может приводит множество факторов и не все из них связаны с 1С. Коротко остановимся на наиболее часто распространенных. Если ошибка проявляется только для одной ИБ или одного пользователя то следует воспользоваться рекомендациями для предыдущей ошибки. В других случаях к краху могут приводить поврежденные файлы и библиотеки 1С, Windows, вирусы, а также аппаратные неисправности. В этом случае можно посоветовать сделать антивирусную проверку, проверить состояние файловой системы и после устранения возможных причин переустановить платформу (можно поверх, главное — перезаписать измененные или поврежденные файлы), не будет лишним проверить целостность системных файлов Windows, это можно сделать командой sfc /scannow.
Начиная с Winodws Vista пользователи, которые работают с 1С:Предприятие 7.7 могут столкнуться с ошибкой при запуске программы: «Порядок сортировки, установленный для базы данных, отличается от системного». После нажатия на ОК, программа завершает работу. Эту ошибку можно устранить двумя способами.
1 способ: OrdNoChk.prm
В 26-ом релзизе 1С была добавлена возможность отключения идентичности порядка сортировки, установленного для базы данных и системного порядка сортировки. Если вы хотите полностью отключить проверку кодовой страницы, создайте пустой файл с именем OrdNoChk.prm в папке «BIN» каталога установки 1С:Предприятия 7.7 (по умолчанию это C:Program Files1Cv77BIN). Если, по каким-то причинам, вам надо отключить проверку кодовой страницы только для одной информационной базы, поместите OrdNoChk.prm в папку с нужной информационной базой.
2 способ: Изменение порядка сортировки
Если вы работаете в однопользовательской (локальной) 1С:Предприятие 7.7, либо используется терминальный режим на сервере, то можно просто изменить порядок сортировки базы данных. Для этого запускаем 1С в режиме конфигуратора, выбираем Администрирование — Кодовая страница таблиц ИБ — «+ Текущая системная установка«.
Обратите внимание! Если у вас настроен автообмен с другими информационными базами, все информационные базы должны иметь одну и ту же кодировку. Либо должна быть отключена проверка кодировки (см. 1 способ).
Как и любое сложное оборудование, компьютер может выйти из строя по целому ряду причин. В операционных системах Windows о возникновении критических ошибок пользователю сообщает BSoD (blue screen of death) – синий экран смерти. Несмотря на свое грозное название, данный отчет крайне полезен – он информирует о характере и источнике проблемы, из-за которой нормальная работа ПК невозможна.
Зная причину, пользователь в силах самостоятельно наладить нормальную работу компьютера без необходимости обращения в сервисные центры. Темой данной статьи станет распространенная ошибка 0x0000007E. Наши подсказки помогут вам разобраться в проблеме и найти ее решение.
Учимся читать отчет BSoD
При появлении «синего экрана» на мониторе многие неопытные пользователи надолго впадают в ступор или начинают в панике нажимать на кнопку перезагрузки компьютера. Стоит запомнить навсегда, что BSoD несет в себе очень нужную вам информацию о критической ошибке, с которой необходимо ознакомиться.
Отчет разделен на несколько частей.
- Общая информация и рекомендуемый пользователю план действий при возникновении данного сбоя.
- Код критической ошибки.
- Основные параметры.
Строка основных параметров включает в себя:
- код исключения, который привел к сбою системы;
- адрес его запуска в памяти;
- адрес записи исключения;
- адрес контекста.
В некоторых случаях система сообщает о проблемном драйвере, что очень облегчает поиск источника проблемы.
Код ошибки 0x0000007E свидетельствует о невозможности исполнения определенной операции. Причиной может стать конфликт драйверов, малый объем свободной памяти на системном разделе винчестера, неисправность комплектующих ПК, несовместимость «железа» и «софта» и другие функции. Для конкретизации источника нужно обращать внимание на код исключения.
Самые часто появляющиеся исключения:
- 0x80000002: (STATUS_DATATYPE_MISALIGNMEN) ‒ неправильное выравнивание ссылки данных при сохранении или загрузке;
- 0x80000003: (STATUS_BREAKPOINT) – точка прекращения работы отладчика ядра;
- 0xC0000005: (STATUS_ACCESS_VIOLATION) – получение доступа к недействительным участкам памяти.
При появлении на экране другого кода воспользуйтесь онлайн-справочниками, например, http://allerrorcodes.ru/ntstatus.
Ниже мы покажем вам, как исправить данную ошибку и приведем для этого несколько способов.
Освобождаем память системного раздела HDD
Первой и самой распространенной причиной возникновения ошибки 0x0000007E в Windows 7 и 10 является малый объем свободной памяти на жестком диске, а именно в системном разделе (по умолчанию «C:»). Проверьте наличие свободного места раздела в меню «Компьютер» (Win 7) или «Этот компьютер» (Win 10). Если система сигнализирует о его переполненности – удалите все ненужные файлы.
- В окне «Компьютер» кликаем правой кнопкой мыши на диск «C:» и выбираем «Свойства/Очистка диска».
- Система выведет на экран список файлов, подлежащих удалению. Подтверждаем действие нажатием «OK». Процесс удаления займет от нескольких секунд до пары минут времени.
- Дополнительно можно освободить память за счет удаления ненужных программ и резервных копий.
- При желании освободить как можно больше места на винчестере установите бесплатную утилиту CCleaner для глубокой проверки всего жесткого диска. Скачиваем и устанавливаем ее на сайте https://www.ccleaner.com/ru-ru.
- Запускаем CCleaner и начинаем анализ содержимого HDD.
- Удаляем информацию кнопкой «Очистка».
Важно! Советуем не добавлять галочки элементов, назначение которых вы не знаете. Также мы не рекомендуем неопытным людям проводить очистку реестра – это может привести к повреждению системных файлов.
Устанавливаем «свежий» драйвер
Вторым по частоте «виновником» в появлении критического сбоя выступает некорректный драйвер или служба. В этом случае ошибка 0xc000007E выскакивает при запуске приложения, которое использует ресурсы определенного устройства, например, видеокарты. В отчете BSoD обычно появляется файл проблемного драйвера (смотрите начало статьи). Его-то и нужно обновить до новой версии.