Как исправить ошибку «Преобразование значения к типу булево» при загрузке банковской выписки в 1С:Бухгалтерия 3.0

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

В процессе работы с конфигурацией 1С:Бухгалтерия предприятия 3.0 (особенно в версиях линейки 3.0.143) пользователи могут столкнуться с внезапным прекращением работы механизма загрузки банковских выписок. Ошибка сопровождается системным сообщением: «Преобразование значения к типу булево не может быть выполнено». Это критическая ошибка, которая полностью блокирует импорт данных из банковских файлов или через системы прямого обмена.

В данной статье мы подробно разберем, почему возникает эта проблема, проанализируем программный код, вызывающий сбой, и определим шаги по ее устранению.

Анализ причин возникновения ошибки

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

Основная причина заключается в том, что переменная, которая должна содержать логическое значение (Истина или Ложь), неожиданно принимает значение Неопределено или NULL. В языке 1С попытка использовать такое значение в условии Если ... Тогда приводит к аварийному завершению процедуры.

Разберем конкретный участок кода в модуле менеджера обработки КлиентБанк, где происходит сбой:


// Фрагмент кода из Обработка.КлиентБанк.МодульМенеджера
СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(БанковскийСчет, "Валютный, Банк.Код");

ВозможнаЗагрузкаВалютнойВыписки = Ложь;
Если СвойстваСчета.Валютный Тогда
    // Здесь происходит ошибка, если СвойстваСчета.Валютный не является Булево
    ВозможнаЗагрузкаВалютнойВыписки = ОбменСБанками.ВозможенПрямойОбменСБанком(СвойстваСчета.БанкКод, "3")
        Или РаботаСБанкамиБП.ВозможнаЗагрузкаВалютнойВыписки(СвойстваСчета.БанкКод);
КонецЕсли;

Почему реквизит «Валютный» становится неопределенным?

Рассмотрим подробнее факторы, влияющие на получение этого значения. Выясним причину, по которой стандартная функция ОбщегоНазначения.ЗначенияРеквизитовОбъекта может вернуть «пустую» структуру вместо ожидаемых данных:

  1. Некорректная ссылка на счет: В процедуру фоновой загрузки передается ссылка на БанковскийСчет, которая отсутствует в базе данных или помечена на удаление. Если объект не найден, функция возвращает структуру, заполненную значениями Неопределено.
  2. Проблемы со справочником «Банки»: Реквизит Валютный у банковского счета часто вычисляется или зависит от связанных данных. Если в справочнике Банки для данного счета не заполнен БИК или само поле Банк пустое, обращение через точку Банк.Код в запросе может привести к сбою получения всей структуры свойств.
  3. Контекст фонового задания: При интерактивной загрузке (вручную через «Обмен с банком») программа работает от имени текущего пользователя с его правами доступа. Фоновая же загрузка выполняется в контексте системной учетной записи. Если в системе настроены ограничения прав доступа (RLS) или кэш фоновых заданий поврежден, доступ к реквизитам счета может быть ограничен.
  4. Сбой классификатора БИК: Если банк недавно изменил свои реквизиты или БИК, а классификатор в 1С еще не обновился, связь между расчетным счетом и записью в справочнике банков может стать невалидной.

Пошаговое решение проблемы

Для исправления ситуации выполним последовательность действий по диагностике и исправлению данных.

Шаг 1. Проверка справочника «Банковские счета»

В первую очередь проверим корректность заполнения данных в информационной базе:

Шаг 2. Использование отладчика

Если визуальная проверка не помогла, воспользуемся отладчиком. Поскольку ошибка часто возникает в фоне, необходимо включить «Отладку фоновых заданий» в параметрах конфигуратора.

Рассмотрим, где именно нужно установить точку останова:

  1. Откроем Обработка.КлиентБанк.МодульМенеджера.
  2. Найдем строку Если СвойстваСчета.Валютный Тогда (примерно строка 97 или 105 в зависимости от релиза).
  3. Установим точку останова перед этим условием.
  4. При срабатывании отладки вычислим выражение СвойстваСчета. Если мы видим Неопределено в поле Валютный, необходимо проверить значение переменной БанковскийСчет — скорее всего, она содержит битую ссылку или Объект не найден.

Шаг 3. Принудительное обновление классификаторов

Часто проблема «решается сама собой» через сутки, так как ночью отрабатывают регламентные задания по обновлению классификаторов банков и полнотекстового поиска. Чтобы не ждать, выполним это вручную:

Шаг 4. Временное решение через ручную загрузку

Если фоновая загрузка продолжает выдавать ошибку, воспользуемся методом, описанным в практическом опыте пользователей: загрузим выписку через стандартную обработку «Обмен с банком» (кнопка «Загрузить» в журнале банковских выписок, а не автоматическое получение). Ручной режим часто обходит ошибки фонового контекста, позволяя завершить работу сегодня.

Программное исправление (для разработчиков)

Для предотвращения подобных ошибок в будущем, если конфигурация находится на поддержке с возможностью изменения, рекомендуется модифицировать код, сделав его более «отказоустойчивым». Рассмотрим пример безопасного получения свойства:


СвойстваСчета = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(БанковскийСчет, "Валютный, Банк.Код");

// Проверяем, что значение действительно является булевым
ЗначениеВалютный = Ложь;
Если ТипЗнч(СвойстваСчета.Валютный) = Тип("Булево") Тогда
    ЗначениеВалютный = СвойстваСчета.Валютный;
КонецЕсли;

ВозможнаЗагрузкаВалютнойВыписки = Ложь;
Если ЗначениеВалютный Тогда
    // Дальнейшая логика
КонецЕсли;

Такой подход исключает падение системы, даже если данные в справочнике будут повреждены.

Резюме

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

← На главную