Пересчет итогов 1с 8.2 как сделать. Исправление информационной базы внутренними средствами программы

) а разработчики платформы тут не причем, это довольно известное архитектурное решение, не удалять "нулевые" записи. Я бы даже сказал что это давняя "священная война".

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

При проектировании реляционных СУБД считается (считалось) что операции CRUD (Create, Read, Update, Delete) по затратам ресурсов распределяются следующим образом

1. Легкие: Read, Update
2. Средние: Create
3. Тяжелая: Delete

И исходя из логики поведения объекта Регистр, который меняется часто; и из-за больших затрат на удаление записей, существует позиция что:

запись итога не имеет смысла удалять синхронно в момент возникновения нулевого итога, потому что "ноль" не означает "NULL" и потому что велика вероятность того что следующая транзакция "захочет" увеличить или уменьшить итог и он станет ненулевым и нам необходимо будет понести затраты еще и на операцию вставки.

отсюда и посыл, что записи с нулевым итогом имеет смысл удалять асинхронно, то есть в определенный момент времени - но опять же неизвестно как определить этот самый "определенный момент". Такое определение должно лежать на ответственных за приложение - чаще всего как мы знаем пересчет итогов возникает в один момент времени при закрытии периодов учета и подается как некая подготовительная процедура. Вот тут и кроется проблема о которой давно известно - бизнес-задача Закрытие периода не является задачей обеспечения технической стабильности и бизнес иногда может на неё "забить".
У меня в практике была таблица с 400 миллионами записей с нулевым итогом.

И вот тут я могу сказать что разработчики платформы слегка "недочлись" (от слова "недочет") - дело в том что согласно вышеописанному архитектурному решению явно становится понятно, что:

Удалять записи с нулевым итогом нужно по тем ключам (комплектам измерений), по которым длительное время не было операций UPDATE. А этого функционала в платформе нет - есть только глобальный пересчет. В крупных конторах это решается SQL Job"ом выполняющем примерно следующую работу:

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

обычно данный Job запускается раз в 10 секунд, выбирается TOP 1 чтобы уменьшить время блокировки на затратную операцию удаления. Естественно в такие базы уже встроены и планы обслуживания по пересчету статистики и перестроению дефрагментированных индексов. В случаях когда таких "ненужных" записей очень много - то обычно уменьшают период запуска Job, либо отказываются от Регистра Итогов - потому что если у вас много ключей уходит в "ноль" и больше не используется, скорее всего у вас по данным ключам 2 операции движения "пришел" и "ушел" - зачем хранить такую информацию в регистре итогов совершенно не ясно.

Ну и про статистику тут тоже все изъезжено - масcовые операции CREATE И DELETE, а также UPDATE ключевого столбца ведут к нарушению дерева поиска по индексу (диапазона распределений ключа по страницам данных) - ну то есть в поисковом диапазоне 1..10 вполне себе может оказаться ключ со значением 23 - так SQL было удобней, потому страница данных была рядом со страницей ключа 7, а ключ 6 заместо которого встал ключ 23 окажется в диапазоне 100..134 - что тоже было удобней исходя из страниц данных. Пример на пальцах - но думаю суть отражает.

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

Да и еще забыл сказать - массовое удаление ведет к массовому возникновению фантомных записей: запись числится удаленной но место занимает - такая ситуация ведет к снижению производительности операций выборок типа SCAN (просмотр).

