7.11 – Остановки (преждевременный выход из программы)
Последняя категория инструкций управления порядком выполнения программы, которую мы рассмотрим, – это остановки. Остановка – это инструкция управления порядком выполнения программы, которая завершает программу. В C++ остановки реализованы как функции (а не как ключевые слова), поэтому наши инструкции остановки будут вызовами функций.
Давайте сделаем небольшой экскурс и вспомним, что происходит, когда программа завершается нормально. Когда функция main() завершается (либо достигая конца тела функции, либо с помощью инструкции return ), происходит ряд разных вещей.
Во-первых, поскольку мы выходим из функции, все локальные переменные и параметры функции уничтожаются (как обычно).
Затем вызывается специальная функция std::exit() со значением, возвращаемым из main() (код состояния), переданным в качестве аргумента. Так что же такое std::exit() ?
Функция std::exit()
std::exit() – это функция, которая вызывает нормальное завершение программы. Нормальное завершение означает, что программа завершилась ожидаемым образом. Обратите внимание, что термин «нормальное завершение» ничего не говорит о том, была ли работа программы успешной (для этого нужен код состояния). Например, предположим, что вы пишете программу, в которой ожидаете, что пользователь введет имя файла для обработки. Если пользователь ввел недопустимое имя файла, ваша программа, вероятно, вернет ненулевой код состояния, чтобы указать на состояние сбоя, но это всё равно будет нормальное завершение.
Camera RAW аварийное завершение работы
std::exit() выполняет ряд функций очистки. Сначала уничтожаются объекты со статической продолжительностью хранения. Затем выполняется дополнительная очистка файлов, если использовались какие-либо файлы. Наконец, управление возвращается обратно в ОС, а аргумент, переданный в std::exit() , используется в качестве кода состояния.
Явный вызов std::exit()
Хотя std::exit() при завершении функции main() вызывается неявно, она также может быть вызвана явно, чтобы остановить программу до того момента, как она завершится нормально. Когда std::exit() вызывается таким образом, вам нужно будет включить заголовок cstdlib .
Вот пример явного использования std::exit() :
#include // для std::exit() #include void cleanup() < // здесь идет код для выполнения любой необходимой очистки std::cout int main() < std::cout
Эта программа печатает:
1 cleanup!
Обратите внимание, что инструкции после вызова std::exit() никогда не выполняются, потому что программа уже завершена.
Хотя в приведенной выше программе мы вызываем std::exit() из функции main() , std::exit() можно вызвать из любой функции для завершения программы в необходимой точке.
Одно важное замечание о явном вызове std::exit() : std::exit() не очищает никакие локальные переменные (ни в текущей функции, ни в функциях вверх по стеку вызовов). По этой причине обычно лучше избегать вызова std::exit() .
Аварийное завершение rphost, как не навредить полнотекстовым поиском данных — 1C-RarusTechDay 2021
Предупреждение
Функция std::exit() не очищает локальные переменные в текущей функции и в функциях выше по стеку вызовов.
std::atexit
Поскольку std::exit() завершает программу немедленно, вы можете перед завершением выполнить какую-либо очистку вручную (в приведенном выше примере мы вручную вызывали функцию cleanup() ). Поэтому программисту необходимо не забывать вручную вызывать функцию очистки перед каждым вызовом exit() .
Чтобы помочь в этом, C++ предлагает функцию std::atexit() , которая позволяет вам указать функцию, которая будет автоматически вызываться при завершении программы через std::exit() .
#include // для std::exit() #include void cleanup() < // здесь идет код для выполнения любой необходимой очистки std::cout int main() < std::atexit(cleanup); // регистрируем cleanup() для автоматического // вызова при вызове std::exit() std::cout
Эта программа имеет тот же вывод, что и предыдущий пример:
1 cleanup!
Так зачем вам это делать? Это позволяет вам указать функцию очистки в одном месте (возможно, в main ), а затем не беспокоиться о том, чтобы не забыть вызвать эту функцию явно перед вызовом std::exit() .
Несколько замечаний о std::atexit() и функции очистки: во-первых, поскольку std::exit() вызывается неявно при завершении main() , если программа завершается таким образом, это вызовет любые функции, зарегистрированные std::atexit() . Во-вторых, регистрируемая функция не должна принимать никаких параметров и должна не иметь возвращаемого значения. Наконец, с помощью std::atexit() вы можете зарегистрировать несколько функций очистки, если хотите, и они будут вызываться в порядке, обратном порядку регистрации (последняя зарегистрированная будет вызываться первой).
Для продвинутых читателей
В многопоточных программах вызов std::exit() может привести к сбою вашей программы (поскольку поток, вызывающий std::exit() , будет очищать статические объекты, к которым могут обращаться другие потоки). По этой причине в C++ появилась еще одна пара функций, которые работают аналогично std::exit() и std::atexit() , – std::quick_exit() и std::at_quick_exit() . std::quick_exit() завершает программу нормально, но не очищает статические объекты и может выполнять или не выполнять другие типы очистки. std::at_quick_exit() выполняет ту же роль, что и std::atexit() для программ, завершаемых с помощью std::quick_exit() .
std::abort и std::terminate
C++ также содержит две другие функции, связанные с остановкой.
Функция std::abort() вызывает аварийное завершение вашей программы. Аварийное завершение означает, что в программе произошла какая-то необычная ошибка времени выполнения, и программа не может продолжать работу. Например, к аварийному завершению попытка разделить на 0 приведет. std::abort() не выполняет никакой очистки.
#include // for std::abort() #include int main() < std::cout
Случаи, когда std::abort вызывается неявно, мы увидим в этой главе позже (7.17 – assert и static_assert ).
Функция std::terminate() обычно используется вместе с исключениями (мы рассмотрим исключения в следующей главе). Хотя std::terminate можно вызвать явно, она чаще вызывается неявно, когда исключение не обрабатывается (и в некоторых других случаях, связанных с исключениями). По умолчанию std::terminate() вызывает std::abort() .
Когда следует использовать остановки?
Короткий ответ: «почти никогда». В C++ уничтожение локальных объектов является важной частью C++ (особенно когда мы дойдем до классов), и ни одна из вышеупомянутых функций не очищает локальные переменные. Исключения – лучший и безопасный механизм обработки ошибок.
Лучшая практика
Используйте остановки только в том случае, если нет безопасного способа нормально вернуться из функции main . Если вы не отключили исключения, используйте их для безопасной обработки ошибок.
Источник: radioprog.ru
Аварийное завершение программы, ошибка в функции вывода.
Здравствуйте все. Пишу программу для сложения, вычитания матриц. Использую перегрузку операторов. При выводе результатов возникает ошибка и программа аварийно завершается. Я, наверное, неправильно работаю с выводом динамического массива, так как со статическим массивом вывод (void print() ) работает хорошо, ошибок не возникает.
Если у кого — нибудь есть мысли по устранению ошибки, буду бесконечно благодарен.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#include #include using namespace std; class Matrix { private: int**a; int n,m; public: Matrix(){} void getData(); void print(); Matrix Matrix::operator+(const Matrix }; //////////////////////////////////////// Matrix Matrix::operator+(const Matrix for (size_t i = 0; i n; ++i) for ( size_t j = 0; j m; ++j) result.a[i][j] += p.a[i][j]; return result; } //////////////в этой функции что — то не так как надо работает: программа //аварийно завершается на ее исполнении////////////////////////// void Matrix::print() { for(int i=0;in;i++) for (int j=0;jm;j++) cout[i][j]<» «; } //////////////////////////////////////// void Matrix::getData() { cout<«ninput n,m: n»;cin>>n>>m; int**a=new int*[n]; for (int i=0;in;i++) a[i]=new int [m]; cout<«input matrix’ elements: n»; for(i=0;in;i++) for (int j=0;jm;j++) cin>>a[i][j]; } void main(void) { Matrix a_1; Matrix a_2; Matrix a_buf; a_1.
getData(); a_1.print(); a_2.getData(); a_2.print(); a_buf = a_1 + a_2; a_buf.print(); }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
Источник: www.cyberforum.ru
PROИТ
Office 365, AD, Active Directory, Sharepoint, C#, Powershell. Технические статьи и заметки.
1С. Аварийное завершение, платформа легальная
При запуске базы в режиме Предприятие начала появляться ошибка «Аварийное завершение».
Полный скриншот:
Больше никаких подробностей 1С платформа не выдает, в журнале регистрации записей нет.
Приложение сразу закрывается после этой ошибки. При повторном запуске не появляется.
Носит нерегулярный характер (то появляется, то нет).
Возникла на платформе: 8.3.18.1334 (по сообщениях из чатов у других было на платформе 8.3.17.1851)
Операционная система Windows 10 корпоративная LTSC 1809 и Windows Server 2012 R2 Standard
Ошибка приложения записывается в системный журнал Windows в следующем виде:
Faulting application name: 1cv8c.exe, version: 8.3.18.1334, time stamp: 0x6021c237
Faulting module name: backbas.dll, version: 8.3.18.1334, time stamp: 0x6021c6c8
Exception code: 0xc0000005
Fault offset: 0x00000000000ce7f3
Faulting process id: 0x1840
Faulting application start time: 0x01d74ba9efcea74f
Faulting application path: C:Program Files1cv88.3.18.1334bin1cv8c.exe
Faulting module path: C:Program Files1cv88.3.18.1334binbackbas.dll
Report Id: 59b36157-b79e-11eb-811c-0cc47a6431af
Faulting package full name:
Faulting package-relative application ID:
Или на русском:
Имя сбойного приложения: 1CV8C.exe, версия: 8.3.18.1334, метка времени: 0x6021c237
Имя сбойного модуля: backbas.dll, версия: 8.3.18.1334, метка времени: 0x6021c6c8
Код исключения: 0xc0000005
Смещение ошибки: 0x00000000000ce7f3
Идентификатор сбойного процесса: 0x2840
Время запуска сбойного приложения: 0x01d74b4aa253611e
Путь сбойного приложения: C:Program Files1cv88.3.18.1334bin1CV8C.exe
Путь сбойного модуля: C:Program Files1cv88.3.18.1334binbackbas.dll
Идентификатор отчета: b175aeec-357b-4c35-bdbc-0bfc9883a372
Полное имя сбойного пакета:
Код приложения, связанного со сбойным пакетом:
Легальность продуктов 100% (эмуляторов нет и никогда не было). В одном месте кластер и настроен сервер лицензирования, в другом USB ключ. В интернете все советы сводятся к «удалите эмуляторы и т.п. нелегальщину», а затем всё удалите и поставьте заново с восстановлением баз.
Совсем не хочется делать это на серверных базах, где всё настроено под сервер лицензирования и постоянно работает несколько десятков пользователей.
На данный момент есть опасения, что виновато какое-нибудь очередное обновление системы, как было здесь, но подробной информации пока нет, что именно нужно сделать для исправления.
Советы от коллег: (из чата телеграм) В нашем случае кажется проблема в отсутствии свободных лицензий. Сейчас активировали дополнительные, вроде перестало вылетать.
UPDATE: 18.05.2021
Ошибка появляется, если есть доступ в интернет.
Проблему подвердили коллеги со всей страны.
Ошибка присутствует в версиях платформы начиная с 8.3.16.1791, 8.3.17.1823, 8.3.18.1201.
UPDATE: есть обратная связь от разработчиков платформы. Про проблему они знают.
Это ошибка в платформе, связана с внешними сервисами.
В тестовой 8.3.17 уже исправлена. На 8.3.18 будет на этой неделе.
Код ошибки для просмотра на трекере 1С — 40049115
Ошибка исправлена в версиях платформы начиная с 8.3.17.2231 и 8.3.18.1483 (дата публикации 19.05.2021).
Решение — обновить платформу, когда выйдет исправленный релиз.
Временное решение — отключить на машине доступ в Интернет. Также коллеги пишут, что как вариант, добавить в хост (в файл hosts) строку: 127.0.0.1 baidu.cn (но это не точно).
UPDATE: 21.05.2021
По последним данным ошибка перестала появляться и на тех платформах, на которых ранее появлялась. Поэтому, если не больше не появляется, возможно обновление платформы не требуется.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
31 комментарий :
Совет от коллеги из чата телеграм: В нашем случае кажется проблема в отсутствии свободных лицензий. Сейчас активировали дополнительные, вроде перестало вылетать.
К сожалению, не наш случай: у нас 150 лицензий активировано, а пользователей на данный момент в разы меньше. Ответить Удалить
Имеем идентичную проблему. Перепробовано всё, попытки тщетны. Ответить Удалить
Такая же проблема, возникла сегодня. Проявляется не у всех, но сильно нервирует тех кому повезло меньше. Ответить Удалить
Такая же проблема. Обновлений никаких не было, ни Windows, ни платформы. Сегодня с утра начала вылетать УНФ версия 1.6.21.124 (платформа 8.3.17.1851), точно такая же ошибка. На сервере 1с разные базы: УТ10, БП, УНФ. Проблема возникает именно с УНФ.
Пока решения нет. Ответить Удалить
Переустанавливали платформу, драйвера на hasp-lm, выносили базы на резервный сервер, ничего не помогает. Консультант по 1с говорит, что проблема как минимум ещё у трех предприятий. Системности никакой нет. Ответить Удалить
Добрый день. Удалось найти в чем проблема? После обновления БУХ и ЗУП на актуальные релизы — такая же ошибка. Один-в-один. Тоже все легально. Ответить Удалить
Есть обратная связь от разработчиков платформы. Про проблему они знают.
Это ошибка в платформе, связана с внешними сервисами.
В тестовой 8.3.17 уже исправлена. На 8.3.18 будет на этой неделе. Ответить Удалить
Вы про 8.3.17.2231? Удалить
Сказали, что по 8.3.17 релиз с исправлением будет в конце неделе. Номер релиза не знаю, к сожалению. Мы ждем 8.3.18. Удалить
Такая же проблема, то же все легально. Попробовали обновить с 8.3.18.1208 до 8.3.18.1433 — не помогло. Получается , что борьба с легальными пользователяит 🙁 Кто уже пробовал установить тестовый релиз 8.3.17 — помогает? Ответить Удалить
Вы имеете ввиду 8.3.17.2231? Ответить Удалить
Ответила выше. Удалить
Всем привет. Два дня уже наблюдаю такую же проблему. Платформа 8.3.18.1289. Серверная. лицензии как программные так и ключи. Все легально.
Платформа была установлена в начале года и полет был нормальный до 18.05.2021 года. Ответить Удалить
всем привет,
так же как у всех со вчерашнего вылетает 1с с аварийным завершением на серверах с USB ключами.
попробовали добавить в хост (в файл hosts) строку: 127.0.0.1 baidu.cn
пока наблюдаем Ответить Удалить
Говорят, что помогает отключение рекламного блока при запуске Ответить Удалить
а кто-нибудь знает источник откуда скачиваются новости и реклама?
я бы заблокировал весь трафик до этих адресов, беглый просмотр кода не показал. Удалить
Вот тут выложили обработку для отключения рекламы и новостей
https://it4trade.ru/errors_1s/oshibka-avarijnoe-zavershenie-nevernye-ili-otsutstvujushhie-parametry-soedinenija-s-informacionnoj-bazoj.html Ответить Удалить
это поможет только до следующего обновления, так как у 1с есть код выполняемый после обновления который удаляет эти настройки
Мы заблочили на роутере baidu.cn и третий час без вылетов, предполагаем что в рекламе использовался какой то блок загружаемый с baidu.cn который приводил к падению 1с Удалить
Появилась информация , что проблема исправлена во всех тестовых релизах 8.3.17, 8.3.18 и 8.3.19. А за рекламу в купленом продукте им вообщем жирный минус. Ответить Удалить
1. Отключение рекламного блока — реально помогло. Ни у меня ни у пользователей не вылетает ошибка. Как временный вариант решения проблемы — более чем.
2. Выпустили платформу 8.3.18.1483. Поставила ее пока у одной организации, там файловая база. Включила обратно рекламный блок — полет нормальный. Ответить Удалить
По последним данным ошибка перестала появляться и на тех платформах, на которых ранее появлялась. Поэтому, если не больше не появляется, возможно обновление платформы не требуется. Ответить Удалить
обновил бух и зуп до актуальной версии, проявляется падение Ответить Удалить
Стоит версия 8.3.18 и стало вылетать аварийное завершения работы что делать?
Так как раньше такой проблемы небыло Ответить Удалить
Платформа 8.3.19.1150 Падения с данной ошибкой продолжаются! Ответить Удалить
Ставьте 8.3.19.1229 , по крайней мере ошибки с расширениями исправили. Удалить
Имя сбойного модуля: backbas.dll_unloaded, версия: 8.3.18.1616, метка времени: 0x6117ea7d Ответить Удалить
Поставил платформу 1С впервые на комп, активировал пин-кодом из коробки, подключил рабочую базу — постоянные вылеты со ссылкой на backbas.dll, платформы ставил разных релизов 17,18,19,20 редакций что х86, что х64 — вылеты продолжаются. База в ТиИ ошибок не показала, выгрузка-загрузка базы и очистка кэш не помогла. Клиент визжит и требует обратно деньги за 1С (на старой пиратской версии все работало, но нужно было обновление для маркировки). Ответить Удалить
Если ставили на ту же систему, где раньше стояла пиратская версия, то могли остаться «хвосты», платформа их «видит» и вылетает с ошибкой. В этом случае установку лицензионной версии нужно устанавливать на чистую операционную систему. Удалить
Комп новый, 1С устанавливалась вообще впервые. База ПРОФ была преобразована в базовую на другом компьютере, после этого была обновлена до последней редакции и перенесена на новый комп. При переносе естественно никакие DLL не переносились и никакие патчи не ставились. Удалить
День добрый всем! Имя приложения: 1cv8c.exe
Версия приложения: 8.3.18.1741
Отметка времени приложения: 61bee183
Имя модуля с ошибкой: backend.dll
Версия модуля с ошибкой: 8.3.18.1741
Код исключения: c0000005
Смещение исключения: 001ff9cd
У всех работает, только у одного пользователя вылетает с ошибкой! Ответить Удалить
Юрий Батяев 5 сентября 2022 г. в 10:40
Имя сбойного приложения: 1cv8.exe, версия: 8.3.19.1264, метка времени: 0x610998ea
Имя сбойного модуля: backend.dll, версия: 8.3.19.1264, метка времени: 0x6109a525
Код исключения: 0xc0000005
Смещение ошибки: 0x001a8883
Идентификатор сбойного процесса: 0x416c
Время запуска сбойного приложения: 0x01d8bebafe93853b
Путь сбойного приложения: C:Program Files (x86)1cv88.3.19.1264bin1cv8.exe
Путь сбойного модуля: C:Program Files (x86)1cv88.3.19.1264binbackend.dll
ничего не помогает. Вылетает только в одном расширении и только на попытке открыть или добавить форму списка. На тестировании тоже уходит в дамп. Проблемы начались после того, как стали приводить все расширения в нормальное состояние после стандартной проверки уже после обновления с Бух30 на БухКОРП30. Удалять расширение нельзя — там присутствуют новые объекты. Удалить
Источник: www.e-du.ru
Аварийное завершение 1С 8.3
При отключении питания, отказе техники, сбоях сети база данных, как правило, остается работоспособной. В этих случаях достаточно устранить неполадки в оборудовании и сети, чтобы продолжить работать в 1С.
Но что делать, если работоспособность программы нарушена настолько, что работать в ней невозможно? Об этом вы узнаете, прочитав статью.
Аварийное завершение работы 1С
К причинам аварийного завершения работы 1С можно отнести отказы оборудования и внешние факторы. Например, при неисправностях жесткого диска целые сегменты его пространства становятся нечитаемыми. Другой причиной может быть перекодировка или уничтожение таблиц базы вирусом или отключение электропитания в момент проведения большого массива данных в 1С.
Что же делать, если при входе в 1С появляется сообщение об аварийном завершении работы и перезапуск сеанса не помогает?
- развернуть копию рабочей базы;
- проанализировать данные Журнала регистрации;
- выполнить запуск 1С со старой Платформы;
- просмотреть ошибки текущего релиза;
- запустить Тестирование и исправление информационной базы;
- проверить отсутствие повреждений данных СУБД базы утилитой CHDBFL;
- определить конкретные справочник или документ, вызывающие аварийное завершение 1С;
- использовать внешнюю обработку Выгрузка и загрузка данных xml для переноса испорченных данных.
Возврат на копию базы
Первое, что должен сделать пользователь при аварийном завершении работы 1С и невозможности входа в нее, — восстановить последнюю копию рабочей базы.
- Самоучитель по 1С Бухгалтерии 8.3;
- Самоучитель по 1С ЗУП 8.3.
Аварийные ситуации сложно предугадать. БухЭксперт8 рекомендует настроить автоматическое резервное копирование с выполнением копий не реже раза в неделю. Срок хранения копий можно ограничить двумя неделями.
В этом случае программа сама сделает резервную копию 1С по заданному расписанию.
Пользователи продолжают работать в восстановленной базе, пока идет анализ ошибок в рабочей 1С. После того как ошибки в рабочей базе будут устранены, новые данные по документам и справочникам можно перенести из восстановленной базы специальной обработкой Выгрузка и загрузка данных xml.
Данные из копии базы выгрузятся в файл xml, который можно загрузить этой же обработкой в исправленную рабочую базу. Работа организации идет в штатном порядке, без простоев и паники.
Наладив работу пользователей в копии базы, необходимо проанализировать ошибки аварийного завершения работы рабочей базы.
Ошибки аварийного завершения не всегда можно исправить. Попытки восстановления работоспособности могут занять не час и даже не день. Поэтому организация работы пользователей в копии базы на это время — разумное решение.
Чистка кеша 1С
В процессе работы 1С наиболее часто используемые фрагменты программы сохраняются во временные файлы прямо на ПК. Время обращений к этим данным, а также время обработки операций в 1С при этом значительно снижается. При возникновении аварийной ситуации может повредиться выгруженный «кеш». Программа не сможет найти нужных данных и выдаст ошибку.
Для исправления ситуации очистите «кеш» 1С.
При пустом «кеше» 1С создаст новые временные файлы и проблема может решиться.
Журнал регистрации (Конфигуратор)
В специальном журнале 1С хранится информация о действиях с объектами 1С и ошибках при работе в базе данных. Если войти в 1С не удается из-за аварийного завершения работы, а Конфигуратор доступен, откройте Журнал регистрации из Конфигуратора : раздел Администрирование — Журнал регистрации .
В списке зарегистрированных событий найдите запись с ошибкой аварийного завершения работы программы. Она содержит более полную информацию о причине ошибки:
В данном случае аварийное завершение 1С вызвало расширение BE_20220706:
Для решения проблемы достаточно удалить указанное расширение из конфигурации ( Конфигурация — Расширения конфигурации ) или доработать его для устранения ошибки:
К ошибкам также может привести нарушение заполнения документов:
Здесь потребуется проверить формируемые данные во внешней обработке Перенос ТМЦ с одного МОЛ на другое , найти и очистить поле Сумма НУ в документе.
Журнал регистрации предоставляет самую полную информацию об ошибках. При любых аварийных ситуациях просматривайте его для локализации ошибки и ее исправления.
Запуск со старой Платформы
Разработчики постоянно совершенствуют возможности программы. Добавляют новые документы, разделы, сервисы. Это может затронуть алгоритмы работы уже внедренного функционала, поэтому при аварийном завершении 1С обязательно попробуйте запуститься со старой Платформы 1С или обновить Платформу 1С на более новую.
В практике БухЭксперт8 есть случаи, когда именно это и решало проблемы:
- Аварийное завершение программы при свертке базы (Бухгалтерия 3.0);
- Аварийное завершение программы ЗУП 3.1.
Для запуска 1С со старой Платформы 1С выберите в списке баз нужную и нажмите кнопку Изменить .
В поле Версия 1С:Предприятия укажите более раннюю из имеющихся версий Платформы 1С и выполните повторный запуск 1С.
Тестирование и исправление
При ошибках, вызванных внешними факторами (неисправности сети, отключение электропитания и т. д.) специалисты рекомендуют запускать Тестирование и исправление информационной базы.
Функционал поможет не только найти ошибки, но и попытается их исправить.
БухЭксперт8 рекомендует запускать тестирование в режиме Только тестирование для просмотра и анализа найденных ошибок. Перед исправлением ошибок в режиме Тестирование и исправление всегда делайте копию базы данных.
Пытаясь восстановить данные в сложных случаях, встроенная обработка может окончательно испортить базу. Простые случаи, как правило, исправляются корректно.
CHDBFL.EXE
Утилита CHDBFL предназначена для восстановления физической целостности таблиц 1С при повреждении:
Перед использованием обработки делается копия базы данных, поскольку исправление таблиц может привести к непредвиденным результатам.
Запуск утилиты происходит с флагом Исправлять обнаруженные ошибки .
При обнаружении нарушения физической целостности таблиц 1С можно попробовать восстановить целостность по кнопке Выполнить :
Функционал очень востребован системными администраторами и неплохо справляется с задачей восстановления повреждений в 1С. При этом некоторые данные в справочниках и документах могут быть потеряны. Перенос недостающих данных можно выполнить по внешней обработке Выгрузка и загрузка данных xml из копии базы.
Как определить справочник или документ ошибки
Если утилита CHDBFL указала на ошибку в конкретной таблице, но не смогла ее исправить, нужно определить, какие данные хранятся в этой таблице. В этом поможет обработка БухЭксперт8 Получить структуру таблиц СУБД в 1С .
В обработке выводятся таблицы СУБД 1С и их соответствие объектам 1С. Основные столбцы:
- Метаданные — объект 1С;
- Имя таблицы хранения — таблица СУБД.
Для отбора данных по нужной таблице в обработке предусмотрено специальное поле отбора:
Определив объект 1С по сбойной таблице СУБД, можно работать с ошибкой средствами SQL: очистить таблицу или перенести ее из копии базы данных. Это требует специальных знаний по SQL-запросам и работе с таблицами СУБД.
Если средствами SQL восстановить данные не получится, проблемную таблицу можно очистить и заполнить нужными данными в 1С по типовой обработке Выгрузка и загрузка данных xml из копии базы.
Внешняя обработка удаления записей регистров накопления по регистратору
Обработка позволяет определить по внутренней таблице данных СУБД объект 1С.
Утилита CHDBFL при проверке физической целостности базы 1С указала на сбойную таблицу Reference82. Восстановление данных прошло не полностью. Определите объект данных, соответствующий этой таблице, и выполните загрузку данных в него, используя обработку Выгрузка и загрузка данных xml.
Пошаговая инструкция работы с обработкой Получить структуру таблиц СУБД в 1С :
- Откройте обработку в программе: Главное меню — Файл — Открыть — обработка «Получить структуру таблиц в 1С» . На предупреждение системы безопасности ответьте — Да .
- В поле Имя таблицы хранения укажите поврежденную таблицу:
Таблица Reference82 соответствует справочнику Группы пользователей :
- Из копии базы выгрузите обработкой Выгрузка и загрузка данных xml информацию из справочника Группы пользователя в файл.
- Выполните загрузку данных в справочник Группы пользователей восстановленной базы из файла, используя обработку Выгрузка и загрузка данных xml.
См. также:
- Работа в 1С
- Очистка кэш
- Тестирование и исправление базы 1С
- Патчи (исправления)
- Резервное копирование 1С
- Как исправить ошибки базы 1С самостоятельно
- Исправление технических ошибок при работе с 1С:Бухгалтерия
- Не запускается 1С
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
- Автоматическое завершение задачи подписания заявки сотрудника в 1С:Кабинете сотрудника (ЗУП 3.1.18.455)Раньше задачи по подписанию заявок, созданных работниками в 1С:Кабинете сотрудника.
- Как посмотреть версию 1С 8.3 — какая установленаПри обновлении программы 1С нужно знать текущую версию, чтобы понимать.
- Обновление индекса ППД 1С 8.3 что этоВ программах 1С есть разные способы поиска информации. Один из.
- Пересчет итогов в 1СИногда в программе 1С возникают ошибки. Например, в ОСВ не.
Оцените публикацию
(3 оценок, среднее: 5,00 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Источник: buhexpert8.ru