1С не может прочитать картинку: разбор сбоя Bad Adaptive Filter Value

· 11 мин

Содержание

Ошибка Bad Adaptive Filter Value в 1С означает, что платформа пыталась показать картинку формата PNG и наткнулась на испорченные данные внутри файла. Исправляется она заменой повреждённого изображения: логотипа организации, фото товара, картинки в макете или в самой конфигурации. Если битых картинок много или сбой сопровождается другими ошибками чтения, проверяют файл базы утилитой chdbfl.exe и диск, на котором он лежит.

Сам текст сообщения приходит не от 1С, а от библиотеки распаковки PNG, которую использует платформа. Поэтому в нём нет ни имени объекта, ни ссылки на документ. Задача сводится к тому, чтобы по месту и моменту появления ошибки вычислить, какая именно картинка сломана.

Откуда берётся Bad Adaptive Filter Value: природа сбоя

PNG хранит изображение построчно. Перед каждой строкой стоит один байт — тип фильтра, по которому строку нужно восстановить. Допустимых значений пять: от 0 до 4. Если в этом байте оказалось другое число, библиотека прекращает чтение и выдаёт bad adaptive filter value.

Такой байт портится не сам по себе. Типичные причины:

  • 💾 сбой записи на диск или в сети в момент сохранения картинки в базу;
  • 🔌 аварийное отключение питания или зависание компьютера при работе с файловой базой;
  • 📁 изображение было испорчено ещё до загрузки: недокачанный файл, «битая» флешка, обрезанное вложение из почты;
  • 🧩 картинку сгенерировала сторонняя программа или обработка с ошибкой в формате;
  • 🗂️ повреждённый локальный кэш конфигурации на компьютере пользователя;
  • 🧠 неисправная оперативная память или диск — тогда страдают не только картинки.

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

Где именно всплывает ошибка: быстрая диагностика

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

Когда появляетсяВероятный источникКуда смотреть
При печати счёта, акта, накладнойлоготип, печать или подпись организациикарточка организации
При открытии карточки товараосновное изображение номенклатурыприсоединённые файлы товара
При открытии любой формы или при запускекартинка в конфигурации или локальный кэшкэш, затем конфигуратор
Только у одного пользователялокальный кэш, диск или память его ПКочистка кэша на этом ПК
При открытии внешнего отчёта или обработкикартинка в макете внешнего файласам файл .erf или .epf
Вместе с ошибками чтения базыповреждение файла 1Cv8.1CDchdbfl, тестирование и исправление
Диагностика: выберите симптом

Как найти повреждённый объект по журналам 1С

Если источник не очевиден, его подскажут журналы. Начинают с журнала регистрации, он включён по умолчанию.

Журнал регистрации

  1. Откройте Администрирование → Обслуживание → Журнал регистрации (в типовых конфигурациях на БСП).
  2. Установите отбор по уровню «Ошибка» и по времени, когда пользователь увидел сообщение.
  3. Найдите событие с текстом Bad Adaptive Filter Value или с общим текстом ошибки формирования формы.
  4. Посмотрите поля «Данные» и «Метаданные»: там часто указан документ, справочник или форма, с которыми работал пользователь.

В конфигураторе тот же журнал открывается через Администрирование → Журнал регистрации.

Технологический журнал

Если в журнале регистрации пусто, включите технологический журнал. Он фиксирует исключения платформы с контекстом. Создайте файл logcfg.xml в каталоге conf установленной платформы, например C:\Program Files\1cv8\conf\:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\1c_techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Платформа подхватит настройку без перезапуска в течение минуты. Повторите действие, которое вызывает ошибку, и откройте свежие .log в папке C:\1c_techlog. В событии EXCP будет текст исключения и контекст: модуль и строка кода, где шла работа с картинкой.

Технологический журнал быстро растёт. Получили нужную запись — удалите или переименуйте logcfg.xml, иначе логи займут диск.

Отладчик

Для разработчика самый быстрый путь — включить в отладчике остановку по ошибке и повторить действие. Стек вызовов покажет, какой реквизит или какое хранилище значения передаётся в элемент формы с картинкой.

Замена битой картинки в данных и в конфигурации

Когда объект найден, лечение простое: старое изображение удаляют, новое загружают из исходного файла. Пересохранить битую картинку внутри 1С не получится: платформа её не прочитает.

Логотип, печать и подпись организации

  1. Откройте Справочники → Предприятие → Организации (путь для БП 3.0) и карточку нужной организации.
  2. Перейдите к разделу с логотипом и факсимиле — в БП 3.0 он называется «Логотип и печать».
  3. Очистите поля с изображениями и загрузите их заново из исходных файлов PNG или JPG.
  4. Запишите карточку и повторите печать документа.