Vatkir; asylum90; Ганс; Anikrion; Albert_2008; Niberu; ser6702; MarchTomCat; olezhe; user598655_ilia-bers; klaus38; LordKim; lmnlmn; spenser123; Monte Carlo; acanta; zaharknyaz; Aggressorak; vesd; Ilya$n; Waanneek; SkyJack; letarch; aegoncharov; user777757; [email protected]; mytg; Gang031; ice-net; Goga1979; ChessCat; RegrZ; 1cprogr_nsk; Irwin; Paradise.87; KAV2; корум; Roman100; for_questions; ragimi; EugeneMIPT; kai nk; kitaevay; crosby; Noxie41; Alex_grem; nixel; new_user; tdml; NeviD; RimidalV; reboot; denis_aka_wolf; Flashill; marchenko.y; freya-khv; asg.aleks; denis13; adm134; TIS_08; mtv:); soulsteps; shalimski; Anesk; pisarevEV; Silenser; kwazi; engineer74; vadimlp77; Артано; dgolovanov; pchela751; aexeel; artbear; jif; Dmitryiv; Rego1337h; slavap; WizaXxX; IvanBoychuk123; fishca; Evil Beaver; Dach; RodinMax; sanches; mdmdvd; zakakvo; Krio2; jacksonp; adeich; afedor; MaximStav; DoctorRoza; Serg0FFan; sanfoto; kinazarov; Bukaska; theshadowco; oitnur; JesteR; detec; audion; laeg; morok1983; krv2k; Di-dog; sparklemal; awa; KAPACEB.AA; Chif13; sa1m0nn; CratosX; AllexSoft; galich; vlad.frost; igordynets; tormozit; vasiliy_b; vladir; meuses; Poopkeen; Andreynikus; Prad2002; dicwork; JohnyDeath; An-Aleksey; It-developer; rgrisha; Bronislav; 7o2uYXg; HolodZar; адуырщдв; AzagTot; Рамзес; DenisCh; PONOM; rеd80; w-divin; metmetmet; CheBurator; PressaLod; Diversus; sevushka; Aleksey.Bochkov; yuraos;

В этой статье мы рассмотрим данную системную утилиту «Тестирование и исправление информационной базы» в 1С 8.3 и особенности её использования.

Перед проведением любых операций необходимо !

Тестирование и исправление информационной базы 1С

Режим тестирования и исправления вызывается в конфигураторе системы 1С 8.3 выбором меню Администрирование — Тестирование и исправление.

Проверки и режимы

В этом окне указывается список необходимых проверок и режимов, которые будут произведены в результате работы утилиты. Рассмотрим каждую галочку подробнее:

Получите 267 видеоуроков по 1С бесплатно:

  • Реиндексация таблиц информационной базы — если установлен этот флаг, будет произведена реиндексация таблиц. Реиндексация — полное перестроение индексов для заданных таблиц. Реиндексация существенно повышает производительность системы в целом. Данная процедура никогда не будет лишней и увеличивает производительность системы.
  • Проверка логической целостности информационной базы — система умеет проверять логическую и структурную целостность базы данных, находить ошибки в организации данных (например, страниц в файле).
  • Проверка ссылочной целостности информационной базы — подпункт логической проверки, проверяет информацию в базе данных на наличие «битых» ссылок. «Битые» ссылки появляются в базе из-за некорректной обработки информации разработчиком, чаще всего при непосредственном удалении данных или неправильно настроенном обмене данных. При нахождении ошибок можно выбрать 3 варианта действий: Создавать объекты — система создает элементы-заглушки, которые можно потом заполнить необходимой информацией, Очищать ссылки — «битые» ссылки будут очищены, Не изменять — система только покажет Вам ошибки.
  • Пересчет итогов — в платформе 1С в и есть понятие итогов. Итоги — таблица подсчитанных результатов, данные из которой получить быстрее, чем анализировать весь регистр сведений. Как правило, пересчет итогов увеличивает производительность системы.
  • Сжатие таблиц информационной базы — если установлен этот флаг, будет сжата и уменьшится в объеме. Связанно это с тем, что при удалении данных из базы данных, 1С не удаляет физически эти объекты, а лишь «помечает» их на удаление. Т.е. пользователь не видит их, а они есть:). Вот именно сжатие базы данных и удаляет такие записи окончательно. Также такого эффекта можно достичь выгрузкой и загрузкой файла базы данных (*.dt).
  • Реструктуризация таблиц информационной базы — процесс, с помощью которого система осуществляет пересоздание таблиц баз данных, обычно эта процедура вызывается при внесения изменений в структуру метаданных конфигурации. Реструктуризация всей БД — процесс долгий, будьте внимательны.

Если по каким-то причинам тестирование и исправление не помогает или у вас нет доступа в конфигуратор, воспользуйтесь утилитой .

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

Иногда функционирующая программа может показывать неверные результаты. Из списка «исчезают» документы, при попытке открыть документ программа зависает, в отчетах появляются странные результаты. Все эти «глюки» прекращаются после тестирования и исправления 1C.

Ошибки могут проявляться не столь грубо, но любые странности и неточности являются поводом для «ремонтных работ».

Причины, ведущие к проблемам:

  • Аварийное прекращение работы (внезапное отключение питания);
  • Физический износ жесткого диска;
  • Сбои в работе компьютера.

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

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

Это можно сделать прямым копированием каталога, где находится информационная база. Если не удается войти в Конфигуратор, то сделать копию можно только таким способом.

Если удалось войти в Конфигуратор, то нужно выбрать в меню опцию Администрирование → Выгрузить информационную базу, как на рис.1. В открывшемся окне нужно задать каталог для записи резервной копии и имя файла, в котором будет сохранен архив.

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

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

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

Наличие резервных копий – страховка от потери данных. Однако нельзя поручиться, что в резервных копиях все идеально, поэтому актуальность опции Тестирование и Исправление не уменьшается.

Рис. 1. Выгрузка данных.

Подведем итог:

  • Резервные копии нужно делать регулярно;
  • Резервные копии нужно хранить на другом носителе;
  • Для автоматизации есть программа Бэкапер-1С Резервные копии бухгалтерии;
  • Перед тестированием и исправлением обязательно делают копию базы.

Исправление информационной базы внутренними средствами программы

После того, как сделана резервная копия, откроем базу в режиме Конфигуратора. Выбираем опцию меню Администрирование → Тестирование и исправление информационной базы.

В открывшемся окне нужно проставить галочки (рис.2).

Но лучше не делать этого: не все операции, перечисленные в меню, необходимы при ремонте после аварии.

Рис.2. Окно тестирования и исправления 1с 8 с проставленными галочками во всех пунктах. Так делать НЕ НАДО:

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

Выполнить все – не самый лучший вариант! Квалифицированные пользователи выполняют действия поэтапно и выборочно.

Этапы исправления

Рассмотрим все пункты меню Тестирование и исправление.

  • Реиндексация таблиц информационной базы;
  • Проверка логической целостности;
  • Проверка ссылочной целостности;
  • Пересчет итогов;
  • Сжатие таблиц;
  • Реструктуризация таблиц.

Первый этап, Реиндексация таблиц информационной базы, помогает решить 90% проблем. Что происходит в процессе реиндексации?

Внесение данных в справочники, создание новых документов сопровождается их автоматическим упорядочиванием. Названия выстраиваются по алфавиту, документы – по датам и т.д. При этом физический порядок следования записей не меняется. Записи выводятся на экран в определенном порядке, потому что им присвоены номера (индексы), и соответствие индекса физическому номеру записи содержится в таблицах индексов.

Индексы очень важны:

  • Поиск в индексированных таблицах происходит во много раз быстрее, чем в неиндексированных;
  • Индексный номер – это уникальный «код» записи, по индексам выполняется связь между записями из разных таблиц;
  • Индексные таблицы – это каркас информационной базы; без них программа 1с не работает.

Нарушение индексных таблиц приводит к хаосу в представлении документов. Может, например, засветиться документ, в котором отсутствуют наименования товаров, но есть их количество.

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

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

Итак, при переиндексации происходят такие процессы:

  • Записи заново ранжируются и упорядочиваются;
  • Восстанавливается связь между таблицами и другими объектами;
  • Во многих случаях – восстанавливается работа программы.

После переиндексации можно проверить – восстановилась ли работоспособность базы.

Следующий этап – проверка логической целостности. Проверяется соответствие реальной структуры информационной базы и ее описания в Конфигурации (наличие объектов, наличие связей между объектами). Эта проверка зачастую сообщает об ошибках даже в работающей базе, не следует паниковать при таких сообщениях. Однако это повод для обращения за консультацией к специалисту.

Проверка ссылочной целостности «прозванивает» связи между объектами. Иногда в таблице используется ссылка на отсутствующий объект, например на удаленный документ. Ссылочную целостность принято восстанавливать вручную, по списку, полученному в результате проверки. Иногда ссылочная целостность нарушена на «заброшенных участках» — в старых неактуальных документах. Тогда на них просто не обращают внимания.

Пересчет итогов – длительная и рискованная процедура. В 1с производится пересчет результатов в штатном режиме, но он ведется не «от начала времен», а с начала месяца. Итоговые значения отслеживаются в регистрах, это ускоряет работу. Если включить пересчет итогов в режиме тестирования и исправления, то пересчет совершится от момента создания базы, причем правильные текущие значения регистров могут «поплыть» из-за давно удаленных или исправленных «задним числом» документов. В результате длительная работа по пересчету не принесет пользы.

