Ошибка "CodeBase Error #: -310" в DBFной версии 1С:Предприятие 7.7
База данных - Инструменты администратора БД
Ошибка возникает при непосредственном удалении записи (в терминах 1С) в таблице с количеством записей более 16777215 штук. Удаляемые записи могут располагаться и до этой границы. Сообщение об ошибке указывает на индекс "IDELETED" с индексным выражением "D" и выражением фильтра "DELETED()". Этот индекс используется для нахождение помеченных на удаление записей (в терминах DBF) и размещения на их месте новых добавляемых записей в таблицу.
Первые кандидаты на такой количество записей: 1SCRDOC, 1SACCSEL.
Способов устранения проблемы, пока, не найдено.
Мнение разработчиков по поводу этой ошибки:
http://www.codebase.com/support/kb/?article=C01054
Допускаю, что такое проявление ошибки было привнесено именно в 1С. Т.к. продукт "CodeBase" продаётся с исходными текстами и "встраивался" в 1С с некоторыми изменениями на уровне исходных текстов разработчиками 1С. Само ядро "CodeBase" находится в библиотеке DBEng32.dll. Эта библиотека одинаковая для версий 1С: 18, 25, 27. Другие версии не проверялись.
Временное решение проблемы в ручном режиме.
Суть способа:
Отключить индекс "IDELETED" для проблемных таблиц. Естественно, отключится механизм использования помеченных на удаление записей (в терминах DBF). А это приведет к более быстрому росту размера таблицы. Частично решает проблему установка "Kernel3x", т.е. снимается ограничение на размер DBF файла в 1 гигабайт. Но при использовании данной разработки категорически нельзя использовать прямые запросы на FoxPro. Кроме этого придется чаще (регулярно) выполнять упаковку таблиц и внимательно отслеживать рост размера таблиц, т.к. существует ограничение на размер DBF файла в 2 гигабайта.
Последовательность действий:
1) При возникновении ошибки -310, на любой рабочей станции, срочно выгнать всех пользователей из 1C. Не сохранять никаких открытых форм ввода информации. Прекратить (прервать) выполнение отчетов. И т.д. Если произошёл сбой при выполнении регламентных работ, то восстановить базу с последней копии. При этом заранее оповестить всех пользователей об возможности появления такой ошибки и довести до них информацию о действиях в таком случае.
2) Т.к. в сообщении об ошибке -310 не выдаётся имя таблицы, то необходимо найти эту таблицу силой ума или тупым открытием подряд всех DBF-ов в порядке от большего размера файла к меньшему. Ищем таблицы в которых количество записей подбирается или уже больше 16777215 штук.
3) Удалить все CDX файлы. Зайти в сессию 1С монопольно и выполнить, тем самым, реиндексацию.
4) Вызвать утилиту обслуживания DBF/CDX структур. Например, бесплатную утилиту "Advantage Data Architect" можно скачать по ссылке:
http://devzone.advantagedatabase.com/dz/content.aspx?Key=20&Release=13&Product=8&Platform=6
5) Открыть проблемную таблицу в формате "FoxPro (DBF/CDX)". Вызвать свойства таблицы. Выбрать закладку с описанием индексов. Найти индекс "IDELETED". Изменить выражение фильтра с "DELETED()" на ".F.". Сохранить изменения с реиндексацией. Закрыть таблицу.
6) Открыть таблицу "1SUSERS" (DBF файл без индексов). В поле "USRSCNT" установить значение больше нуля. Закрыть таблицу. Выйти из утилиты.
7) Запустить сессию 1С в монопольном режиме. Согласиться с реиндексацией.
Дополнительная информация:
1) Необходимо повторять действия по отключению индекса после каждого удаления файлов CDX. После реиндексации без удаления файлов повторять отключение индекса не надо.
2) Данная технология проверялась только на тестовой базе. В промышленной эксплуатации - нет возможности проверить, т.к. у нас не возникала ошибка -310 при использовании "родного движка" и мы уже давно перешли на другу СУБД.
3) Надеюсь найдутся заинтересованные люди, и напишут утилиту для автоматического анализа проблемных таблиц и не ручного отключения индекса. Я готов оказать в этом деле консультацию.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Инструменты администратора БД Системный администратор 1С:Предприятие 7.7 1C77 Абонемент ($m)
Обновлённый распаковщик дистрибутивов 1С 7.7. Утилита находит многотомные архивы InstallShield 3.x в папках DISK1…DISKn или внутри ZIP, показывает список файлов, проверяет распаковку и извлекает конфигурацию без запуска старого установщика.
1 стартмани
02.10.2026 441 0 twilight5023 0
Инструменты администратора БД Разработчик 1С:Предприятие 7.7 1C77 Россия Абонемент ($m)
Блокировка открытия формы обработки одним пользователем.
1 стартмани
24.05.2023 3507 igor7777 1
Инструменты администратора БД Системный администратор Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Простецкий скрипт переименования файлов в папке в нижний регистр, будет полезен программистам и системным администраторам имеющим навыки програмирования в 1С. Можно легко настроить под себя, спасает мне периодически час времени, может, кому еще будет полезен.
1 стартмани
18.02.2022 6004 0 igor7777 6
Инструменты администратора БД Разработчик Пользователь Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)
Боремся с бардаком. Работы в прошлых датах запрещены. Непроведенные документы (по разным причинам) - автоматом переносятся в начало текущего дня при запуске любого первого сеанса 1С в текущем дне. Задержка старта 1С - практически незначима. Не требует настройки, не требует допрограммирования (исключая один оператор вставки в процедуру старта системы). Можно обработку выполнять вручную с любой периодичностью.
2 стартмани
25.05.2020 7716 2 CheBurator 3
Журнал регистрации Инструменты администратора БД Системный администратор Разработчик 1С:Предприятие 7.7 1C77 Бесплатно (free)
Рассмотрим систему на базе Elasticsearch, Logstash и Kibana (ELK Stack) для анализа логов 1С Предприятие 7.7 с целью визуализации и анализа событий 1С.
22.01.2019 14805 phsin 20
Инструменты администратора БД Системный администратор Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Скрипт позволяет выполнить объединение конфигураций и реструктуризацию из командной строки. Объединение выполняется штатными средствами конфигуратора 1С 7.7, взаимодействие с которым происходит путем посылки нажатий клавиш. Пригодится, если есть необходимость обновить или постоянно обновлять множество ИБ.
1 стартмани
22.04.2017 17572 4 devlabnn 2
Инструменты администратора БД Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Украина Бухгалтерский учет Абонемент ($m)
Перепроведение по счету для конфигурации Бухгалтерский учет для Украины, 1С: Предприятие 7.7
1 стартмани
23.09.2016 5441 1 Genyak 1
Инструменты администратора БД Системный администратор 1С:Предприятие 7.7 1C77 Абонемент ($m)
Периодически сталкивался со следующими проблемами при печати в 1С: 7.7 работающей под терминалом: 1) После замены принтера на клиентской машине 1С пытается печатать на старый принтер. 2) Отсутствует предварительный просмотр при печати. 3) Не работает печать без предварительного просмотра (пакетная печать документов). 4) В некоторых формах печатает, в некоторых нет.
1 стартмани
09.06.2016 31061 21 tux 3
Стараться не доводить до таких размеров.
А PACK не поможет, т.к. эти шустрые таблицы мало имеют "пустот" - новые записи занимают их место. Алгоритмы работы с ними таковы. Другое дело, если делать "свертку", то тогда обязательно потом PACK делать. Достаточно родного - из конфигуратора. Я не теряю надежды исправить эту ошибку. Вопросы мне по ошибке задают уже года три. А тестовую платформу, со 100% повторяемостью ошибки, удалось получить только вчера.
(2)
Две базы лежат у меня от других людей. И именно на этих таблицах система падает. Их размер больше 16777215 штук записей.
Но это оказался призыв извращаться или самому написать утилиту!!! :(
То что я нашел на infostart - сложны, Попробовал BIN_ADS_6040, но она отказалась даже делать конвертацию базы через ConvDbf , написав какие то глупости. Я с недоверием отнесся к разработке, которая даже на простейшую конвертацию пишет ошибки.
И использование ConvDbf, меняет структуру базы на нестандартную - тоже минус!
Но сейчас, грубо говоря, получается, что если возникла ошибка -310, то можно пошаманить и ненадолго база заработает... но не факт, что через неделю-другую она не упадет окончательно, т.к. это действительно временное решение... потом на нее можно будет только смотреть, но руками не трогать...
Мы тоже не смогли побороть эту ошибку, пришлось в срочном порядке сворачивать базу, а существующую с этой хитрой ошибкой - оставлять лишь для просмотра...
Кстати, в нашем случае, такое шаманство даже предпринимать не приходилось: ошибка вываливалась только при проведении документов, а при формировании отчетов все было нормально... Поэтому помогало простое удаление cdx'ов и индексация БД (правда индексация занимала что-то в районе 40 минут).
После появления ошибки -310, база "упадёт" обязательно.
И не только по этой ошибке.
Т.к. по реальной реализации 1С-а на DBF-ах:
1) Ограничение на таблицу 1 гигабайт.
2) Ограничение на количество записей в таблице 16 миллионов.
3) Ограничение на размер ключа в индексе 117 байт, для таблиц начиная с 30000 записей.
4) ...
Но решения по снятию этих ограничений позволяет без суеты и, не прерывая промышленной эксплуатации, перейти на другую СУБД. Об этом я и написал... ;-)
P.S. Наличие ошибки -310 может не позволить сделать, даже, "свёртку" БД.
С данной промлемой сталкиваюсь с завидной регулярностью, кроме свертки базы ничего не помогает.
Может кто подскажет как выйти из этой проблемы, без свертки базы, хоть бы год закрыть? Буду благодарна, за любой совет.Индексация, упаковка, тестирование не помогает. База почти 1 гб, одна меньше 1Гб , но кол-во записей 16780000, убрала по совету индекс "IDELETED" на "F" пробуем работать, но понимаю что не надолго
"помог ли переход 1с на скул избавиться от ошибки 310"(с)
Галина (g26516).
На этот вопрос и я смогу ответить. ;-)
Естественно - помог. Т.к. используется другая СУБД.
А сравнение SQL и DBF - это отдельная большая тема.
Но, однозначно, если система уперлась в количественные ограничения - надо менять СУБД.
И заниматься нюансами-проблемами уже в этой СУБД. Они - есть...
Но, масса проблем "исчезнет" - ограничения размеров БД, низкая надежность и т.д.
Если предметная область допускает всякие "свертки" - сделать это.
Или делать это регулярно, и перейти на терминал-сервер с DBF форматом.
Галина (g26516).
1) Проблема 1GB и ошибка "-310" - это разные проблемы, причины и способы устранения.
2) Средство Kernel3x применяют, если размер ОДНОЙ таблицы приближается к 1GB. А не в случае размера ВСЕЙ базы данных.
3) Применять лучше Kernel37, если у Вас используется разработка:
"Исправление ошибки 1С:Предприятие 7.7/8.0 - 100% загрузка процессора при ожидании блокировки"(
Т.к. совместно разработка от Романа и моя работать не смогут. И Kernel37 позволяет отказаться от разработки Романа, т.к. проблема "100% загрузка" в нем решена.
Ошибка -310 вылетела именно на терминал-серверном варианте с DBF формате.
(23) Конечно помогло. + и - есть везде и всегда. При переходе советовал бы воспользоваться инструкциями 1С. Некоторые документы и часть отчетов уже переписал с использованием запросов - использование СУБД обязывает. Но часть доков стала просто летать - особенно на удаленных компах. Часть доков стала ужасно жутко тормозить при проведении. И все их переписывать даже мысли не возникало. Зато теперь спокоен за базу - скул 2008 летает, архив пишется влет. Но как ответил Владимир (hogik)
Иван (Famza).
В тексте "Или делать это регулярно, и перейти на терминал-сервер с DBF форматом" стоит запятая. И нет после запятой ИЛИ. А по Вашему ответу получается, что я предлагаю перейти на терминал-сервер для устранения проблемы "-310". ;-)
Или делать это регулярно, и перейти на терминал-сервер с DBF форматом.
...Ошибка -310 вылетела именно на терминал-серверном варианте с DBF формате.
"Казнить нельзя помиловать"... )))
То что ошибка вылетела на терминал-серверном варианте с DBF формате - уточнение в ответе на пост (23).
Но обращался к посту (24) - то, что и в данном формате ИБ ошибка вероятна. А свертками - только, имхо, продлить агонию БД. У нас DBF-база была 6,5 гиг, свыше 20 юзеров - один пересчет итогов задалбывает. Это просто статистика, а что, кому и как - решается индивидуально.
Так что, пост (30) считать как случайный набор букав...
"пост (30) считать как случайный набор букав..."(с)
Иван (Famza).
Зря Вы - так. :-( Очень содержательный текст.
Я же согласен с Вами - надо менять СУБД. Не агитирую за "жизнь" на DBF-е и временные решения. Но, есть состояние - "горит". ;-) Это и обсуждалось с Галиной (g26516) - как "тушить". А потом делать "ремонт квартиры". Согласитесь, что при пожаре мало кто задумывается, даже, о стоимости последующего ремонта... ;-)
Здравствуйте! По поводу срочного тушения пожара, это абсолютно точно и помогло, за что отдельное огромное спасибо!!!! Благополучно закрыли прошлый год. В этом ждем-с ... Повторила пройденный путь. Все дело упирается в финансы, может у кого по другому, но у на пока все не встанет мертво денег на перехо на 8-ку врядли кто , одна только лицензия под наше предприятие и кол-во пользователей около 500 т.р.???? Не говоря обо всем остальном...
Так что кому что "нравится" не совсем правильная постановка вопроса.
Просто огромная благодарность Владимиру за помощь в таких ситуациях!
С наступающим Новым годом! Удачи во всех начинаниях и огромного мешка с деньгами, который просто свалится неизвестно откуда!
Мне кажется, что обычно все проблемы сваливаются разом и перед Новым годом....
1. 310 пока не вылетает, изменила индекс.
2. Размер одной БД приближается к 0.98 ГБ, второй 0.8Гб, третья - 0.7Гб ( которая повисла на индесах)
Что делать? Помогите пожалуйста!!!
Галина (g26516).
Главное - что? Спокойствие !!!
Ошибка "-310" временно устранена.
Ставьте Kernel37, исправляя только ОДНУ библиотеку - DBEng32.dll.
Это надо сделать, т.к. проблемный по "-310" файл начнет быстро расти и наберет 1GB достаточно шустро. И за его размером надо СЛЕДИТЬ т.к. можно напороться уже на ограничение в 2GB. Надо выполнять, изредка, упаковку в "тестирование и исправление".
Дотягиваете до конца отчетного года. Далее упаковка, свертка, упаковка. И еще год живете на пороховой бочке...
P.S. Если, чего - пишите в "личку". И мой проводной телефон и Skype будет в Вашем распоряжении с 17 до 3 часов по Москве. Все эти проблемы решаются легко, даже в режиме: "я говорю - вы нажимаете на клавиши и мышку"...
Очень приятно, что кто-то пытается тебе помочь, а не просто отмахнуться. Особенно приятно: как новогодний подарок. Выходные прошли пока без проишествий . Сегодня исправлю на Kernel37.
Спасибо еще раз.
При появлении ошибки предыдущий программист напрямую в dbf резала данные, помогало только временно.
Сейчас начинаю искать таблицу "лидер" по количеству записей.
Я новичок в работе с 1с 7.7, думаю не откажете, если обращусь к вам на помощью)
В итоге выяснили, в выписке для проверки нажимается кнопка "Показать остатки", и показываются неверные данные по остаткам на начало и конец. Сегодня запускаем пересчет итогов...а дальше пока даже и не знаю что делать с этой бедой.
Ситуация была аналогичной в прошлом году, хоть караул кричи, Еще раз , спасибо Владимиру, успокоил и реально помог. "Главное - что? Спокойствие !!!" его слова.
"не смогу это сделать"(с)
Елена (Nefrit88).
Нет проблем.
Думаю, смогу Вас "провести" по "клавишам".
Пишите в личку координаты: Skype/телефон.
Если надо платить за разговор по телефону, то придется уже Вам мне перезвонить.
Учтите, разговор может быть длинным - час и более...
(39)
Галина (g26516).
Спасибо за поздравления.
И Вас поздравляю с наступающим Новым годом.
Увы. Вот и еще один год прошел. Время летит... :-(
Здравствуйте, что-то не новогоднее настроение?
Прошел еще один год, мы стали старше и мудрее( хочется так думать) Семилильными шагами приближаемся к "детскому возрасту" , скоро станем радоваться любой мелочи, как дети.... В каждом возрасте есть свои прелести!
Конец света так и не наступил, значит еще повоюем!
Елена (Nefrit88), проблему решили?
"В каждом возрасте есть свои прелести!"(с)
Так говорят (думают) люди, которые не находятся в том самом возрасте конца... :-) :-("
Ну не скажи! Просто ко всему надо относится философски!!
Явно что-то новогоднего настроения нет! С этим надо боротся! До Нового года совсем чуть-чуть осталось...
"Явно что-то новогоднего настроения нет!"(с)
Галина (g26516).
Его у меня нет с того момента, когда наступление Нового (очередного) года (или дня рождения) начало вычисляться в режиме обратного отсчета от средней продолжительности жизни человека.
Можно подумать, что Вам 100 лет, а вообще, по мнению оооочень многих, жизнь начинается только после 50. Дети подросли, жизнь каким-то образом установилась да и работа тоже, можно пожить и для себя.Может стоит об этом подумать?
Ах да, подпорки в виде доп утилит ставить не ставили. Т.к. для нас это слишком большие риски, слишком много баз крутится на этом сервере.
сделал следующее:
1) снял с документов проводки за 1-2 месяца (чтобы уменьшить кол-во записей)
2) сделал архивную копию базы,
3) сделал усечение (сжатие) базы (1-2 мес для того чтобы пользователи могли работать).
4) сделал индексацию.
Потом спокойно сделайте удаление из рабочей базы старых документов (у меня это 1-2 года).
Мне помогло! Количество записей в файле 1SACCSEL.DBF уменьшилось.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 77617
Создание 03.11.10 07:53
Обновление 04.11.10 03:36
Просмотры 71336
Загрузки 0
Рейтинг
45
Комментарии 64
Код открыт Не указано
Рубрики Инструменты администратора БД
Кому
Системный администратор
,
Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 7.7
Конфигурация 1C77
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)