Если исходников нет, отсканируйте печать и подпись заново. Распространённый случай: картинку когда-то вырезали из PDF сторонней программой, и та сохранила PNG с ошибкой.

Фото номенклатуры и присоединённые файлы

Откройте карточку товара, перейдите к присоединённым файлам и удалите изображение, которое не открывается. Загрузите исходный файл и назначьте его основным изображением. Если битых фото много, проще поручить разработчику обработку, которая переберёт изображения и отметит те, что не читаются.

Картинка в конфигурации

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

  1. Откройте конфигуратор и раздел Общие → Общие картинки.
  2. Пролистайте список: битая картинка не отображается в предпросмотре или вызывает ту же ошибку при открытии.
  3. Замените её копией из конфигурации поставщика: используйте сравнение с конфигурацией поставщика и перенесите только этот объект.
  4. Для доработанных форм и макетов проверьте картинки в элементах формы и в табличных макетах печати.

После правки выполните Конфигурация → Обновить конфигурацию базы данных.

Обновление конфигурации базы данных при изменении структуры требует монопольного доступа. Пользователей нужно заранее предупредить и завершить их сеансы, иначе обновление не пройдёт.

Внешние отчёты и обработки

Внешний файл .erf или .epf открывают в конфигураторе через Файл → Открыть, находят макет или форму с картинкой, заменяют изображение и сохраняют файл. Затем обновляют файл в справочнике дополнительных отчётов и обработок.

Локальный кэш: когда ошибка только на одном компьютере

Клиент 1С хранит копию конфигурации в локальном кэше. Если кэш повредился, картинки из конфигурации могут не читаться только на этом рабочем месте.

  1. Закройте все окна 1С на компьютере пользователя.
  2. Запустите программу с ключом /ClearCache, например в свойствах ярлыка: "C:\Program Files\1cv8\common\1cestart.exe" /ClearCache.
  3. Или удалите вручную папки с длинными именами-идентификаторами в %LOCALAPPDATA%\1C\1cv8\ и %APPDATA%\1C\1cv8\.

Файлы ibases.v8i и настройки списка баз в %APPDATA%\1C\1CEStart\ не трогайте. Удаление папок кэша данные базы не затрагивает: при следующем входе платформа скачает конфигурацию заново, первый запуск будет дольше.

Если после очистки ошибка вернулась на этом же ПК, переходите к проверке его диска и памяти (раздел о профилактике ниже).

Проверка файловой базы утилитой chdbfl и тестирование

Когда битых картинок несколько в разных местах или есть другие ошибки чтения, подозревают повреждение файла 1Cv8.1CD. Для файловой базы есть утилита chdbfl.exe, она лежит в каталоге bin установленной платформы, например C:\Program Files\1cv8\8.3.xx.xxxx\bin\.

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

Порядок проверки chdbfl

  1. Попросите всех пользователей выйти из базы. Убедитесь, что в каталоге нет файла 1Cv8tmp.1CD и не висят процессы 1cv8.exe с этой базой.
  2. Скопируйте каталог базы целиком.
  3. Запустите chdbfl.exe, укажите путь к файлу 1Cv8.1CD.
  4. Сначала запустите проверку без флажка «Исправлять обнаруженные ошибки». Посмотрите отчёт.
  5. Если ошибки есть, поставьте флажок и запустите повторно.
  6. Откройте базу и повторите действие, которое вызывало ошибку.

chdbfl проверяет физическую структуру файла: страницы, таблицы, индексы. Он не разбирает содержимое картинок. Если PNG сломан внутри целого поля, утилита ничего не найдёт, и это нормальный результат: значит, файл базы в порядке, а лечить нужно саму картинку.

Тестирование и исправление в конфигураторе

Следующий уровень — Администрирование → Тестирование и исправление в конфигураторе. Режим работает и для файловых, и для клиент-серверных баз, требует монопольного доступа.

ОпцияКогда включатьРиск
Реиндексация таблицвсегда при подозрении на сбойнизкий
Проверка логической целостностивсегданизкий
Проверка ссылочной целостностиесли есть «Объект не найден»средний: битые ссылки придётся решать
Пересчёт итоговпосле исправления данныхнизкий, но долго
Сжатие таблицпри росте файла базынизкий
Реструктуризация таблицтолько после неудачных попыток вышевысокий, долго

Для битых ссылок выберите «Создавать объекты» — так проще потом найти и поправить пострадавшие данные, чем восстанавливать удалённые.

Тестирование и исправление завершает работу пользователей на всё время проверки. Большую базу запускайте вечером или в выходной, когда никто не работает.