Если нет необходимости, то от пересчета итогов лучше воздержаться.

Сжатие таблиц – это процедура физического удаления записей, которые были помечены на удаление и перестали выводиться на экран. Таких записей может быть очень много, они без пользы раздувают объем базы данных.

Сжатие таблиц – полезная функция, хотя ее выполнять не обязательно.

Реструктуризация таблиц – операция, актуальная при переходе на новую версию программы. При реструктуризации создаются пустые таблицы с форматом, заданным в конфигурации, и в них переносится, запись за записью, информация из старых таблиц. В новых таблицах могут быть расширены поля, добавлены новые поля. Реструктуризация – это операция, которая должна подготовить информационную базу для работы по-новому, и она абсолютно необходима при обновлениях.

Если никакие версии не менялись, то реструктуризация не нужна, эта длительная процедура ничего не добавит и не изменит.

Итак, при исправлении «упавшей» программы необходимы и полезны опции:

  • Реиндексация таблиц информационной базы
  • Проверка логической целостности
  • Проверка ссылочной целостности

Что делать, если не удается запустить Тестирование и исправление?

Если база сильно повреждена и даже в Конфигуратор не удается войти, остается еще одна возможность восстановления: воспользуйтесь утилитой chdbfl.exe. Файл можно найти в папке Bin каталога установки (рис.3).

Рис. 3. Выбор утилиты chdbfl.exe

По записи в командной строке, показанной на рис.3, видно, что путь к файлу лежит через каталог 1сv8.2, или 1сv8.3, короче говоря, через каталог программы. Он может быть расположен в папке Program Files или в другой папке. Нужно найти место расположения каталога и открыть его. Внутри каталога открыть папку Bin,

Запустив исполняемый файл, выбирайте базу, подлежащую исправлению, и разрешите исправлять обнаруженные ошибки (рис.4)

Рис.4. Окно программы chdbfl.exe

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

  • Сделать резервную копию;
  • Попытаться войти через Конфигуратор и воспользоваться опцией Тестирование и исправление;
  • Если в Конфигуратор не удается войти, найти программу exe и попытаться спасти данные при помощи этой программы;
  • Если все попытки не дают результата, нужно обратиться за помощью к специалистам;
  • В случае невосстановимой потери данных установить последнюю работоспособную резервную копию;
  • Если резервное копирование не выполнялось – восстанавливать данные по первичным документам и бумажным распечаткам.

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

Как остаточные, так и оборотные регистры накопления физически состоят из двух таблиц: таблицы движений и таблицы итогов. Таблица итогов содержит агрегированные по измерениям данные из таблицы движений, для более быстрого доступа к этим данным. Итоги по умолчанию существуют по месяцам, на первое число каждого месяца; для регистров остаточных отдельно хранятся еще и актуальные итоги, то есть итоги текущего месяца. Для каждого отдельно взятого регистра текущие итоги могут быть отключены.
В момент проведения документа-регистратора, формируется как запись в таблице движений, так и запись в таблице итогов, причем, если документ проводится прошедшим месяцем - то записей будет сделано по числу прошедших месяцев. То есть все прошлые итоги обновляются.
Для измерений регистра можно отключать использование итогов, это положительно сказывается на быстродействии базы:

Также, заметим, что есть две альтернативы - использование итогов либо использование агрегатов ; второй вариант более гибкий.

Вопрос 12.30 экзамена 1С:Профессионал по Платформе. Итоги для регистров накопления остатков:

  1. Не хранятся
  2. Хранятся. Они не ограничены периодом рассчитанных итогов, так как рассчитываются системой автоматически при открытии следующего периода
  3. Могут храниться, но ограничены периодом рассчитанных итогов. Если их не рассчитывали, то и не хранятся. Управлять рассчитанными итогами можно в режиме 1С:Предприятие
  4. Верны ответы 2 и 3, так как автоматический расчет промежуточных итогов может быть задан в режиме конфигуратора

Правильный ответ третий.

Вопрос 12.32 экзамена 1С:Профессионал по Платформе. При работе с регистром накопления с видом "Остатки" выключение итогов приводит к тому, что:

  1. можно получить только оперативные остатки
  2. можно получить остатки на любой момент времени, но скорость их получения увеличиться

Правильный ответ второй. В случае включенных итогов, остатки доступны с периодичностью Месяц.

