1с ошибка пересчет служебных данных

Обновлено: 30.06.2024

.. как-то так сложилось исторически, что вообщем никогда не задавался таким вопросом в ТИИ есть . - пересчет служебных данных - пересчет итогов . что делает каждый из пунктов?

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

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

если конкретики не выдало, то либо озвученное, либо ванговать

Можно мне тоже стыдно? Ребя. Напомните, плз. Реквизиты неограниченные строки должны быть последними в шапке или наоборот - не должны быть последними?

имхо, последние и смысл был вроде только для общих реквизитов

не в шапке, а в общих реквизитах документов, последними, только для sql версии

будет пересоздана табличка _1crdoc + пересчитаются все шапки документов, у которых в тч дока есть итог по колонке

Небольшая базёнка (5 Гб) скульная. ТИИ зависает напрочь

это вам так кажется - в журнале написано ровно то же ;-)

Временами спорадически жуткие тормоза. Подозреваю тщательно спрятавшуюся бяку. Ссыль мона?

Ошибки в: 5. Проверка таблицы _1suidctl 7.2 _1sjourn.actcnt > 0 и MAX(Actno,Iddoc) <> _1sjourn.actcnt 7.3 ( MAX(Actno,Iddoc) - MIN(Actno,Iddoc) + 1 ) <> колво всех движений документа 7.4 сумма ариф прогрессии от MIN(Actno) до MAC(Actno) c шагом1 <> сумме всех Actno 8.3 Документ проведен, признак движения есть, движения нет

на 7.2-7.3 можно и "забить" а вот 8.3 и дает эти ошибки, что выше.

нужно найти все проведенные доки без движений и перепровести их.

ну, табличку _1suidctl можно и прибить, она при тии сама создастся, или перезаполнить её максимальными id

Кажись нашёл причину. В одном доке снята галка "Автоматическое удаление движений". В ОбработкаПроведения есть УдалитьДвижения в ОбработкаУдаленияПроведения нет. Т.е. при удалении проведенного дока остаются движения-сироты.

Это вообще никак не влияет. При любом удалении документа (пометки на удаления) - движений не будет, никогда. Максимом - был сбой базы, незавершенная транзакция или откат транзакции в момент записи.

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

Это уже легче. А при СделатьНеПроведенным движения останутся?

Есть там ё б..нь с движениями, когда массово проводят доки, где есть открытие и проведение из формы дока в обработке проведения. Там может на скуле наблюдаться сей "эффект"

Информационные базы программы 1С – это ваши данные, нажитые тяжким кропотливым трудом. Нарушение целостности ИБ может парализовать работу крупного предприятия, нанести мыслимые и немыслимые убытки.

Причины нарушения целостности ИБ

1. Аварийное завершение работы программы 1С.

2. Аварийное завершение работы операционной системы, когда запущена программа 1С.

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

4. Деструктивное действие вирусов.

5. Прерывание процесса восстановления данных из архивной копии ИБ.

Признаки нарушения целостности ИБ

1. Появление документов без номеров и/или дат создания.

2. Появление операций без номеров и/или дат создания.

3. Исчезновение документов.

4. Исчезновение операций.

5. Исчезновение ссылок на объекты.

Если нарушения носят фатальный характер, то ИБ не загружается.

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

Сразу после аварийного завершения работы программы 1С необходимо протестировать и переиндексировать ИБ.

1. Сделайте копию ИБ.

2. Запустите программу 1С. В диалоговом окне Запуск 1С в раскрывающемся списке В режиме выберите Конфигуратор. В текстовом поле Информационные базы выберите нужную базу – OK. Запустится Конфигуратор.

3. Выберите меню Администрирование – Тестирование и исправление ИБ… В открывшемся диалоговом окне Тестирование и исправление информационной базы проверьте, чтобы были отмечены галочками следующие пункты:

* Проверка физической целостности;

* Проверка логической целостности;

* Пересчет служебных данных;

* Пересчет итогов (по умолчанию должны быть установлены все этапы тестирования, кроме упаковки таблиц ИБ).

4. Установите переключатель Тестирование и исправление (если вы хотите провести тестирование, установите Только тестирование).

5. Щелкните по кнопке Настройка. В открывшемся диалоговом окне Настройка исправления информационной базы установите два переключателя Создавать объекты – OK – Выполнить.