Для базы на SQL Server или PostgreSQL физическую целостность проверяет СУБД своими средствами, chdbfl к ним не применяется.

Если база не лечится: восстановление из копий и перенос

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

СпособКогда подходитЧто потеряете
Восстановление из резервной копииесть свежая копия до сбояизменения после даты копии
Выгрузка в .dt и загрузка в новую базубаза открывается, но сбоитничего, если выгрузка прошла
Перенос битых объектов из копиинужна только одна картинка или справочникничего
Восстановление файла силами специалистакопий нет, база не открываетсязависит от степени повреждения

Выгрузка и загрузка информационной базы

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

  1. В конфигураторе выполните Администрирование → Выгрузить информационную базу.
  2. Создайте новую пустую базу в другом каталоге.
  3. В ней выполните Администрирование → Загрузить информационную базу и выберите полученный файл.
  4. Проверьте печать и формы, где была ошибка, в новой базе. Только потом переключайте пользователей.

Загрузка .dt полностью заменяет данные базы, в которую идёт загрузка. Поэтому её делают в новую базу, а не поверх рабочей.

Если выгрузка обрывается на ошибке, это и есть указатель на повреждённую таблицу. Дальше — тестирование с исправлением или помощь специалиста.

Перенос одной картинки из старой копии

Иногда проще достать исправную картинку из прошлой резервной копии. Разверните копию отдельной базой, откройте в ней нужную карточку, сохраните изображение в файл и загрузите в рабочую базу.

Профилактика: аппаратная часть и порядок работы

Чтобы ошибка не повторилась, закройте причины, из-за которых данные портятся при записи.

  • 🖴 Диск. Проверьте состояние накопителя по SMART и запустите chkdsk с проверкой на ошибки. Диск с растущим числом переназначенных секторов меняйте, не дожидаясь отказа.
  • 🧠 Память. Если сбои плавают и затрагивают разные программы, прогоните тест памяти. Ошибки ОЗУ портят данные при записи незаметно.
  • 🔋 Питание. Файловую базу держите на компьютере или сервере с ИБП. Обрыв питания во время записи — частая причина битых страниц.
  • 🌐 Сеть. Файловую базу в сетевой папке открывают по локальной сети, не через VPN с потерями пакетов и не через Wi-Fi. Для 5–10 и больше одновременных пользователей стоит подумать о клиент-серверном варианте.
  • 🛡️ Антивирус. Добавьте каталог базы в исключения проверки в реальном времени: сканер, перехватывающий файл во время записи, тоже бывает причиной сбоев.
  • 💽 Резервные копии. Ежедневная копия каталога или .dt и хотя бы одна проверка восстановления в месяц. Без неё любая порча превращается в потерю данных.

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

Профилактика порчи картинок и базы
Выполнено: 0 / 6

Когда без специалиста по 1С не обойтись

Своими силами решается большинство случаев: одна-две битые картинки меняются за 10 минут. Специалист нужен, если:

  • ❌ база не открывается, а chdbfl сообщает о неисправимых ошибках;
  • ❌ выгрузка в .dt обрывается, а свежей резервной копии нет;
  • ❌ после тестирования с исправлением пропали документы или остатки;
  • ❌ картинка сломана в доработанной конфигурации и нет исходной версии;
  • ❌ ошибки повторяются после замены картинок, диска и очистки кэша.

Обратитесь к обслуживающей вас фирме-партнёру или к администратору сервера. Передайте им копию каталога базы, отчёт chdbfl, записи журнала регистрации и технологического журнала. Сами повреждённый файл больше не трогайте: каждая неудачная попытка исправления снижает шанс восстановить данные.

Частые вопросы

Пропадут ли данные, если удалить битую картинку?
Нет. Удаляется только изображение. Документы, проводки и сама карточка остаются на месте.
Можно ли пересохранить испорченный PNG в графическом редакторе?
Иногда редактор открывает файл частично и сохраняет уцелевшую верхнюю часть. Для логотипа и печати такой результат не годится: лучше взять исходник.
Бывает ли такая ошибка в веб-клиенте?
В веб-клиенте картинку показывает браузер, поэтому текст ошибки будет другой или изображение просто не появится. Причина та же — повреждённый файл.
Помогает ли переход на JPG вместо PNG?
Формат не защищает от порчи при записи. Но если исходник у вас в JPG, загружайте его как есть, конвертировать в PNG не нужно.
Нужно ли обновлять платформу из-за этой ошибки?
Обычно нет: сбой в данных, а не в платформе. Обновление имеет смысл, если ошибка появилась сразу после смены версии и воспроизводится на исправных картинках.