1С не может прочитать картинку: разбор сбоя Bad Adaptive Filter Value
Содержание
Ошибка Bad Adaptive Filter Value в 1С означает, что платформа пыталась показать картинку формата PNG и наткнулась на испорченные данные внутри файла. Исправляется она заменой повреждённого изображения: логотипа организации, фото товара, картинки в макете или в самой конфигурации. Если битых картинок много или сбой сопровождается другими ошибками чтения, проверяют файл базы утилитой chdbfl.exe и диск, на котором он лежит.
Сам текст сообщения приходит не от 1С, а от библиотеки распаковки PNG, которую использует платформа. Поэтому в нём нет ни имени объекта, ни ссылки на документ. Задача сводится к тому, чтобы по месту и моменту появления ошибки вычислить, какая именно картинка сломана.
Откуда берётся Bad Adaptive Filter Value: природа сбоя
PNG хранит изображение построчно. Перед каждой строкой стоит один байт — тип фильтра, по которому строку нужно восстановить. Допустимых значений пять: от 0 до 4. Если в этом байте оказалось другое число, библиотека прекращает чтение и выдаёт bad adaptive filter value.
Такой байт портится не сам по себе. Типичные причины:
- 💾 сбой записи на диск или в сети в момент сохранения картинки в базу;
- 🔌 аварийное отключение питания или зависание компьютера при работе с файловой базой;
- 📁 изображение было испорчено ещё до загрузки: недокачанный файл, «битая» флешка, обрезанное вложение из почты;
- 🧩 картинку сгенерировала сторонняя программа или обработка с ошибкой в формате;
- 🗂️ повреждённый локальный кэш конфигурации на компьютере пользователя;
- 🧠 неисправная оперативная память или диск — тогда страдают не только картинки.
Первые четыре причины дают одну-две битые картинки, базу целиком они не затрагивают. Последние две проявляются шире: ошибка выскакивает у одного пользователя, но не у другого, или вместе с ней появляются сообщения о нарушении целостности.
Где именно всплывает ошибка: быстрая диагностика
Прежде чем что-то чинить, запишите три вещи: какое действие вызвало сообщение, у кого из пользователей и на каком компьютере. От ответа зависит, куда смотреть дальше.
| Когда появляется | Вероятный источник | Куда смотреть |
|---|---|---|
| При печати счёта, акта, накладной | логотип, печать или подпись организации | карточка организации |
| При открытии карточки товара | основное изображение номенклатуры | присоединённые файлы товара |
| При открытии любой формы или при запуске | картинка в конфигурации или локальный кэш | кэш, затем конфигуратор |
| Только у одного пользователя | локальный кэш, диск или память его ПК | очистка кэша на этом ПК |
| При открытии внешнего отчёта или обработки | картинка в макете внешнего файла | сам файл .erf или .epf |
| Вместе с ошибками чтения базы | повреждение файла 1Cv8.1CD | chdbfl, тестирование и исправление |
Как найти повреждённый объект по журналам 1С
Если источник не очевиден, его подскажут журналы. Начинают с журнала регистрации, он включён по умолчанию.
Журнал регистрации
- Откройте
Администрирование → Обслуживание → Журнал регистрации(в типовых конфигурациях на БСП). - Установите отбор по уровню «Ошибка» и по времени, когда пользователь увидел сообщение.
- Найдите событие с текстом
Bad Adaptive Filter Valueили с общим текстом ошибки формирования формы. - Посмотрите поля «Данные» и «Метаданные»: там часто указан документ, справочник или форма, с которыми работал пользователь.
В конфигураторе тот же журнал открывается через Администрирование → Журнал регистрации.
Технологический журнал
Если в журнале регистрации пусто, включите технологический журнал. Он фиксирует исключения платформы с контекстом. Создайте файл 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С не получится: платформа её не прочитает.
Логотип, печать и подпись организации
- Откройте
Справочники → Предприятие → Организации(путь для БП 3.0) и карточку нужной организации. - Перейдите к разделу с логотипом и факсимиле — в БП 3.0 он называется «Логотип и печать».
- Очистите поля с изображениями и загрузите их заново из исходных файлов PNG или JPG.
- Запишите карточку и повторите печать документа.
Если исходников нет, отсканируйте печать и подпись заново. Распространённый случай: картинку когда-то вырезали из PDF сторонней программой, и та сохранила PNG с ошибкой.
Фото номенклатуры и присоединённые файлы
Откройте карточку товара, перейдите к присоединённым файлам и удалите изображение, которое не открывается. Загрузите исходный файл и назначьте его основным изображением. Если битых фото много, проще поручить разработчику обработку, которая переберёт изображения и отметит те, что не читаются.
Картинка в конфигурации
Если ошибка появляется у всех и сразу при запуске или при открытии типовой формы, картинка может быть повреждена в самой конфигурации.
- Откройте конфигуратор и раздел
Общие → Общие картинки. - Пролистайте список: битая картинка не отображается в предпросмотре или вызывает ту же ошибку при открытии.
- Замените её копией из конфигурации поставщика: используйте сравнение с конфигурацией поставщика и перенесите только этот объект.
- Для доработанных форм и макетов проверьте картинки в элементах формы и в табличных макетах печати.
После правки выполните Конфигурация → Обновить конфигурацию базы данных.
Обновление конфигурации базы данных при изменении структуры требует монопольного доступа. Пользователей нужно заранее предупредить и завершить их сеансы, иначе обновление не пройдёт.
Внешние отчёты и обработки
Внешний файл .erf или .epf открывают в конфигураторе через Файл → Открыть, находят макет или форму с картинкой, заменяют изображение и сохраняют файл. Затем обновляют файл в справочнике дополнительных отчётов и обработок.
Локальный кэш: когда ошибка только на одном компьютере
Клиент 1С хранит копию конфигурации в локальном кэше. Если кэш повредился, картинки из конфигурации могут не читаться только на этом рабочем месте.
- Закройте все окна 1С на компьютере пользователя.
- Запустите программу с ключом
/ClearCache, например в свойствах ярлыка:"C:\Program Files\1cv8\common\1cestart.exe" /ClearCache. - Или удалите вручную папки с длинными именами-идентификаторами в
%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
- Попросите всех пользователей выйти из базы. Убедитесь, что в каталоге нет файла
1Cv8tmp.1CDи не висят процессы1cv8.exeс этой базой. - Скопируйте каталог базы целиком.
- Запустите
chdbfl.exe, укажите путь к файлу1Cv8.1CD. - Сначала запустите проверку без флажка «Исправлять обнаруженные ошибки». Посмотрите отчёт.
- Если ошибки есть, поставьте флажок и запустите повторно.
- Откройте базу и повторите действие, которое вызывало ошибку.
chdbfl проверяет физическую структуру файла: страницы, таблицы, индексы. Он не разбирает содержимое картинок. Если PNG сломан внутри целого поля, утилита ничего не найдёт, и это нормальный результат: значит, файл базы в порядке, а лечить нужно саму картинку.
Тестирование и исправление в конфигураторе
Следующий уровень — Администрирование → Тестирование и исправление в конфигураторе. Режим работает и для файловых, и для клиент-серверных баз, требует монопольного доступа.
| Опция | Когда включать | Риск |
|---|---|---|
| Реиндексация таблиц | всегда при подозрении на сбой | низкий |
| Проверка логической целостности | всегда | низкий |
| Проверка ссылочной целостности | если есть «Объект не найден» | средний: битые ссылки придётся решать |
| Пересчёт итогов | после исправления данных | низкий, но долго |
| Сжатие таблиц | при росте файла базы | низкий |
| Реструктуризация таблиц | только после неудачных попыток выше | высокий, долго |
Для битых ссылок выберите «Создавать объекты» — так проще потом найти и поправить пострадавшие данные, чем восстанавливать удалённые.
Тестирование и исправление завершает работу пользователей на всё время проверки. Большую базу запускайте вечером или в выходной, когда никто не работает.
Для базы на SQL Server или PostgreSQL физическую целостность проверяет СУБД своими средствами, chdbfl к ним не применяется.
Если база не лечится: восстановление из копий и перенос
Когда проверки не помогли или после исправления пропали важные данные, выбирают один из путей ниже.
| Способ | Когда подходит | Что потеряете |
|---|---|---|
| Восстановление из резервной копии | есть свежая копия до сбоя | изменения после даты копии |
Выгрузка в .dt и загрузка в новую базу | база открывается, но сбоит | ничего, если выгрузка прошла |
| Перенос битых объектов из копии | нужна только одна картинка или справочник | ничего |
| Восстановление файла силами специалиста | копий нет, база не открывается | зависит от степени повреждения |
Выгрузка и загрузка информационной базы
Выгрузка в .dt пересобирает данные: платформа читает каждую запись и записывает в новый файл. Это заодно выявляет записи, которые не читаются.
- В конфигураторе выполните
Администрирование → Выгрузить информационную базу. - Создайте новую пустую базу в другом каталоге.
- В ней выполните
Администрирование → Загрузить информационную базуи выберите полученный файл. - Проверьте печать и формы, где была ошибка, в новой базе. Только потом переключайте пользователей.
Загрузка .dt полностью заменяет данные базы, в которую идёт загрузка. Поэтому её делают в новую базу, а не поверх рабочей.
Если выгрузка обрывается на ошибке, это и есть указатель на повреждённую таблицу. Дальше — тестирование с исправлением или помощь специалиста.
Перенос одной картинки из старой копии
Иногда проще достать исправную картинку из прошлой резервной копии. Разверните копию отдельной базой, откройте в ней нужную карточку, сохраните изображение в файл и загрузите в рабочую базу.
Профилактика: аппаратная часть и порядок работы
Чтобы ошибка не повторилась, закройте причины, из-за которых данные портятся при записи.
- 🖴 Диск. Проверьте состояние накопителя по SMART и запустите
chkdskс проверкой на ошибки. Диск с растущим числом переназначенных секторов меняйте, не дожидаясь отказа. - 🧠 Память. Если сбои плавают и затрагивают разные программы, прогоните тест памяти. Ошибки ОЗУ портят данные при записи незаметно.
- 🔋 Питание. Файловую базу держите на компьютере или сервере с ИБП. Обрыв питания во время записи — частая причина битых страниц.
- 🌐 Сеть. Файловую базу в сетевой папке открывают по локальной сети, не через VPN с потерями пакетов и не через Wi-Fi. Для 5–10 и больше одновременных пользователей стоит подумать о клиент-серверном варианте.
- 🛡️ Антивирус. Добавьте каталог базы в исключения проверки в реальном времени: сканер, перехватывающий файл во время записи, тоже бывает причиной сбоев.
- 💽 Резервные копии. Ежедневная копия каталога или
.dtи хотя бы одна проверка восстановления в месяц. Без неё любая порча превращается в потерю данных.
И по самим картинкам: загружайте в 1С только исходные файлы. Перед загрузкой откройте изображение любой программой просмотра. Если оно открывается не до конца или с полосами внизу, файл уже испорчен.
Когда без специалиста по 1С не обойтись
Своими силами решается большинство случаев: одна-две битые картинки меняются за 10 минут. Специалист нужен, если:
- ❌ база не открывается, а
chdbflсообщает о неисправимых ошибках; - ❌ выгрузка в
.dtобрывается, а свежей резервной копии нет; - ❌ после тестирования с исправлением пропали документы или остатки;
- ❌ картинка сломана в доработанной конфигурации и нет исходной версии;
- ❌ ошибки повторяются после замены картинок, диска и очистки кэша.
Обратитесь к обслуживающей вас фирме-партнёру или к администратору сервера. Передайте им копию каталога базы, отчёт chdbfl, записи журнала регистрации и технологического журнала. Сами повреждённый файл больше не трогайте: каждая неудачная попытка исправления снижает шанс восстановить данные.