Внимание:

1. Если вы не чувствуете себя достаточно подготовленным пользователем программы, – доверьте работу с ИБ специалистам!

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

Данная методика проверена на тестовой базе, размер которой за месячный период составил 67 Мб. Эта часть той базы, о которой ведется речь в статье. Остатки переносились на середину месяца. К сожалению проверить на большой базе пока не удалось поскольку ранее переданная статья содержала ошибки, и поэтому первая попытка оказалась неудачной. Будем пробовать еще раз. Теперь осталось выяснить только то сколько времени займет данный процесс.

З.Ы. При проверке не пользовался обработкой clear.ert - все делал ручками. Так что смотрите внимательно!

Сворачивание периода известно в 1С:Кругах под разными названиями какой из них вам ближе решайте сами. Мне известны следующие:

1. Перенос остатков
2. "Урезание" базы
3. Закрытие периода

И так далее. Смысл термина в следующем. В течение длительного периода работы информационная база (любая, будь-то бухгалтерия, торговля или смешанная - з/п и компоненту расчет не рассматриваем) имеет тенденцию увеличиваться в размере по вполне понятным причинам. Думаю их вам обЪяснять не надо. Заметим только, что скорость роста для разных баз различается и зависит от обЪема документов вносимых в базу в единицу времени (например, за день), а также от количества и размера аналитических таблиц (так назовем регистры, бухгалтерские итоги вместе с планом счетов). Чем меньше единица учета (в количественном выражении) и чем больше обороты фирмы, тем больше количество вносимых документов, чем сложнее отчеты получаемые в системе, чем больше их количество, тем больше размер аналитических таблиц.

При проектировании информационной системы ее подразделяют на две составляющие: транзакционную и аналитическую. Первый тип систем предназначен для ввода большого обЪема информации в реальном режиме времени, второй тип предназначен для проведения анализа данных полученных в транзакционных системах. Какая же связь такого разделения с темой статьи? Самая непосредственная - процедура свертки периода, является частью процесса по переводу данных из транзакционной системы в аналитическую. Дело в том, что обычно в транзакционных системах обЪем информации хранится за небольшой текущий период (например, месяц - все зависит от интенсивности ввода). Чем больше размер информационной базы, тем менее комфортной становится работа в такой системе - замедляется ввод документов, формирование отчетов также замедляется. В случае с 1С особенно это заметно в DBF формате, меньше в SQL, но все равно и здесь имеется некоторое замедление. Рост базы также приводит к ее более частому "падению", опять же это больше характерно для DBF формата. Поэтому периодически данные из транзакционной системы необходимо передавать в аналитическую систему, удаляя при этом лишние данные. Сегодня у всех на слуху технологии OLAP - как раз-то они и предназначены для создания таких (аналитических) систем. В том числе данные технологии активно применяются в связке с 1С. Но статья не об этом.

Итак, после того как данные будут переданы в аналитическую систему, нам необходимо удалить их из нашей транзакционной системы. Что ж, неплохо было бы если фирма 1С предоставила такой инструмент в составе своей системы. Но! Как всегда НО. Имеющиеся средства не подходят для обработки больших баз. Подчеркиваю БОЛЬШИХ. Большой я считаю базу размером не менее 500 Мб (вместе с индексами), даже ближе (и больше) к 1 Гб. Но именно для таких баз обычно необходима процедура свертки периода. Почему же не подходят стандартные средства? Уточнюсь, что под ними я понимаю обработку wrap.ert, которая позволяет произвести "свертку" бухгалтерских итогов (для оперативного учета, таковой нет). Итак:

1. Если перенос остатков осуществляется не на последнюю рабочую дату (то есть дата, после, которой нет проводок), то при переносе остатков задним числом производится пересчет остатков.

2. Отмена проведения / пометка на удаление документов также приводит к пересчету остатков.

3. Удаление документов по одному, с внесением изменений в индексы очень медленно. Даже применение транзакций спасает слабо.

Возможно это не все причины, но перечисленные выше - основные. Таким образом необходимо избавиться от недостатков, которые несет за собой применение стандартных методов. Хочу добавить, что все это не теория (то есть пп. 1-3) - у наших клиентов имеется база размер, которой уже близок к 2 Гб, попытки использования стандартных методов не увенчались успехом (не дождались завершения обработки, попытка запуска ее на домашнем компьютере привела к его зависанию). Пришлось искать обходные методы в результате чего и появилась данная методика.

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

