В процессе длительной эксплуатации баз данных «1С:Предприятие 7.7» пользователи нередко сталкиваются с ситуацией, когда в диалоговых окнах списков и форме подбора номенклатуры начинают плыть строки. Позиции справочника перемешиваются, между строками возникают пустые области, а выводимые цены не соответствуют выделенному товару. При этом после клика мышью или выделения блока строк таблица на время возвращается в нормальное состояние. Проанализируем причины такого поведения системы и разберем по шагам, как полностью устранить подобные искажения.
Основная причина рассинхронизации отображаемых строк и их расчетных реквизитов кроется в повреждении индексов таблиц базы данных. В файловом режиме (DBF) таблицы связаны с индексными файлами с расширением CDX. Если индекс частично поврежден, позиционирование курсора выборки сбивается. Выполним полное перестроение индексов:
*.cdx. Сами файлы таблиц *.dbf трогать нельзя.После завершения реиндексации проверим работу подбора номенклатуры. В большинстве случаев пересоздание файлов *.cdx ликвидирует сдвиги записей и нормализует выборку.
Выясним причину нестабильности системы при больших объемах базы данных. Встроенный табличный движок платформы 7.7 (CodeBase) имеет жесткое ограничение: размер одного файла DBF или CDX не может превышать 2 ГБ (2 147 483 647 байт). Если размер таблицы приближается к этому значению, чтение и модификация данных начинают давать сбои, приводя к визуальным артефактам и падению платформы.
Проанализируем размеры ключевых файлов в каталоге базы данных. Особое внимание следует обратить на таблицу бухгалтерских итогов 1SBKTTL.DBF и журнал проводок 1SENTRY.DBF. Если файл 1SBKTTL.DBF достигает размера более 1.5 ГБ, база находится в критической зоне риска. Неправильно настроенная глубина аналитики или накопление незакрытых остатков приводят к экспоненциальному росту записей итогов.
Если в комплексной конфигурации размер таблицы итогов 1SBKTTL.DBF превышает размер проводок, в системе накапливаются пустые остатки по субконто. Рассмотрим, как уменьшить объем данных:
1SACCSEL.CDX.1SBKTTL.DBF существенно уменьшится.Поскольку 1С 7.7 использует устаревший интерфейс GDI, работа через службы удаленных рабочих столов на современных серверных операционных системах может вызывать артефакты кэширования графики. Разберем настройки клиента RDP для устранения визуальных сбоев:
bcache*.bmc в каталоге %LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache.TEMP).Если информационная база продолжает расти, а регулярное перестроение индексов лишь временно маскирует проблему, рассмотрим фундаментальные варианты модернизации:
Во-первых, обновим платформу с устаревшего релиза 7.70.025 до финального 7.70.027, в котором исправлены ошибки выделения памяти и утечки дескрипторов GDI при длительных терминальных сессиях.
Во-вторых, выполним штатную свертку базы данных: зафиксируем входящие остатки на начало выбранного рабочего года, удалим документы за прошлые закрытые периоды и очистим неиспользуемые элементы справочников. Это снизит физический объем таблиц в несколько раз.
В-третьих, запланируем перевод базы на клиент-серверную архитектуру Microsoft SQL Server, что полностью снимает фатальное ограничение размера таблиц в 2 ГБ и исключает сбои индексов CDX.