Вопрос 12.33 экзамена 1С:Профессионал по Платформе. При пересчете текущих итогов пользователем:

  1. будут пересчитаны текущие итоги только для текущего сеанса
  2. будут пересчитаны все текущие итоги
  3. будут пересчитаны текущие итоги для текущего или для всех сеансов в зависимости от настроек регистра

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

Вопрос 12.34 экзамена 1С:Профессионал по Платформе. При пересчете итогов пользователем:

  1. будут пересчитаны итоги только для текущего сеанса
  2. будут пересчитаны итоги для текущего или для всех сеансов в зависимости от настроек регистра
  3. будут пересчитаны все итоги
  4. можно выбрать, для каких сеансов будут пересчитаны итоги

Правильный ответ третий, см. предыдущий вопрос.

Вопрос 12.35 экзамена 1С:Профессионал по Платформе. При записи данных в регистр накопления существует возможность:

  1. отказаться от использования итогов (повышается параллельность записи наборов записей)
  2. отказаться от использования текущих итогов (повышается параллельность записи наборов записей)
  3. верны ответы 1,2

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


РегистрХозрасчетный = РегистрыБухгалтерии.Хозрасчетный; РегистрХозрасчетный.УстановитьИспользованиеИтогов(Ложь);

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

  1. уменьшится скорость получения любых остатков
  2. можно получить остатки на любой момент времени, но скорость получения оперативных остатков увеличиться
  3. не влияет на скорость получения остатков, а влияет на скорость получения оборотов

См. вопрос 12.32.

Вопрос 12.37 экзамена 1С:Профессионал по Платформе. В режиме конфигуратора может быть выбрана следующая периодичность таблицы итогов регистра накопления:

  1. В пределах дня
  2. В пределах месяца
  3. В пределах квартала
  4. Непериодический
  5. Любой из вышеуказанных вариантов
  6. Не может быть выбрана

Правильный ответ шестой - итоги всегда рассчитываются помесячно, на первой число следующего месяца.


Вопрос 12.39 экзамена 1С:Профессионал по Платформе. Как система 1С:Предприятие 8 может хранить итоги для оборотного регистра накопления?

  1. Только с помощью таблицы итого
  2. Только с помощью таблицы агрегатов
  3. Одновременно в таблицах итогов и агрегатов
  4. Либо в таблице итогов, либо в агрегатах

Правильный ответ четвертый, итоги и агрегаты это альтернативные режимы работы.


Вопрос 12.40 экзамена 1С:Профессионал по Платформе. Выберите верное утверждение по отношению к регистрам накопления

  1. Для одного регистра накопления может использоваться несколько таблиц итогов
  2. Для одного регистра накопления может использоваться только одна таблица агрегатов
  3. Для одного регистра накопления может использоваться несколько таблиц агрегатов
  4. Верны варианты 1 и 2
  5. Верны все варианты

Правильный ответ третий - таблица итогов строго одна для регистра. Таблиц агрегатов может быть создано множество.


Вопрос 12.44 экзамена 1С:Профессионал по Платформе. Что может отображаться в таблицах итогов регистров накопления?

  1. Данные измерений
  2. Данные ресурсов
  3. Данные реквизитов
  4. Верны все варианты
  5. Верны варианты 1 и 2

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


Вопрос 12.45 экзамена 1С:Профессионал по Платформе. Какая часть активных записей может не отображаться в таблицах итогов регистров накопления?

  1. Данные измерений
  2. Данные реквизитов
  3. Данные ресурсов
  4. Верны все варианты
  5. Верны варианты 1 и 2

Правильный ответ пятый. Реквизиты в итогах не отображаются. Измерений у регистра может и не быть, а вот ресурс обязателен.


Вопрос 12.46 экзамена 1С:Профессионал по Платформе. Какая часть не активных записей может не отображаться в таблицах итогов регистров накопления?

  1. Данные измерений
  2. Данные реквизитов
  3. Данные ресурсов
  4. Верны все варианты
  5. Верны варианты 1 и 2

Правильный ответ четвертый, неактивные записи не отображаются вообще.


Вопрос 12.47 экзамена 1С:Профессионал по Платформе. Какая часть активных записей никогда не отображается в таблицах итогов регистров накопления?

  1. Данные измерений
  2. Данные реквизитов
  3. Данные ресурсов
  4. Верны все варианты
  5. Верны варианты 1 и 2