1С:Предприятие 7.7, доработанная обработка переноса остатков 1C wrap.ert, любое приложение для выполнение SQL запросов для DBF баз (MS Query, DB Explorer из поставки Delphi). В качестве приложения для выполнения SQL запросов можно использовать ВК ToySQL (или Rainbow, ODBCSQL или технологию ADO), просто подключаясь к обрабатываемой базе из другой базы (см. ссылку на обработку в конце статьи).

0. Делаем копию базы.

1. Переносим остатки. Обычным образом создаем ручные операции, но дату операции устанавливаем не А, а Б + 1, при этом пометку на удалению документов не производим. Таким образом мы избавляемся от ненужного пересчета. На дату Б + 1 не должно быть ни документов, ни операций. Здесь в принципе можно использовать любую дату из будущего периода. Точнее чтобы не было пересчета, то дата должна находится за пределами текущего расчетного периода.

2. Удаляем все индексные файлы, а также файлы бухгалтерских итогов: 1SACCSEL.DBF, 1SBKTTL.DBF, 1SBKTTLC.DBF, 1SSBSEL.DBF. Начиная с данного этапа прекращаем пользоваться стандартными методами

3. Выполняем следующие запросы:

1) Делаем пометку на удаление документов.

Update 1sjourn set ismark='*', closed=4 where date <= А

Если можно удалить все (!) документы сразу (то есть в будущем периоде нет ссылок на документы из прошлого), что бывает очень редко, то можно удалять сразу

Delete from 1sjorun where date <= А

При этом сначала нужно удалить записи из связанных таблиц документов (dh*, dt*)

Delete from dh* d from 1sjourn j where d.iddoc = j.iddoc and j.date <= А

Так для каждой таблицы документа и его табличной части. Для SQL Server можно написать скрипт перебирающий таблицы документов и выполняющий данный запрос для каждой из них.

delete from 1sentry where date <= А
delete from 1soper where date <= А

3) Если в вашей конфигурации есть периодические реквизиты, которые изменяются документами (с помощью метода УстановитьРеквизитСправочника), то можно (точнее нужно) удалить значения этих реквизитов:
delete from 1sconst where objid <> ' 0 ' and date <= А and iddoc <> ' ' Вообще полезно удалить периодические реквизиты независимо от того записываются они из документов или нет. Это можно сделать так:

delete from 1sconst where objid <> ' 0 ' and date <= А

4) Удаляем ссылки между подчиненными и документами и значения граф отбора. Эти данные находятся в таблице 1SCRDOC. В графе CHILDID находятся ссылки на документы, который после их удаления будут недействительными. Поэтому нужно выполнить такой запрос: delete from 1scrdoc where childdate <= А

Данная операция может быть выполнена вместе с пересчетом итогов (галочка "Пересчет служебных данных"), но опять же "ручной" способ будет быстрее поскольку никаких пересчетов делать не надо

4. Пакуем таблицы, в которых удаляли записи. Здесь тоже быстрее будет воспользоваться не-1С методами. Данный метод можно использовать только для формата DBF: pack 1soper
pack 1sentry
pack 1sconst
pack 1scrdoc

Если вы удаляли записи из таблиц документов, то данный оператор нужно вызвать для всех этих таблиц и для таблицы 1SJOURN (п. 9 тогда можно пропустить).

5. Переносим проводки и операции сделанные датой Б + 1 на дату Х Update 1sentry set date = А where date = Б + 1
Update 1sentry set date = А where date = Б + 1
Update 1sjourn set date = А where date = Б + 1

Здесь важно чтобы на дату Б + 1 не было документов кроме созданных ручных операций. Иначе эти документы также перенесутся на дату Х.

6. Все. Теперь у нас практически рабочая база. Можно опять взяться за стандартные методы. Нужно восстановить индексы - просто запускаем 1С-ку монопольно.

7. Итоги можно пока не пересчитывать. Запускаем поиск удаленных обЪектов. Если вы удалили документы сразу как было описано в п. 3, то этот пункт можно пропустить.

