1с ошибка пересчет служебных данных
Информационные базы программы 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. Восстановление ИБ из архивной копии производится в каталог с текущей ИБ, и всё ее содержимое будет заменено информацией из архивной копии. Поэтому перед восстановлением проверьте, какая ИБ выбрана текущей.
.. как-то так сложилось исторически, что вообщем никогда не задавался таким вопросом в ТИИ есть . - пересчет служебных данных - пересчет итогов . что делает каждый из пунктов?
По моему, "служебные данные" это графы отборов. Возможно итоги по реквизитам табличной части с итогами. Возможно отборы счетов. "итоги" это итоги регистров и бухгалтерии.
Проверка логической целостности выдало вот такое в табло: . Проверка содержания справочников. Цены. Элемент. Изменено подчинение . я правильно понимаю, что никакого иного способа кроме как сверки справочника с резервной копией чтобы найти упомянутое - нет?
Можно мне тоже стыдно? Ребя. Напомните, плз. Реквизиты неограниченные строки должны быть последними в шапке или наоборот - не должны быть последними?
будет пересоздана табличка _1crdoc + пересчитаются все шапки документов, у которых в тч дока есть итог по колонке
Ошибки в: 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 Документ проведен, признак движения есть, движения нет
+ Такие: ОШИБКА в справочнике = Реестр код по базе = SC6481 Максимал знач по справочнику id = '' Максимал знач по таблице _1suidctl id = ' 7GR ' --- ОШИБКА Неверное число строк = 1 для справочника = СвойстваНоменклатуры Тип строки = 1 Знач в таблице справочника = '' --- ОШИБКА в справочнике = ТипыТТ код по базе = SC5429 Максимал знач по справочнику id = ' 11 ' Максимал знач по таблице _1suidctl id = ' 12 '
ну, табличку _1suidctl можно и прибить, она при тии сама создастся, или перезаполнить её максимальными id
Кажись нашёл причину. В одном доке снята галка "Автоматическое удаление движений". В ОбработкаПроведения есть УдалитьДвижения в ОбработкаУдаленияПроведения нет. Т.е. при удалении проведенного дока остаются движения-сироты.
Это вообще никак не влияет. При любом удалении документа (пометки на удаления) - движений не будет, никогда. Максимом - был сбой базы, незавершенная транзакция или откат транзакции в момент записи.
ВО! У меня уже второй день с базой чудеса творятся. Документ Приходная накладная проведен, движения есть, вот только перемещение этих остатков не видит. При чем документ создается программно и соответственно проводиться. В пакете идут несколько документов и каким-то бесом некоторые выпадают в осадок. При интерактивном перепроведении все встает на место. Т.е. остатки становятся видными. В чем проблема так и не разобрался пока.
Есть там ё б..нь с движениями, когда массово проводят доки, где есть открытие и проведение из формы дока в обработке проведения. Там может на скуле наблюдаться сей "эффект"
Иногда во время перевода DBF базы на SQL возникает ошибка связанная с наличием в таблицах нескольких записей с одинаковым идентификатором DOCID или ID. Загрузка вылетает с ошибкой, так как SQL сервер не может создать уникальный индекс. Приложенный скрипт помогает бороться с этой проблемой.
Такая ситуация возникает когда по какой-то причине(сбитые индексы, например) в DBF базе создаются идентичные записи в таблицах. Пока база в DBF - этого не заметно и работать не мешает, но в SQL такая база не пролезает.
Предлагаемая методика такова:
1. Запускаем стандартно загрузку данных.
2. После вылетания загрузки с ошибкой открываем Enterprise Manager и запускаем приложенный скрипт. Скрипт удалит дубли строк в журналах, документах, справочниках, регистрах.
3. После выполнения скрипта запускаем программу монопольно - 1С закончит создание индексов и запустится. Далее следует самостоятельно перерассчитать итоги либо встроенными средствами 1С либо, обработкой "ПересчетИтоговРегистров.ert" (от: Ермоленко В.В.).
4. Радуемся что не пришлось делать всякого рода длительные тестирования и исправления в базе DBF.
Все, база готова!
Для решения проблемы можно, конечно, предварительно удалить дубли сразу в DBF базе перед выгрузкой, но как правило о наличии проблемы узнаем уже когда база выгружена и даже наполовину загружена в SQL, так что предлагаемая методика получается быстрее.
go
exec('delete from _1SJOURN where row_id < (Select max(row_id) from _1SJOURN as t1 where _1SJOURN.iddoc = t1.iddoc);')
go
SET NOCOUNT on
DECLARE @DBName char(30)
DECLARE @coun int
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE (xtype = 'u') AND (name LIKE 'dt%')
OPEN SysCur
FETCH NEXT FROM SysCur INTO @DBName
WHILE @@FETCH_STATUS=0 BEGIN
if @DBName <>'dtproperties '
begin
exec ('alter table '+@DBName+' add id int identity(1,1); ')
exec ('delete from '+@DBName+' where id < (Select max(id) from '+@DBName+' as t1 where '+@DBName+'.iddoc = t1.iddoc and '+@DBName+'.lineno_ = t1.lineno_); ')
set @coun=@@ROWCOUNT
exec ('alter table '+@DBName+' drop column id; ')
PRINT 'Base ' +@DBName+' '+CAST(@coun AS CHAR(4)) +' records deleted'
end
FETCH NEXT FROM SysCur INTO @DBName
END
CLOSE SysCur
DEALLOCATE SysCur
go
SET NOCOUNT on
DECLARE @DBName char(30)
DECLARE @coun int
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE (xtype = 'u') AND (name LIKE 'dh%')
OPEN SysCur
FETCH NEXT FROM SysCur INTO @DBName
WHILE @@FETCH_STATUS=0 BEGIN
if @DBName <>'dtproperties '
begin
exec ('alter table '+@DBName+' add id int identity(1,1); ')
exec ('delete from '+@DBName+' where id < (Select max(id) from '+@DBName+' as t1 where '+@DBName+'.iddoc = t1.iddoc); ')
set @coun=@@ROWCOUNT
exec ('alter table '+@DBName+' drop column id; ')
PRINT 'Base ' +@DBName+' '+CAST(@coun AS CHAR(4)) +' records deleted'
end
FETCH NEXT FROM SysCur INTO @DBName
END
CLOSE SysCur
DEALLOCATE SysCur
go
SET NOCOUNT on
DECLARE @DBName char(30)
DECLARE @coun int
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE (xtype = 'u') AND (name LIKE 'ra%')
OPEN SysCur
FETCH NEXT FROM SysCur INTO @DBName
WHILE @@FETCH_STATUS=0 BEGIN
exec ('alter table '+@DBName+' add id int identity(1,1); ')
exec ('delete from '+@DBName+' where id < (Select max(id) from '+@DBName+' as t1 where '+@DBName+'.iddoc = t1.iddoc and '+@DBName+'.actno = t1.actno); ')
set @coun=@@ROWCOUNT
exec ('alter table '+@DBName+' drop column id; ')
PRINT 'Base ' +@DBName+' '+CAST(@coun AS CHAR(4)) +' records deleted'
FETCH NEXT FROM SysCur INTO @DBName
END
CLOSE SysCur
DEALLOCATE SysCur
go
SET NOCOUNT on
DECLARE @DBName char(30)
DECLARE @coun int
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE (xtype = 'u') AND (name LIKE 'sc%')
OPEN SysCur
FETCH NEXT FROM SysCur INTO @DBName
WHILE @@FETCH_STATUS=0 BEGIN
exec('delete from ' +@DBName+' where row_id < (Select max(row_id) from ' +@DBName+' as t1 where ' +@DBName+'.id = t1.id);')
set @coun=@@ROWCOUNT
PRINT 'Base ' +@DBName+' '+CAST(@coun AS CHAR(4)) +' records deleted'
FETCH NEXT FROM SysCur INTO @DBName
END
CLOSE SysCur
DEALLOCATE SysCur
delete from _1Soper where row_id < (Select max(row_id) from _1Soper as t1 where _1Soper.docid = t1.docid)
PRINT 'Base _1Soper '+CAST(@@ROWCOUNT AS CHAR(4)) +' records deleted'
go
Данная методика проверена на тестовой базе, размер которой за месячный период составил 67 Мб. Эта часть той базы, о которой ведется речь в статье. Остатки переносились на середину месяца. К сожалению проверить на большой базе пока не удалось поскольку ранее переданная статья содержала ошибки, и поэтому первая попытка оказалась неудачной. Будем пробовать еще раз. Теперь осталось выяснить только то сколько времени займет данный процесс.
З.Ы. При проверке не пользовался обработкой clear.ert - все делал ручками. Так что смотрите внимательно!
Сворачивание периода известно в 1С:Кругах под разными названиями какой из них вам ближе решайте сами. Мне известны следующие:
И так далее. Смысл термина в следующем. В течение длительного периода работы информационная база (любая, будь-то бухгалтерия, торговля или смешанная - з/п и компоненту расчет не рассматриваем) имеет тенденцию увеличиваться в размере по вполне понятным причинам. Думаю их вам обЪяснять не надо. Заметим только, что скорость роста для разных баз различается и зависит от обЪема документов вносимых в базу в единицу времени (например, за день), а также от количества и размера аналитических таблиц (так назовем регистры, бухгалтерские итоги вместе с планом счетов). Чем меньше единица учета (в количественном выражении) и чем больше обороты фирмы, тем больше количество вносимых документов, чем сложнее отчеты получаемые в системе, чем больше их количество, тем больше размер аналитических таблиц.
При проектировании информационной системы ее подразделяют на две составляющие: транзакционную и аналитическую. Первый тип систем предназначен для ввода большого обЪема информации в реальном режиме времени, второй тип предназначен для проведения анализа данных полученных в транзакционных системах. Какая же связь такого разделения с темой статьи? Самая непосредственная - процедура свертки периода, является частью процесса по переводу данных из транзакционной системы в аналитическую. Дело в том, что обычно в транзакционных системах обЪем информации хранится за небольшой текущий период (например, месяц - все зависит от интенсивности ввода). Чем больше размер информационной базы, тем менее комфортной становится работа в такой системе - замедляется ввод документов, формирование отчетов также замедляется. В случае с 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 ' 0 ' and date ' ' Вообще полезно удалить периодические реквизиты независимо от того записываются они из документов или нет. Это можно сделать так:delete from 1sconst where objid <> ' 0 ' and date
Ошибка формата потока 1С 8.3 и причины ее появления
В первую очередь, причиной данной ошибки является неправильная обработка кэш программой. Это может быть следствием сбоя работы программы 1С, вызванного некорректным завершением ее работы — выключение питания, сбой работы сети, перезагрузка (выключение) главного компьютера при незавершенных сеансах других пользователей программы и т.п.
Причем данная ошибка может возникать как на одном компьютере, так и на всех компьютерах при выполнении какого то действия — формировании или выгрузке определенного отчета, запуске Конфигуратора, запуске программы. Т.е. программа 1С не может обработать какую-то часть поврежденной информации.
В случае, если ошибка возникает при запуске программы 1С, то причину нужно искать в кэше, а если уже при работе в программе, при проведении документов, формировании отчетов и т.п., то непосредственно в самой информационной базе.
Рассмотрим варианты исправления этой проблемы.
Удаление временных файлов. Что это такое и где они находятся
Если откроем папку с нашей установленной программой 1С, то увидим там множество разных файлов, помимо файла нашей конфигурации (1Cv8.1CD).
Файлы с расширением *.cfl — служебные файлы, создаваемые 1С Предприятием, используются программой для контроля совместного доступа пользователей в файловом режиме работы. Они имеют нулевой размер и не удаляются после завершения работы с программой.
Файлы с расширением *.1cl является носителем блокировок данных из хранилища конфигурации. Т.е. при работе программы 1С, файл базы 1cv8.1CD никак не блокируется, а блокировки накладываются на вспомогательный файл 1cv8.1cl. Т.е., если 1С выполняет какое-то действие: открывает или записывает объект, то она блокирует 1cv8.1cl. После выполнения действия блокировки снимаются.
В файле 1Cv8Tmp.1cd хранится служебная сеансовая информация, список активных пользователей программы.
Так, один из способов решения проблемы «Ошибка формата потока» в 1С 8.3 — это удаление из папки этих временных файлов из предыдущих сеансов работы программы. Это все служебные файлы и они будут снова созданы при запуске программы.
Удаление информационной базы из списка и добавление ее снова
Это один из способов очистки кэш — временных файлов. И зачастую помогает избавиться от такого рода ошибки.
Для этого нажимаем кнопку Удалить , выделив нашу базу и затем снова добавляем ее в список (кнопка Добавить ).
Более подробно об этом и других способах удаления временных файлов читайте в статье Очистка кэш 1С
Рассмотренные варианты в большинстве случаев должны решить возникшую проблему.
Другие способы исправления ошибки
Если ошибка все-таки появляется, то можно воспользоваться способом загрузки и выгрузки файла базы в формате *.dt.
Для этого через Конфигуратор выгружаем нашу базу в файл *.dt (пункт меню Администрирование — Выгрузить информационную базу ), создаем пустую базу 1С и загружаем в нее выгруженный файл *.dt (пункт меню Администрирование — Загрузить информационную базу ).
Подробнее об этом варианте выгрузки и создании пустой базы читайте в статьях Резервное копирование 1С 8 и Как создать новую базу в 1С.
Если эти способы не помогли избавиться от ошибки, то для файловых баз данных существует утилита проверки chdbfl.exe.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
Достаточно часто при работе с программой 1С встречается «Ошибка СУБД.При работе в 1С с сетевым принтером возможны ситуации, когда.При работе с 1С может возникнуть ошибка: Ошибка работы с..
(7 оценок, среднее: 3,29 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Читайте также: