Тестирование и исправление информационной базы
Процедура тестирования и исправления информационной базы служит для диагностики и устранения ошибочных состояний информационных баз, имеющих различный формат хранения данных (файловый или клиент-серверный):
Процедура позволяет выбрать проверки и режимы, которые должны быть выполнены для текущей информационной базы. Для баз, использующих клиент-серверный вариант, возможна проверка логической целостности данных и пересчет итогов. Для баз, использующий файловый вариант, в дополнение к этим проверкам, может быть выполнена реиндексация таблиц и сжатие информационной базы.
Имеется возможность выполнять только тестирование или тестирование с исправлением. Причем, возможен выбор нескольких вариантов исправления конфликтных ситуаций.
- ограничение времени тестирования и исправления;
- сохранение параметров тестирования между этапами;
- продолжение прерванного ранее тестирования и исправления;
- поддержка тестирования и исправления порциями в командной строке запуска.
Следует заметить, что тестирование и исправление информационной базы может выполняться только в монопольном режиме (т.е. работа пользователей с информационной базой в процессе тестирования и исправления невозможна).
Записки IT специалиста
Тестирование и исправление информационной базы — что делает и для чего нужно
- Автор: Уваров А.С.
- 22.05.2021
Существуют вещи настолько привычные, что кажется все про них знают, но это весьма обманчивое впечатление. Да, о них почти все знают, почти все используют, но мало кто представляет происходящие при этом процессы, скрытые за привычной внешней формой инструмента. При этом те, кто знает не спешат делиться, ведь это «общеизвестно», а те, кто не знает стесняются спросить по той же самой причине. Но мы не будем стесняться, а подробно расскажем о том, что делает каждая опция данного инструмента, заглянув каждый раз немного глубже простого описания.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Давно известно: как вы лодку назовете — так она и поплывет. Это в полной мере применимо к такому известному инструменту как Тестирование и исправление информационной базы, название выбрано крайне неудачно, так как предполагает, что использовать представленные в нем возможности следует при возникновении проблем с информационной базой и исправлении ошибок. На самом деле это не так. Любой имеющий опыт работы с «серьезными» СУБД найдет в этом списке привычные ему инструменты обслуживания баз данных, которые следует применять регулярно для поддержания высокой производительности сервера. Но речь сейчас не о них, а о начинающих, либо имеющих к 1С опосредованное отношение.
Описание этой таблички можно найти много где, но в большинстве случаем там будут стандартные абзацы вроде:
Проверка логической целостности информационной базы проверяет и исправляет логические ошибки в структурах таблиц
Что это за ошибки, откуда они берутся, чем чреваты? Кто в теме — тот знает, а кто нет? Спросить? Да как бы неудобно, это же все знают. Вот и сводится большинство «знания» к тому, как правильно расставить в этой форме галочки и не забыть перед этим обязательно сделать резервную копию, а то мало ли.
Поэтому давайте разбираться, мы специально упростили многие вопросы, постаравшись сделать их понятными даже тем, кто имеет смутное представление о структуре и принципах работы баз данных.
Реиндексация таблиц информационной базы
Начнем с того, что такое индексы и для чего они нужны. Если рассматривать базу данных логически — то это некая совокупность связанных друг с другом таблиц, которые в свою очередь содержат какие-либо данные. Физически таблицы хранятся на диске в виде страниц и чем больше размер таблицы, тем большее количество страниц она будет содержать.
Допустим у нас есть некая таблица и мы хотим получить из нее все данные, связанные с фамилией Иванов. Для этого программе нужно последовательно считать все страницы, принадлежащие данной таблице и найти в них записи, соответствующие запросу.
Но ведь это чудовищно неэффективно, скажет внимательный читатель и будет прав. Что же делать? К счастью, все уже давно придумано. Хранение данных в СУБД можно сравнить с библиотекой, где таблицы — это залы библиотеки, а страницы — стеллажи. И когда вам нужна какая-то книга библиотекарь ведь не обходит физически все стеллажи, а сразу идет куда надо и приносит вам то, что вы просили. Чтобы быстро искать книги в библиотеках существуют каталоги, где книги перечислены в упорядоченном виде, и каждая карточка содержит сведения о том, где именно хранится тот или иной экземпляр.
В нашем случае роль такого каталога выполняет индекс. Это — специальный набор записей, связанный с определенным ключом — полем таблицы, в нашем случае фамилией, и указывающий на каких страницах хранятся интересующие записи. После того как мы создали индекс программе больше не нужно последовательно считывать всю таблицу, потому что известно, что записи, связанные с ключом Иванов, хранятся только на первой и третьей страницах.
По мере работы с программой эффективность индексов снижается, особенно если вы активно удаляли или добавляли данные. Также индексы могут подвергаться фрагментации. Если снова сравнить с библиотекой, то за день работы посетители перепутали несколько ящиков, а работники библиотеки карточки новых книг поставили в конец и забыли убрать отсутствующие. Но все равно поиск по такому каталогу окажется быстрее, чем обход всех стеллажей в зале. А что нужно сделать, чтобы вернуть поиску прежнюю эффективность? Правильно, навести порядок в каталоге. Именно этим и занимается реиндексация, которая заново формирует индексы таблиц базы данных и устраняет их фрагментацию, что важно, если вы используете обычные жесткие диски или недорогие SSD.
Реиндексация — это простой и достаточно недорогой способ повысить эффективность работы с информационной базой, причем эффект может быть виден сразу, особенно в файловых базах. Поэтому реиндексацию делать нужно и желательно регулярно, включив ее в обязательный план регламентного обслуживания информационных баз.
Проверка логической целостности информационной базы
Если говорить о СУБД, то любая система управления базами данных, в том числе и та, которая используется файловой версией 1С, обеспечивает целостность данных встроенными средствами и вам вряд ли придется заниматься этим вопросом, если только, конечно, не произошло физического повреждения базы данных. Как мы уже говорили выше, база данных — это набор взаимосвязанных таблиц и самой СУБД в общем то все равно что мы храним в этих таблицах, для нее таблица Документа ничем не отличается от таблицы Справочника, кроме состава полей.
Но на уровне информационной базы 1С существует совсем иной набор объектов: Справочники, Документы, Регистры сведений и накопления и т.д. и т.п. При этом они связаны определенной внутренней логикой. Так элементы справочника могут иметь иерархическую структуру, являться подчиненными для другого справочника, а документы быть основанием для других документов, формировать проводки, записи регистров и т.д. и т.п. В процессе работы данная логика может быть нарушена, как по причине ошибок в программе, так и в результате некоторых действий пользователя.
Давайте рассмотрим следующую схему, отражающую некоторый набор бизнес-логики. У нас есть два документа: Реализация и Оплата, которые делают движения по некоторым регистрам. Так при реализации мы списываем нужное количество товара со склада и вносим в регистр взаиморасчетов задолженность покупателя. В момент оплаты мы вносим полученную сумму в регистр денежных средств и закрываем задолженность покупателя по отгрузке полностью или частично. Но как мы определим, какую именно задолженность погасил клиент? А для этого мы введем в документе оплата обязательное поле Основание, в котором будем указывать нужную реализацию.
При этом документ Оплата будет являться подчиненным к документу Реализация и в случае его отмены также должен быть отменен, так как перестает существовать основание для оплаты. Теперь представим, что в результате какой-то нештатной ситуации или некорректных действий пользователя у нас в документе Оплата пропала ссылка на документ основание, т.е. нарушилась структура подчиненности. Найти такую ошибку будет не так-то просто. Потому что все записи в базе данных останутся, и каждая из них по отдельности будет верная. Так правильным останется количество товаров на складах и суммы денежных средств предприятия, а вот взаиморасчеты враз станут неверны.
Внешне это может проявляться так: отчеты по реализациям и оплатам от контрагента совпадают, а вот отчет по взаиморасчетам или акт сверки формируется неправильно. При этом вы можете раз за разом пересчитывать суммы руками, все будет сходиться, но отчет снова и снова будет давать неверный результат.
Поэтому во всех подобных случаях, когда отчеты показывают неверные результаты или не сходятся друг с другом, следует запускать проверку логической целостности. Но не следует ожидать от нее какого-либо чуда, потому что она способна исправить только некоторые, самые очевидные ошибки (проводка без регистратора, неверный родитель элемента справочника и т.д.), в остальных случаях потребуется анализ ситуации и ручное исправление обнаруженных проблем. При этом нарушение логической целостности очень часто бывает связано с нарушением ссылочной целостности, о которой мы поговорим ниже.
Как часто нужно запускать эту проверку? Время от времени, особенно в файловых базах с обязательным изучением лога проверки, чем раньше вы узнаете о возможных проблемах в структуре данных и устраните их — тем лучше.
Проверка ссылочной целостности информационной базы
Данная проверка является одним из вариантов проверки логической целостности базы и выявляет проблемы со ссылками на отсутствующие элементы базы данных. Как мы уже говорили, база — это набор связанных между собой таблиц. В одной из них мы можем хранить контрагентов, в другой номенклатуру, в третьей — список складов, а внося запись о реализации товаров просто делаем ссылки на нужные элементы других таблиц. Например, наш условный документ Реализация может ссылаться на справочники Контрагенты, Номенклатура, Склады, выбирая и указывая в документе соответствующие значения мы не создаем дополнительных записей в таблице реализации, а даем ссылки на элементы связанных таблиц.
Контроль ссылочной целостности является подмножеством контроля логической целостности и осуществляется на уровне конфигурации. С ним сталкивался каждый, кто пытался удалить какой-либо объект их базы, а в ответ получал сообщение, что это невозможно, так как данный объект используется и приводился список мест использования.
Но что будет, если используемый объект все-таки удалить? Возникнет битая ссылка. Внешне она выглядит как запись со ссылкой на уникальный идентификатор отсутствующего объекта:
Если подходить с чисто теоретических позиций, то битых ссылок в информационной базе быть не должно. Но не все так просто, если в базе используется РИБ, либо иные технологии обмена с другими базами и внешними источниками, то ряд второстепенных реквизитов может не передаваться. Например, сведения о подключаемом оборудовании.
В данном случае это нормально (Конфигурация Розница 2.3), так как конкретный экземпляр оборудования подключен именно к конкретному рабочему месту и передавать эти данные куда-то еще лишено особого смысла.
Но чаще к этой ошибке приводит повреждение базы или некорректные действия пользователя, скажем, удалившего объекты без контроля ссылочной целостности. В любом случае появление битых ссылок — это серьезный симптом и повод для отдельного разбирательства, рубить с плеча здесь неуместно. Поэтому сами разработчики при активации этой проверки переводят ее в безопасный режим, устанавливая действие Не изменять, по сути проверка лишь проинформирует вас о наличии битых ссылок, не более.
А вот после, установив сам факт их наличия следует думать. В ряде случаев, если выявленные ссылки являются второстепенными объектами подчиненных баз не нужно делать ничего. Наоборот, любая попытка «исправления» может привести к нарушению нормальной работы информационной базы. А вот в других надо предпринимать какие-либо действия.
Давайте посмотрим какие варианты у нас есть. Начнём со ссылок на несуществующие объекты. Здесь все довольно просто, мы можем или очистить ссылку, или создать новый объект нужного типа. Допустим, если запись справочника Номенклатура оказалась повреждена, но мы точно знаем по бумажным документам, что именно реализовывали, то ставим Создавать объекты, после чего переходим к ним и заполняем нужные реквизиты. Если же это какой-то второстепенный реквизит, то можем просто очистить ссылки. Второй вариант довольно часто применяется в тех случаях, когда надо быстро почистить базу и ряд объектов удаляется без контроля ссылочной целостности.
Теперь о частичной потере данных объектов. К ним могут относиться элемент подчиненного справочника без владельца или движение без регистратора. Мы можем либо удалить такие объекты, либо создать связанные с ними. Чаще всего такие объекты имеет смысл удалять, особенно если это движения, хотя если это элемент справочника, владелец которого потерян, то в ряде случаев имеет смысл создать владельца.
Внимание! Перед любыми исправлениями ссылочной целостности в базе обязательно создайте резервную копию. Помните, что данная операция необратима и может привести к полной или частичной потере данных!
Но даже имея показания к исправлению некоторых битых ссылок следует иметь ввиду, что данный инструмент применит выбранное действие ко всем ссылкам без разбора, что во многих случаях неприемлемо. Поэтому чаще всего проблему битых ссылок следует решать иными путями, один из них — выгрузка необходимых справочников или документов в XML из резервной копии и загрузка их в целевую базу в тех случаях когда просто восстановиться из бекапа невозможно.
Когда следует запускать эту проверку? В тех случаях, когда в базе не обнаружены битые ссылки или когда проверка логической целостности выявляет ошибки. Но в любом случае первый запуск следует производить с действиями Не изменять, а последующие решения принимать на основании глубокого анализа ситуации.
Пересчет итогов
В составе конфигурации 1С имеются специальные объекты — регистры, которые предназначены для хранения записей в разрезе определенных измерений. Например, регистр сведения Цены хранит сведения о ценах в разрезе измерений Номенклатура и Дата, а регистр накопления Товары хранит сведения об остатках товаров в разрезе Номенклатуры, Вида движения (расход или приход), Количества и Даты.
Начем с более простого, регистров сведения, допустим мы хотим получить действующие цены на определенную дату. Но если мы просто получим записи за этот день, то увидим, что цены менялись только для некоторых позиций номенклатуры, чтобы получить полный набор цен нам надо прочитать записи регистра на неопределенное количество дней назад, пока мы не получим последние цены для каждой позиции номенклатуры. Чтобы этого не делать регистр сведений имеет специальную виртуальную таблицу — СрезПоследних, которая содержит последние актуальные цены на каждый день. Теперь нам достаточно один раз обратиться к этой таблице, чтобы получить нужные сведения на интересующую дату.
Немного сложнее с регистрами накопления, записи в них содержат только сведения о движениях, скажем, такого-то числа в такое-то время на склад пришло 10 позиций некоторой номенклатуры, затем тем же днем продали 1 шт, потом 3 шт, за ней снова 5 шт и после еще 1 шт. При этом ряд вопросов, которые могут нас интересовать гораздо шире. Нас могут интересовать остатки на произвольный момент времени, либо обороты за некоторый период.
Чтобы не делать глубоких выборок по регистрам накоплений в них предусмотрены виртуальные таблицы Остатки, Обороты, Остатки и обороты. Каждая из них содержит актуальные данные за определенный период, в нашем случае день. И если таблица остатков в особом пояснении не нуждается, то таблица оборотов на нашей схеме может вызвать вопросы, так как ее содержимое полностью совпадает со значениями регистра. На самом деле редко когда регистр содержит единственную запись за день, чаще всего там множество записей движения: утром привезли на склад товар, потом его активно продавали, затем довезли еще немного и продолжили торговлю. При этом таблица обороты отобразит общий оборот за период.
Собственно, как и индексы, итоги предназначены для ускорения получения данных из информационной базы, теперь вам не нужно считывать весь или почти весь регистр, чтобы получить данные на определенный момент времени, достаточно обратиться к одной из виртуальных таблиц. Но со временем итоги тоже начинают терять эффективность: в них могут накапливаться мусорные записи, они могут фрагментироваться. Пересчет итогов решает эту проблему, заново создавая нужные виртуальные таблицы.
Пересчет итогов, как и реиндексация, простой и эффективный способ поддержания производительности информационной базы. Следует выполнять его регулярно в рамках обслуживания, а также каждый раз после исправления ошибок логической или ссылочной целостности.
Сжатие таблиц информационной базы
По мере работы информационной базы объем добавляемых в нее данных растет, вместе с ним растет и объем файла (файлов) базы данных. Но если мы удалим из базы часть информации, то объем файла базы данных не уменьшится, просто некоторые страницы будут помечены как пустые и снова доступные для записи. Если мы хотим уменьшить физически занимаемый объем, то следует произвести операцию сжатия таблиц информационной базы. В этом случае база переместит текущие данные на место освободившихся страниц, а затем уменьшит файл базы данных на объем освободившегося пространства.
Какой практический смысл этой операции? Да особо никакого, фрагментация данных от этого не уменьшится, а скорее всего даже увеличится. Единственный смысл сжатия базы — это если вы удалили из нее значительный объем данных и теперь просто оптимизируете общее занимаемое место.
Когда следует выполнять данное действие? Только если вы удалили из базы значительный объем данных, ну или если размер файла базы для вас критичен.
Реструктуризация таблиц информационной базы
Если реиндексация только перестраивала индексы, то реструктуризация полностью перестраивает содержимое базы данных, для каждой таблицы создается копия и записывается в отдельное место на диске, затем вся база данных полностью замещается копией. В чем смысл этого действия? Фактически мы произвели дефрагментацию базы данных, если ранее данные таблицы могли быть разбросаны по диску, то теперь они будут расположены последовательно.
Есть ли в этом практический смысл? В общем и целом, нет, чтение из страниц таблицы носит преимущественно случайный характер, последовательно считывание все таблицы — это уже ошибка построителя запросов. Но реструктуризация все-таки имеет смысл, скажем если вы добавили в базу собственный набор реквизитов или обновили релиз конфигурации (в этом случае реструктуризация будет выполнена автоматически). В любом случае лучше, чтобы связанные данные лежали рядом. Но следует понимать, что в процессе реструктуризации придется переместить весь объем информационной базы, а это может занять весьма продолжительное время.
И как раз-таки после реструктуризации будет уместно выполнить сжатие. Так как данные перемещать уже не надо, а пустое пространство уже сосредоточено в одном месте.
Как часто следует запускать? По необходимости, в том случае если вы изменили набор метаданных.
Пересоздание автономной конфигурации
Достаточно специфическая функция и относится к мобильному клиенту с возможностью автономной работы. Потеряв связь с основной базой данных такой клиент переключается в автономный режим и начинает использовать автономную конфигурацию. Если в данном режиме автономный клиент ведет себя неадекватно, то автономную конфигурацию следует пересоздать.
Проверка логической целостности расширений конфигурации
Не так давно фирма 1С добавила еще один способ доработки конфигураций — расширения. Основное их преимущество, что нет необходимости править код основной конфигурации или снимать ее с поддержки. Но современные расширения позволяют добавлять в базу новые реквизиты, справочники, документы, регистры и организовывать логические связи между ними.
Данная проверка аналогична проверке логической целостности, только с учетом подключенных расширений, которых может быть и не одно. Если вы используете расширения, то обязательно включайте данную проверку вместе с проверкой логической целостности.
Заключение
По умолчанию фирма 1С предлагает достаточно сбалансированный набор действий: реиндексация и пересчет итогов благотворно влияют на производительность, а проверка логической целостности позволяет на ранних этапах выявить возможные проблемы. Если вы используете расширения, то добавьте туда проверку логической целостности расширений.
Остальные проверки и действия следует выполнять только при наличии необходимости. Так обнаружив ошибки в логической целостности следует выполнить проверку ссылочной целостности, а существенно изменив структуру базы данных имеет смысл выполнить реструктуризацию.
Надеемся, что данный материал окажется вам полезен, а также поможет по-новому взглянуть и глубже понять привычные действия.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Тестирование и исправление базы 1С 8. Ставим флажки осознанно
В статье рассматривается системная утилита “Тестирование и исправление информационной базы” – в каких случаях может помочь, какие имеет настройки для чего нужны.
Содержание
Бывает так, что из-за программного или аппаратного сбоя, аварийного прерывания работы или еще по ряду причин, в базе 1С начинают накапливаться ошибки. До поры они могут быть незаметными, но со временем симптомы проявляются все отчетливее. Вот лишь некоторые из них:
- Расходятся цифры в отчетах на границе периодов – например, на конец января остаток по товару 100 штук, а на 1 февраля – 50 штук. При этом документов в последней секунде января нет. Связано это чаще всего с нарушением таблицы итогов по остаткам.
- При сортировке данные сортируются криво – например, сортируем документы по дате, а даты идут вперемешку, или сортируем номенклатуру по наименованию, а наименования не по алфавиту. Такая ошибка возникает при повреждении таблиц индексов
- При попытке открытия, редактирования или проведения система выдает ошибки, которые не связаны с некорректным программным кодом – например, платформа типовая на поддержке, все должно работать, но начинают сыпаться ошибки.
- Появляются данные с названием начинающемся на “Объект не найден…” – это результат некорректно удаленных документов или поврежденной ссылочной логики
- При входе под определенным пользователем 1С вылетает, а под другими все ОК.
на самом деле, проблем и ошибок много, и для разных баз они могут быть совершенно разными, вплоть до того, что 1С в принципе отказывается запускаться или вылетает. В большинстве случаев причина – физическое повреждение базы данных или рассогласование логической целостности (например, платформа должна была удалить данные из двух таблиц синхронно, но по какой-то причине удалила только из одной, и т.п.).
Все болит, ничего не помогает!
Если мы словили ошибку времени выполнения – отладчик в руки и вперед! А что делать, если причина ошибки не локализуется и от нас не зависит? Верно! Воспользоваться средствами диагностики! Вообще, средств диагностики и исправления ошибок, связанных именно с платформой и БД, не так много.
- Собственно, “Тестирование и исправление” – герой нашей статьи.
- Утилита для файловых баз – chdbfl.exe
- Средства СУБД для клиент-серверных баз, если тестирование от 1С не помогает.
- Очистка кэша – тоже следует использовать как средство исправления ошибок.
Тестирование и исправление ИБ средствами встроенной утилиты
Запускается данная утилита из конфигуратора, через меню Администрирование, в котором следует выбрать пункт “Тестирование и исправление“. Откроется окно утилиты:
Какие же флажки следует ставить и для чего?
Первое и главное – сделать резервную копию базы. Так как если вы будете не просто запускать не просто тестирование, а еще и исправление выявленных ошибок, данная операция будет необратима, и если что-то пойдет не так, все может стать еще хуже
Реиндексация таблиц информационной базы
Данная галочка отвечает за перестроение индексов у таблиц базы данных. Вообще, индексы – это предмет отдельного обсуждения, и здесь я упомяну лишь, что часть индексов создается платформой, а другая часть – нашими умелыми ручками разработчиков 1С. Индексы нужны для ускорения поиска данных и повышения производительности 1С при работе с данными. И вот этот флажок “Реиндексация таблиц” отвечает за то, что утилита заново физически пересчитает все индексы, чтобы они не расходились с индексируемыми исходными таблицами. Также, полное перестроение индексов может привести к значительной оптимизации их работы и ускорению всей системы в целом.
Небольшое дополнение – этот флажок больше подходит для файловых баз, так как для клиент-серверных 1С рекомендует реиндексацию делать средствами самой СУБД (MS SQL Server, PostgreSQL и т.д.) Например, можно почитать тут: https://its.1c.ru/db/metod8dev#content:5837:hdoc:p4
Проверка логической целостности информационной базы
Ошибки, связанные с нарушением логической целостности, чаще всего возникают в результате некорректного обновления конфигурации, или в момент аварийного завершения работы при записи объекта. Это происходит потому, что редактирование объекта в базе означает редактирование записей в соответствующих таблицах СУБД. А при аварийном завершении в одних таблицах записи уже внесены, а в других – система не успела, что и приводит к логической рассинхронизации.
Тестирование и исправление с установленным флажком “Проверка логической целостности информационной базы” решает эти проблемы, восстанавливая логические связи между записями в таблицах.
Проверка ссылочной целостности информационной базы
Это подпункт проверки логической целостности, и отдельно его указать нельзя – если проставить его, то и предыдущий устанавливается автоматически.
Данный флажок отвечает за проверку и исправление т.н. “битых” ссылок на несуществующие объекты. Чаще всего “битые” ссылки появляются из-за некорректных действий разработчика. Неверно настроенные правила обмена или непосредственное удаление объектов могут приводить к появлению “битых” ссылок.
- При включении этого флажка становятся доступными три варианта обработки ошибочных ссылок – Создавать объекты – будут создаваться пустые объекты-заглушки, которые затем можно заполнить
- Очищать ссылки – некорректные ссылки будут просто очищены
- Не изменять – утилита лишь проинформирует о наличии “битых” ссылок, но сама ничего предпринимать не будет.
Пересчет итогов
Итоги – это отдельные таблицы в ИБ, которые хранят рассчитанные на основе движений итоги по регистрам бухгалтерии, накопления и периодических регистров сведений. Простейший пример – мы начали учет в январе; за январь у нас 100 движений приход и 100 движений расход. Когда мы хотим сформировать отчет, к примеру, по остаткам на 15 февраля, платформа получает уже рассчитанные итоги за январь, досчитывает по таблице движений остатки до 15 февраля, и возвращает эти остатки. Если бы итогов не было, нам бы каждый раз пришлось анализировать все движения с начала времен, что сильно замедлило бы работу.
Но в процессе работы, в таблицах итогов накапливаются нулевые значения, которые замедляют обработку данных для соответствующих регистров. Кроме того, в результате сбоев, выключения электричества и т.п., таблица итогов может не соответствовать движениям, которые эти итоги сформировали. Например, два движения в приход 10 шт, но в итогах не 20шт, как ожидается, а 10.
Для того, чтобы привести в соответствие итоги и движения, а также для оптимизации таблиц итогов, и используется утилита со включенным флажком “Пересчет итогов”.
Сжатие таблиц информационной базы
Данный флажок доступен только для файлового варианта, так как при использовании сервера 1С, за управление физическими таблицами и выделение места на диске под них отвечает СУБД. При удалении данных из базы 1С, платформа для экономии ресурсов и времени не удаляет физически данные из СУБД. Они остаются в таблицах, но со специальной пометкой, чтобы платформа 1С их не использовала. В результате объем файла БД со временем увеличивается за счет этих скрытых объектов. Сжатие таблиц ИБ физически удаляет такие объекты.
Реструктуризация таблиц информационной базы
Если включена данная опция, то утилита для каждой таблицы в СУБД создаст копию с такой же структурой, и переместит данные из старой таблицы в новую. Аналогичная процедура реструктуризации происходит при изменении структуры конфигурации.
Пересоздание автономной конфигурации
Этот флажок предназначен для создания автономной конфигурации для мобильного клиента с автономным режимом. Эта возможность появилась в платформе начиная с версии 8.3.16. Если вкратце, часть критичного функционала, который должен быть доступен оффлайн, можно вынести в автономную конфигурацию, которая будет использоваться мобильным клиентом, если основной сервер не доступен. Подробнее можно почитать здесь:
https://wonderland.v8.1c.ru/blog/mobilnyy-klient-s-avtonomnym-rezhimom/
Нюансы
Следует учитывать, что тестирование и исправление ИБ в 1С – процедура длительная, необратимая, и монопольная. Отсюда рекомендации – делайте перед запуском резервную копию, убедитесь что предоставлен монопольный доступ – кроме конфигуратора не должно быть ни других сеансов, ни фоновых заданий. И планируйте запуск утилиты в нерабочее время. Соответственно, чем больше размер базы и больше отмечено флажков, тем длительнее будет работа утилиты.
На этом статья подходит к концу! Спасибо что дочитали, и удачи!
6 комментариев к “Тестирование и исправление базы 1С 8. Ставим флажки осознанно”
Спасибо, единственная статья где всё понятно и полно описано о модуле тестирования и исправления. А как почистить кэш?
Александр, есть несколько вариантов очистки кэша.
Вот в этой статье я привожу три варианта очистки пользовательского кэша, а также там написано как почистить серверный кэш:
https://1c.alexcode.ru/3-sposoba-ochistit-kesh-v-1s-8/
благодарю за статью!
Я заметил неудобные нюансы в работе тестирования/исправления:
1) если Вы собираетесь проверять ссылочную целостность, то не сможете это сделать без проверки логической целостности, т.к. флажок для проверки ссылочной целостности без установки флажка проверки логической целостности не устанавливается (а почему так сделали совсем не понятно)
2) очень неприятный нюанс при установке флажка “Продолжить прерванное ранее тестирование” – пример моя ситуация:
я установил флажок тестирования логической целостности, флажок прервать выполнение через определенное время и флажок “Продолжить прерванное ранее тестирование”. Несколько раз продолжал, но затем подумал, что после тестирования логической целостности неплохо протестировать и ссылочную целостность. После очередной остановки тестирования я установил дополнительно флажок проверки ссылочной целостности и продолжил тестирование, но… тестирование не продолжилось, а началось с начала тестирование логической целостности! Это был удар ниже пояса. Т.к. тестирование делается последовательно по установленным флажкам (по крайней мере для проверки логики и ссылок), то почему бы не проверять, какой флажок установлен дополнительно – ниже или выше логического тестирования – если ниже, то не начинать с начала, а на самом деле продолжить?
3) абсолютно не ясно (и нигде не описано – я не нашел), при каких условиях продолжается тестирование, именно продолжается, а не начинается с начала – например, если после остановки тестирования, кто-то из пользователей поработает в Предприятии, то после этого продолжится тестирование или начнется с начала? Логично начать с начала, но как будет на самом деле неизвестно, т.к. логика и платформа 1С не всегда дружат.
B еще вопрос по Реструктуризации таблиц для понимания, поможет ли реструктуризация и исправит что-то или нет.
Вы написали: “…утилита для каждой таблицы в СУБД создаст копию с такой же структурой, и переместит данные из старой таблицы в новую”.
Вопрос: “переместит данные” – только скопирует данные или всё же произведет какие-то проверочные корректирующие действия над данными таблиц?
Если только скопирует данные, то какой смысл в этой операции? Абсолютно никакого.
А если произведет какие-то проверочные корректирующие действия над данными таблиц, то что именно делается с данными при реструктуризации. Ответ нужен не для “тупой”, а для осмысленной установки флажков.
Спасибо
В целом, реструктуризация всех таблиц через “тестирование и исправление” по сути близка к дефрагментации жесткого диска – при длительной эксплуатации базы и интенсивной модификации структуры метаданных, таблицы БД имеют свойство фрагментироваться – т.е. записываться в разные части диска. Реструктуризация перестраивает их все последовательно. Этот флажок целесообразно ставить вместе со сжатием таблиц. Ошибки этот флажок не исправляет, в основном его задача – повышение быстродействия БД.
Тестирование и исправление базы 1С 8.3
Иногда в работе с программой 1С 8.3 могут возникнуть какие-то непредвиденные ситуации — сбои в работе, программа выдает какие-то ошибки, не проводится документ или же просто некорректно отображаться информация. В таких случаях, первое что может помочь — это произвести тестирование и исправление информационной базы 1С 8.3.
Тестирование и исправление информационной базы 1С
Запускаем информационную базу 1С в режиме Конфигуратор и заходим в пункт меню Администрирование — Тестирование и исправление .
Стоит помнить, что перед любыми действиями с информационной базой 1С необходимо выполнить ее резервное копирование.
В открывшемся окне несколько пунктов выбора вариантов проверки и режимов, и чтобы правильно установить параметры тестирования 1С и правильно установить галочки, нам нужно понимать суть происходящего. Рассмотрим, что означает каждый пункт и для чего он предназначен.
Тестирование базы 1С, проверка на ошибки
Реиндексация таблиц информационной базы 1С: что это
При работе с программой 1С 8.3 вся информация (заполнение справочников, создание документов и т.п.) записывается в таблицы. Кроме основных таблиц существуют вспомогательные таблицы, в которых эти данные сортируются по заданным полям, для ускорения поиска, что увеличивает быстродействие программы 1С — это таблицы индексирования.
В результате программного сбоя индексы могут сбиваться, вследствие чего появляются ошибки, например в документе отсутствует наименование или количество, не заполнено поле и т.п.
Для исправления такого рода ошибок в базе 1С устанавливаем галочку Реиндексация таблиц информационной базы .
При тестировании и исправлении в 1С реиндексируются все таблицы. И хотя данный пункт занимает длительное время, он помогает решить большую часть проблем.
Проверка логической целостности информационной базы 1С
При создании новых объектов в информационной базе 1С 8.3 создаются новые таблицы, связанные с другими таблицами. Ошибки нарушающие логическую целостность могут возникнуть вследствие некорректного обновления программы 1С, выключения компьютера в момент создания или записи документа (или любого другого элемента программы), сбоя в работе сети.
При этом программа 1С может работать, но ошибка будет возникать при обращении к тому документу (или объекту) в момент создания которого произошел сбой.
При тестировании и исправлении и установке данной галочки будет произведена проверка логических ошибок в структурах таблиц информационной базы.
Проверка ссылочной целостности информационной базы 1С
В ходе работы с программой 1С могут возникнуть ссылки на несуществующие или разрушенные объекты, так называемые битые ссылки. Они могут в результате сбоя или непосредственного удаления объекта. В случае, если в ходе проверки будет такой объект найден, необходимо в настройке дополнительно галочками указать, какие действия с ним производить.
При тестировании и исправлении и обнаружении ссылок на несуществующие объекты в 1С предлагается три варианта действия — создать объект, очистить ссылку или не изменять, при обнаружении частично потерянных данных объекта — создать, удалить объект, или не изменять его. При выполнении действия:
- Создавать объекты , система создает своего рода объект-заглушку, которые впоследствии можно будет исправить.
- Очищать ссылки, удалять объект — битые ссылки будут очищены, объекты удалены.
- Не изменять — в этом случае проверка лишь покажет ошибки, не предпринимая никаких действий.
Пересчет итогов
Иногда в отчетах могут отражаться неверные данные. Мы исправляем, перепроводим документы, а они не меняются… Видим цифру, открываем карточку счета — документа нет. В чем может быть проблема? Все просто — сбились итоги.
Для удобства работы в программе 1С 8.3 существуют вспомогательные таблицы, которые хранят данные об уже просчитанных итогах. Они нужны, чтобы при обращении к необходимой информации она не выбиралась из общих таблиц, а получалась из таблицы итогов. Это значительно экономит время обработки информации.
Например, данные из таблицы итогов по регистру Остатки материалов , позволяют нам быстро определить их остатки на складах на определенную дату. Установив галочку при тестировании — Пересчет итогов , будут пересчитаны итоги во всей информационной базе 1С и заново занесены в таблицы итогов.
Сжатие таблиц информационной базы 1С
При удалении объектов в информационной базе 1С (документов, справочников и т.п.) они не удаляются физически, эти записи остаются в таблицах, но пользователь их не видит. В результате накопления таких объектов, увеличивается объем информационной базы 1С, что приводит к замедлению работы.
Сжатие таблиц в 1С 8.3 — это физическое удаление записей, которые ранее были помечены на удаление и удалены из программы, информация о них удаляется полностью из информационной базы, в результате таблицы базы становятся меньше. Такого же эффекта можно достичь путем выгрузки и загрузки файла информационной базы через Конфигуратор (*.dt).
Реструктуризация таблиц информационной базы 1С
Это создание заново структуры информационной базы, создание новых таблиц, и перенос старых данных в новые таблицы. Реструктуризация также происходит при обновлении информационной базы. В результате этих действий также возможно исправление некоторого рода ошибок программы 1С.
Обращаем внимание на переключатель, который задает что делать при тестировании — выполнять Только тестирование (в этом случае будет выведена только информация об ошибках) или Тестирование и исправление ошибок .
После установки параметров тестирования, нажимаем кнопку Выполнить и ждем результат.
В строке состояния отображается информация о ходе тестирования.
По окончании тестирования 1С будет выведена информация об ошибках и их исправлении.
Если в ходе тестирования возникли какие то проблемы, можно восстановить информационную базу из резервной копии, созданной до начала тестирования.
См. также:
Если Вы еще не являетесь подписчиком системы БухЭксперт8:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
У вас нет доступа на просмотр Чтобы получить доступ: Оформите.ФНС в Письме от 13.08.2020 N СД-4-3/13009@ дала разъяснения, что.Иногда возникает необходимость сделать копию своей рабочей базы 1С, например.Как правило, все новые настройки в программе 1С и сложные.
(3 оценок, среднее: 5,00 из 5)
Обсуждение (4)
В какой последовательности лучше выставлять режимы проверки? Ведь устанавливать все флаги сразу не совсем правильное решение?