8. Пересчитываем итоги. Хорошо бы пересчет итогов по колонкам был бы в разделе "Пересчет служебных данных", но уж что имеем :(. Все! База готова. Остается сверить получившуюся базу с ее копией (надеюсь ее-то вы не забыли сделать - мало ли что ;).

9. Упс. Забыл ради чего мы это все затевали. Если посмотреть на размер базы, то он уменьшился не на столько на сколько хотелось бы (скорее всего). Почему? Правильно! В DBF формате записи не удаляются непосредственно, а помечаются на удаление. У нас остались лишние данные в таблице 1SJOURN и в таблицах документов (файлы проводок и операций мы упаковали сами). Что же нужно сделать? Правильно запустить упаковку данных. Впрочем данный пункт не стоит делать отдельно - просто обЪедините его с п. 8, поставив галочку "Упаковка таблиц информационной базы", когда будете пересчитывать итоги в режиме конфигуратора. Вот теперь точно все! Уффф.

Даты в DBF формате записываются в виде

Используемое в статье собственное и доработанное ПО:

1. Модифицированная обработка wrap.ert, позволяющая переносить остатки на другую дату, не удаляя документы. В обработке предусмотрен вызов функции для установки дополнительных реквизитов операции как документа (УстановитьФирму).

2. Обработка по удалению документов, проводок из базы с помощью компоненты ToySQL

3. Компонента ToySQL

Как упражнения вам

1. Внести небольшие изменения для SQL версии
2. Сворачивание базы методом формирования помесячных оборотов
3. Сворачивание базы оперативного учета

Описание и исправление популярных ошибок в 1с

Из-за чего возникают ошибки в базе 1с ?

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

рассмотрены возможные ошибки в базе 1с

Виды ошибок в базе 1с

Ошибок в 1с может быть великое множество и происходить они могут по самым разным причинам. В данной статье мы не будем рассматривать все возможные ошибки 1с, мы постараемся выделить так называемые основные "виды" встречающихся ошибок. Мы условно называем их "виды" так как содержание ошибки которое показывает Вам программа как правило всегда различное, а суть часто бывает одинаковая. Итак выделим самые часто встречающиеся ошибки в базе 1с:

  1. Ошибка формата потока
  2. Поле объекта не обнаружено
  3. Индекс находится за границами массива
  4. Метод объекта не обнаружен
  5. Недостаточно памяти
  6. Ошибки связанные с таблицами SQL (актуальны для серверов 1с которые работают на реляционных базах данных, например MySQL)
  7. Ошибка доступа 1с

Ошибка формата потока в 1с

Поле объекта не обнаружено

Индекс находится за границами массива

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

Ошибка формата потока в 1с

Поле объекта не обнаружено

Индекс находится за границами массива

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

виды ошибок в 1с

Метод объекта не обнаружен

Подобная ошибка происходит тогда когда система пытается обратится к методу (функции) объекта, описание которого (которой) не существует в коде. Ошибки такого типа могут исправляются программистами.

Недостаточно памяти в 1с

Возможное исправление ошибки 1с «Недостаточно памяти»

Ошибка кроется в ограниченном выделении адресной памяти операционной системой под ПО (программное обеспечение).
Ограничения для адресной памяти по умолчанию составляют:

  • для 32 битной системы – 2гб
  • для 64 битной – 4 гб

Для того, что бы увеличить размер адресной памяти Вам необходимо сделать следующие действия:

  1. Запустите командную строку: “Пуск – Выполнить” – введите CMD и нажмите клавишу enter
  2. Теперь в командной строке введите текст без кавычек “bcdedit /set increaseuserva 3072″, где 3072 – размер желаемой адресной памяти
  3. Перезагрузите Вашу операционную систему (компьютер)
  4. Попробуйте выполнить то действие в 1С, которое не получалось ранее и приводило к ошибке.
  5. Если всё получилось и операция повторяется не так часто – рекомендуется вернуть размер адресной памяти к значению по умолчанию с помощью команды “bcdedit /deletevalue increaseuserva”

Ошибки связанные с таблицами SQL

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

Довольные клиенты которые уже исправили ошибки в 1с

Ошибка доступа в 1с

Данная ошибка происходит тогда когда пользователь пытается выполнить какое-либо действие которое запрещено правами доступа (роли). Именно поэтому система выдает ошибку доступа в 1с. Роли настраиваются в конфигураторе программистом.

Читайте также: