Многие пользователи «1С:Бухгалтерия предприятия» сталкиваются с ситуацией, когда отлаженный процесс загрузки приходных накладных из файлов Excel (например, выгруженных из системы СБИС или Диадок) внезапно перестает работать. При попытке импорта документа система выдает критическую ошибку выполнения встроенного языка, которая блокирует дальнейшую работу. В данной статье мы подробно разберем, почему возникает эта проблема, проанализируем техническую сторону вопроса и изучим пошаговый алгоритм восстановления работоспособности механизма загрузки.
Ошибка проявляется в момент обработки табличного документа. Если заглянуть в журнал регистрации или стек вызовов, мы увидим примерно следующую картину:
{ОбщийМодуль.ЭлектронноеВзаимодействиеБПКлиент.Модуль(248)}:СтруктураЭД.Вставить("НомерСФ", ДанныеЭД.НомерСФ);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине: Не удалось сериализовать результат преобразования формата.
ИсходныйФормат=ПроизвольныйXML; ИтоговыйФормат=ПараметрыЭлектронногоДокумента;
Разберем ситуацию подробнее. Проблема заключается в том, что переменная СтруктураЭД, которая должна быть объектом типа Структура, на момент вызова метода Вставить() имеет значение Неопределено или не инициализирована должным образом. Это происходит из-за сбоя в механизме XDTO-сериализации при преобразовании данных из формата Excel во внутренний формат электронного документа 1С.
Важно понимать, что 1С не читает XLSX напрямую в документ. Процесс разбит на этапы:
ПроизвольныйXML.Именно в этих динамических правилах, которые обновились автоматически в фоновом режиме в конце июня 2024 года, содержалась ошибка. Программа скачала некорректное описание формата, которое приводило к созданию «пустой» структуры электронного документа.
Поскольку проблема вызвана «кривым» обновлением форматов, наша основная задача — заставить 1С забыть старые (ошибочные) правила и скачать новые, исправленные. Для этого нам потребуется доступ к функциям для технического специалиста.
Рассмотрим пошаговый алгоритм действий:
Дата загрузки описания форматов для преобразования. Откроем её и полностью очистим значение (установим пустую дату). Это укажет системе на необходимость повторного обращения к веб-сервису 1С за актуальными данными.Правила преобразования форматовФорматы для преобразованияxlsx или ПроизвольныйXML. Если вы не уверены, какие именно записи удалять, можно очистить регистры полностью — при первом же обращении к функционалу электронного документооборота или загрузки файлов система восстановит их автоматически.Проанализируем результат: при следующей попытке загрузки файла 1С обнаружит, что дата последней загрузки пуста, а правила отсутствуют. Программа автоматически обратится к серверу обновлений, скачает исправленный пакет правил, и метод СтруктураЭД.Вставить() отработает корректно, так как объект будет инициализирован.
Фирма «1С» оперативно выпускает исправления для массовых ошибок в виде патчей (расширений исправления). Если ваша конфигурация настроена на автоматическую загрузку патчей, проблема может решиться сама собой после выполнения регламентных заданий.
Однако, как показывает практика, патч не всегда может корректно примениться, если в регистрах уже зависли ошибочные данные. Если автоматическая установка не помогла, выполните следующие действия:
EF_00_00634289).Иногда ошибка может быть связана с тем, что файл Excel от СБИС имеет специфическую структуру, которую стандартные правила 1С не могут распознать. Рассмотрим ситуацию, когда файл «битый» или имеет неверное расширение:
Проанализируем файл: попробуйте открыть его в Excel и пересохранить в формате «Книга Excel (.xlsx)» под новым именем. Это поможет исключить ошибки формата самого контейнера файла. Также убедитесь, что в именах листов Excel отсутствуют спецсимволы и кавычки, которые могут мешать XML-сериализации.
Если вы являетесь программистом и проблема сохраняется даже после очистки регистров, рекомендуется поставить точку останова в общем модуле ЭлектронноеВзаимодействиеБП в процедуре разбора XML. Выясним причину через отладчик:
// Пример места для отладки
Результат = КонвертацияЭДО.ЗначениеИзПотокаXML(ПотокИтоговогоXML, Тип("Структура"), Параметры);
// Если Результат = Неопределено, значит правила конвертации
// всё еще не соответствуют структуре входящего XML
Посмотрите на содержимое ПотокИтоговогоXML. Если в нем отсутствуют ожидаемые узлы (например, НомерДокумента или ДатаДокумента), значит, внешняя система (СБИС) изменила формат выгрузки, и вам потребуется либо ждать официального обновления правил от 1С, либо вносить правки в расширение самостоятельно.
Подводя итог, в 99% случаев данная проблема решается именно очисткой константы даты загрузки и регистров правил. Это стандартная процедура для механизмов 1С, использующих динамически обновляемые классификаторы и форматы взаимодействия.